diff --git a/algebricks/algebricks-common/pom.xml b/algebricks/algebricks-common/pom.xml
index 6ee5838..bb792e0 100644
--- a/algebricks/algebricks-common/pom.xml
+++ b/algebricks/algebricks-common/pom.xml
@@ -41,20 +41,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   <dependency>
   	<groupId>org.apache.hyracks</groupId>
diff --git a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksAbsolutePartitionConstraint.java b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksAbsolutePartitionConstraint.java
index 6f4cd9a..8394057 100644
--- a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksAbsolutePartitionConstraint.java
+++ b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksAbsolutePartitionConstraint.java
@@ -33,4 +33,4 @@
     public String[] getLocations() {
         return locations;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksPartitionConstraint.java b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksPartitionConstraint.java
index da1f680..ada1390 100644
--- a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksPartitionConstraint.java
+++ b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/constraints/AlgebricksPartitionConstraint.java
@@ -25,4 +25,4 @@
     }
 
     public abstract PartitionConstraintType getPartitionConstraintType();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
index 32af816..ef4d775 100644
--- a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
+++ b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/AlgebricksException.java
@@ -35,4 +35,4 @@
     public AlgebricksException(String message, Throwable cause) {
         super(message, cause);
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/NotImplementedException.java b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/NotImplementedException.java
index 799af68..16bc73e 100644
--- a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/NotImplementedException.java
+++ b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/exceptions/NotImplementedException.java
@@ -36,4 +36,4 @@
     public NotImplementedException(String message, Throwable cause) {
         super(message, cause);
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/Pair.java b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/Pair.java
index 561fd81..77e6f4c 100644
--- a/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/Pair.java
+++ b/algebricks/algebricks-common/src/main/java/org/apache/hyracks/algebricks/common/utils/Pair.java
@@ -51,4 +51,4 @@
         return first.hashCode() * 31 + second.hashCode();
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-compiler/pom.xml b/algebricks/algebricks-compiler/pom.xml
index 92bfcdc..849ae7a 100644
--- a/algebricks/algebricks-compiler/pom.xml
+++ b/algebricks/algebricks-compiler/pom.xml
@@ -41,20 +41,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   <dependency>
   	<groupId>org.apache.hyracks</groupId>
diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
index 616dfa9..d5fe6ed 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
@@ -116,7 +116,7 @@
     public IBinaryComparatorFactoryProvider getComparatorFactoryProvider() {
         return comparatorFactoryProvider;
     }
-    
+
     public void setPredicateEvaluatorFactoryProvider(IPredicateEvaluatorFactoryProvider predEvaluatorFactoryProvider) {
         this.predEvaluatorFactoryProvider = predEvaluatorFactoryProvider;
     }
diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
index 0d899b9..1d3a55c 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
@@ -18,6 +18,7 @@
  */
 package org.apache.hyracks.algebricks.compiler.api;
 
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
@@ -51,11 +52,11 @@
                 IExpressionEvalSizeComputer expressionEvalSizeComputer,
                 IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
                 IExpressionTypeComputer expressionTypeComputer, INullableTypeComputer nullableTypeComputer,
-                PhysicalOptimizationConfig physicalOptimizationConfig) {
+                PhysicalOptimizationConfig physicalOptimizationConfig, AlgebricksPartitionConstraint clusterLocations) {
             LogicalOperatorPrettyPrintVisitor prettyPrintVisitor = new LogicalOperatorPrettyPrintVisitor();
             return new AlgebricksOptimizationContext(varCounter, expressionEvalSizeComputer,
                     mergeAggregationExpressionFactory, expressionTypeComputer, nullableTypeComputer,
-                    physicalOptimizationConfig, prettyPrintVisitor);
+                    physicalOptimizationConfig, clusterLocations, prettyPrintVisitor);
         }
     }
 
@@ -77,7 +78,7 @@
                     int varCounter) {
                 final IOptimizationContext oc = optCtxFactory.createOptimizationContext(varCounter,
                         expressionEvalSizeComputer, mergeAggregationExpressionFactory, expressionTypeComputer,
-                        nullableTypeComputer, physicalOptimizationConfig);
+                        nullableTypeComputer, physicalOptimizationConfig, clusterLocations);
                 oc.setMetadataDeclarations(metadata);
                 final HeuristicOptimizer opt = new HeuristicOptimizer(plan, logicalRewrites, physicalRewrites, oc);
                 return new ICompiler() {
@@ -92,13 +93,13 @@
                             IJobletEventListenerFactory jobEventListenerFactory) throws AlgebricksException {
                         AlgebricksConfig.ALGEBRICKS_LOGGER.fine("Starting Job Generation.\n");
                         JobGenContext context = new JobGenContext(null, metadata, appContext,
-                                serializerDeserializerProvider, hashFunctionFactoryProvider,
-                                hashFunctionFamilyProvider, comparatorFactoryProvider, typeTraitProvider,
-                                binaryBooleanInspectorFactory, binaryIntegerInspectorFactory, printerProvider,
-                                nullWriterFactory, normalizedKeyComputerFactoryProvider, expressionRuntimeProvider,
-                                expressionTypeComputer, nullableTypeComputer, oc, expressionEvalSizeComputer,
-                                partialAggregationTypeComputer, predEvaluatorFactoryProvider,
-                                physicalOptimizationConfig.getFrameSize(), clusterLocations);
+                                serializerDeserializerProvider, hashFunctionFactoryProvider, hashFunctionFamilyProvider,
+                                comparatorFactoryProvider, typeTraitProvider, binaryBooleanInspectorFactory,
+                                binaryIntegerInspectorFactory, printerProvider, nullWriterFactory,
+                                normalizedKeyComputerFactoryProvider, expressionRuntimeProvider, expressionTypeComputer,
+                                nullableTypeComputer, oc, expressionEvalSizeComputer, partialAggregationTypeComputer,
+                                predEvaluatorFactoryProvider, physicalOptimizationConfig.getFrameSize(),
+                                clusterLocations);
 
                         PlanCompiler pc = new PlanCompiler(context);
                         return pc.compilePlan(plan, null, jobEventListenerFactory);
diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java
index 2f5acda..5a1b461 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java
@@ -28,13 +28,13 @@
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 /**
- * 
+ *
  * Runs each rule until it produces no changes. Then the whole collection of
  * rules is run again until no change is made.
- * 
- * 
+ *
+ *
  * @author Nicola
- * 
+ *
  */
 
 public class PrioritizedRuleController extends AbstractRuleController {
diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java
index 440af4b..61b75c9 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java
@@ -30,7 +30,7 @@
 /**
  * Runs rules sequentially (round-robin), until one iteration over all rules
  * produces no change.
- * 
+ *
  * @author Nicola
  */
 public class SequentialFixpointRuleController extends AbstractRuleController {
@@ -59,5 +59,4 @@
         } while (anyChange);
         return anyRuleFired;
     }
-
 }
diff --git a/algebricks/algebricks-core/pom.xml b/algebricks/algebricks-core/pom.xml
index ef95507..c56f6c3 100644
--- a/algebricks/algebricks-core/pom.xml
+++ b/algebricks/algebricks-core/pom.xml
@@ -41,20 +41,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   <dependency>
   	<groupId>org.apache.hyracks</groupId>
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
index 4dfc5ee..7e10203 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
@@ -73,4 +73,4 @@
     public abstract ILogicalExpression cloneExpression();
 
     public boolean isFunctional();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java
index 90c0de2..707a7db 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java
@@ -22,7 +22,6 @@
 import java.util.Map;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.ExecutionMode;
@@ -50,7 +49,7 @@
     public List<LogicalVariable> getSchema();
 
     /*
-     * 
+     *
      * support for visitors
      */
 
@@ -66,14 +65,14 @@
 
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException;
+                    throws AlgebricksException;
 
     // variables
 
     /**
      * Get the variable propogation policy from this operator's input to its
      * output.
-     * 
+     *
      * @return The VariablePropogationPolicy.
      */
     public VariablePropagationPolicy getVariablePropagationPolicy();
@@ -88,7 +87,8 @@
      * @return for each child, one vector of required physical properties
      */
 
-    public PhysicalRequirements getRequiredPhysicalPropertiesForChildren(IPhysicalPropertiesVector requiredProperties);
+    public PhysicalRequirements getRequiredPhysicalPropertiesForChildren(IPhysicalPropertiesVector requiredProperties,
+            IOptimizationContext context);
 
     /**
      * @return the physical properties that this operator delivers, based on
@@ -103,4 +103,4 @@
      * Indicates whether the expressions used by this operator must be variable reference expressions.
      */
     public boolean requiresVariableReferenceExpressions();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalPlan.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalPlan.java
index 784501c..20cb186 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalPlan.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalPlan.java
@@ -24,4 +24,4 @@
 
 public interface ILogicalPlan {
     public List<Mutable<ILogicalOperator>> getRoots();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java
index a2ed2ae..328697d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IOptimizationContext.java
@@ -21,7 +21,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionEvalSizeComputer;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IMergeAggregationExpressionFactory;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableEvalSizeEnvironment;
@@ -29,66 +28,62 @@
 import org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
 import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
 import org.apache.hyracks.algebricks.core.algebra.properties.ILogicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 import org.apache.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
 
-public interface IOptimizationContext extends ITypingContext {
+public interface IOptimizationContext extends ITypingContext, IVariableContext {
 
-    public abstract int getVarCounter();
+    @Override
+    public IMetadataProvider<?, ?> getMetadataProvider();
 
-    public abstract void setVarCounter(int varCounter);
+    public void setMetadataDeclarations(IMetadataProvider<?, ?> metadataProvider);
 
-    public abstract LogicalVariable newVar();
+    public boolean checkIfInDontApplySet(IAlgebraicRewriteRule rule, ILogicalOperator op);
 
-    public abstract IMetadataProvider<?, ?> getMetadataProvider();
-
-    public abstract void setMetadataDeclarations(IMetadataProvider<?, ?> metadataProvider);
-
-    public abstract boolean checkIfInDontApplySet(IAlgebraicRewriteRule rule, ILogicalOperator op);
-
-    public abstract void addToDontApplySet(IAlgebraicRewriteRule rule, ILogicalOperator op);
+    public void addToDontApplySet(IAlgebraicRewriteRule rule, ILogicalOperator op);
 
     /*
      * returns true if op1 and op2 have already been compared
      */
-    public abstract boolean checkAndAddToAlreadyCompared(ILogicalOperator op1, ILogicalOperator op2);
-    
-    public abstract void removeFromAlreadyCompared(ILogicalOperator op1);
+    public boolean checkAndAddToAlreadyCompared(ILogicalOperator op1, ILogicalOperator op2);
 
-    public abstract void addNotToBeInlinedVar(LogicalVariable var);
+    public void removeFromAlreadyCompared(ILogicalOperator op1);
 
-    public abstract boolean shouldNotBeInlined(LogicalVariable var);
+    public void addNotToBeInlinedVar(LogicalVariable var);
 
-    public abstract void addPrimaryKey(FunctionalDependency pk);
+    public boolean shouldNotBeInlined(LogicalVariable var);
 
-    public abstract List<LogicalVariable> findPrimaryKey(LogicalVariable recordVar);
+    public void addPrimaryKey(FunctionalDependency pk);
 
-    public abstract void putEquivalenceClassMap(ILogicalOperator op, Map<LogicalVariable, EquivalenceClass> eqClassMap);
+    public List<LogicalVariable> findPrimaryKey(LogicalVariable var);
 
-    public abstract Map<LogicalVariable, EquivalenceClass> getEquivalenceClassMap(ILogicalOperator op);
+    public void putEquivalenceClassMap(ILogicalOperator op, Map<LogicalVariable, EquivalenceClass> eqClassMap);
 
-    public abstract void putFDList(ILogicalOperator op, List<FunctionalDependency> fdList);
+    public Map<LogicalVariable, EquivalenceClass> getEquivalenceClassMap(ILogicalOperator op);
 
-    public abstract List<FunctionalDependency> getFDList(ILogicalOperator op);
+    public void putFDList(ILogicalOperator op, List<FunctionalDependency> fdList);
 
-    public abstract void putLogicalPropertiesVector(ILogicalOperator op, ILogicalPropertiesVector v);
+    public List<FunctionalDependency> getFDList(ILogicalOperator op);
 
-    public abstract ILogicalPropertiesVector getLogicalPropertiesVector(ILogicalOperator op);
+    public void clearAllFDAndEquivalenceClasses();
 
-    public abstract IExpressionEvalSizeComputer getExpressionEvalSizeComputer();
+    public void putLogicalPropertiesVector(ILogicalOperator op, ILogicalPropertiesVector v);
 
-    public abstract IVariableEvalSizeEnvironment getVariableEvalSizeEnvironment();
+    public ILogicalPropertiesVector getLogicalPropertiesVector(ILogicalOperator op);
 
-    public abstract IMergeAggregationExpressionFactory getMergeAggregationExpressionFactory();
+    public IExpressionEvalSizeComputer getExpressionEvalSizeComputer();
 
-    public abstract PhysicalOptimizationConfig getPhysicalOptimizationConfig();
+    public IVariableEvalSizeEnvironment getVariableEvalSizeEnvironment();
 
-    public abstract void invalidateTypeEnvironmentForOperator(ILogicalOperator op);
+    public IMergeAggregationExpressionFactory getMergeAggregationExpressionFactory();
 
-    public abstract void computeAndSetTypeEnvironmentForOperator(ILogicalOperator op) throws AlgebricksException;
+    public PhysicalOptimizationConfig getPhysicalOptimizationConfig();
 
-    public abstract void updatePrimaryKeys(Map<LogicalVariable, LogicalVariable> mappedVars);
-    
-    public abstract LogicalOperatorPrettyPrintVisitor getPrettyPrintVisitor();
+    public void updatePrimaryKeys(Map<LogicalVariable, LogicalVariable> mappedVars);
+
+    public LogicalOperatorPrettyPrintVisitor getPrettyPrintVisitor();
+
+    public INodeDomain getComputationNodeDomain();
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IPhysicalOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IPhysicalOperator.java
index e457b74..8c0ab2f 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IPhysicalOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IPhysicalOperator.java
@@ -35,10 +35,12 @@
      * @param reqdByParent
      *            parent's requirements, which are not enforced for now, as we
      *            only explore one plan
+     * @param context
+     *            the optimization context
      * @return for each child, one vector of required physical properties
      */
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent);
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context);
 
     /**
      * @return the physical properties that this operator delivers, based on
@@ -51,7 +53,7 @@
 
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException;
+                    throws AlgebricksException;
 
     public void disableJobGenBelowMe();
 
@@ -76,4 +78,4 @@
      */
     public boolean expensiveThanMaterialization();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java
similarity index 78%
copy from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
copy to algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java
index 3dbe0ab..e308a8d 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/IVariableContext.java
@@ -16,8 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
+package org.apache.hyracks.algebricks.core.algebra.base;
 
-public interface IFreePageManagerFactory {
-    public IFreePageManager createFreePageManager();
+public interface IVariableContext {
+
+    public int getVarCounter();
+
+    public void setVarCounter(int varCounter);
+
+    public LogicalVariable newVar();
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalExpressionTag.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalExpressionTag.java
index 043940d..58f4c60 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalExpressionTag.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalExpressionTag.java
@@ -20,4 +20,4 @@
 
 public enum LogicalExpressionTag {
     FUNCTION_CALL, VARIABLE, CONSTANT
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalOperatorTag.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalOperatorTag.java
index 66685363..cad24e1 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalOperatorTag.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalOperatorTag.java
@@ -29,10 +29,11 @@
     EXTENSION_OPERATOR,
     EXTERNAL_LOOKUP,
     GROUP,
-    INDEX_INSERT_DELETE,
+    INDEX_INSERT_DELETE_UPSERT,
     INNERJOIN,
-    INSERT_DELETE,
+    INSERT_DELETE_UPSERT,
     LEFTOUTERJOIN,
+    LEFT_OUTER_UNNEST_MAP,
     LIMIT,
     MATERIALIZE,
     NESTEDTUPLESOURCE,
@@ -48,8 +49,10 @@
     TOKENIZE,
     UNIONALL,
     UNNEST,
+    OUTER_UNNEST,
     UNNEST_MAP,
     UPDATE,
     WRITE,
     WRITE_RESULT,
-}
\ No newline at end of file
+    INTERSECT,
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
index 465d1a2..fc30ce2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
@@ -20,7 +20,7 @@
 
 /**
  * Represents a logical variable in an asterix logical plan.
- * 
+ *
  * @author Vinayak R. Borkar [vborkar@ics.uci.edu]
  */
 public final class LogicalVariable {
@@ -52,4 +52,4 @@
     public int hashCode() {
         return id;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java
index c581e82..82d0b0e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/PhysicalOperatorTag.java
@@ -73,4 +73,5 @@
     UNNEST,
     UPDATE,
     WRITE_RESULT,
+    INTERSECT,
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
index cfdd6a5..71c7ed0 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
@@ -215,22 +215,26 @@
         } else {
             AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) obj;
             boolean equal = getFunctionIdentifier().equals(fce.getFunctionIdentifier());
-            if (!equal)
+            if (!equal) {
                 return false;
+            }
             for (int i = 0; i < arguments.size(); i++) {
                 ILogicalExpression argument = arguments.get(i).getValue();
                 ILogicalExpression fceArgument = fce.getArguments().get(i).getValue();
-                if (!argument.equals(fceArgument))
+                if (!argument.equals(fceArgument)) {
                     return false;
+                }
             }
             if (opaqueParameters != null) {
-                if (opaqueParameters.length != fce.opaqueParameters.length)
+                if (opaqueParameters.length != fce.opaqueParameters.length) {
                     return false;
+                }
                 for (int i = 0; i < opaqueParameters.length; i++) {
                     Object opaqueParameter = opaqueParameters[i];
                     Object fceOpaqueParameter = fce.opaqueParameters[i];
-                    if (!opaqueParameter.equals(fceOpaqueParameter))
+                    if (!opaqueParameter.equals(fceOpaqueParameter)) {
                         return false;
+                    }
                 }
             }
             return true;
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
index 11207e0..67f285d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
@@ -28,17 +28,17 @@
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
 
 /**
- * 
+ *
  * An aggregate function may be executed in a "two step" mode. First the
  * "step-one" aggregates are run and then the results are passed to the
  * "step-two" aggregators. The convention is the following:
- * 
+ *
  * 1. The step-one aggregate must be able to accept the same arguments as the
  * original aggregate function call.
- * 
+ *
  * 2. The step-two aggregate must be a unary function that accepts as input the
  * output of the step-one aggregate.
- * 
+ *
  */
 
 public class AggregateFunctionCallExpression extends AbstractFunctionCallExpression {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/BroadcastExpressionAnnotation.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/BroadcastExpressionAnnotation.java
index 07124bf..6c47b82 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/BroadcastExpressionAnnotation.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/BroadcastExpressionAnnotation.java
@@ -46,4 +46,9 @@
         return bcast;
     }
 
+    @Override
+    public String toString() {
+        return BROADCAST_ANNOTATION_KEY;
+    }
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
index eeecfe0..449688b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
@@ -175,4 +175,4 @@
         return false;
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IExpressionRuntimeProvider.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IExpressionRuntimeProvider.java
index 3c0e1e9..acce996 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IExpressionRuntimeProvider.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IExpressionRuntimeProvider.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
 import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
@@ -36,7 +36,7 @@
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException;
 
-    public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
+    public ISerializedAggregateEvaluatorFactory createSerializableAggregateFunctionFactory(
             AggregateFunctionCallExpression expr, IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas,
             JobGenContext context) throws AlgebricksException;
 
@@ -47,4 +47,4 @@
     public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ILogicalExpressionJobGen.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ILogicalExpressionJobGen.java
index 0996b9c..7463896 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ILogicalExpressionJobGen.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ILogicalExpressionJobGen.java
@@ -22,30 +22,30 @@
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import org.apache.hyracks.algebricks.runtime.base.ICopyAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyRunningAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyUnnestingFunctionFactory;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
 
 public interface ILogicalExpressionJobGen {
 
-    public ICopyEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
+    public IScalarEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
             IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException;
 
-    public ICopyAggregateFunctionFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
+    public IAggregateEvaluatorFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException;
 
-    public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
+    public ISerializedAggregateEvaluatorFactory createSerializableAggregateFunctionFactory(
             AggregateFunctionCallExpression expr, IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas,
             JobGenContext context) throws AlgebricksException;
 
-    public ICopyRunningAggregateFunctionFactory createRunningAggregateFunctionFactory(StatefulFunctionCallExpression expr,
+    public IRunningAggregateEvaluatorFactory createRunningAggregateFunctionFactory(StatefulFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException;
 
-    public ICopyUnnestingFunctionFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
+    public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException;
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IndexedNLJoinExpressionAnnotation.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IndexedNLJoinExpressionAnnotation.java
index eaeeac7..a38a96c 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IndexedNLJoinExpressionAnnotation.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/IndexedNLJoinExpressionAnnotation.java
@@ -41,4 +41,9 @@
         clone.setObject(object);
         return clone;
     }
+
+    @Override
+    public String toString() {
+        return INDEXED_NL_JOIN_ANNOTATION_KEY;
+    }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.java
index 50e4f3d..5b07a7e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/LogicalExpressionJobGenToExpressionRuntimeProviderAdapter.java
@@ -22,27 +22,11 @@
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
-import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyAggregateFunction;
-import org.apache.hyracks.algebricks.runtime.base.ICopyAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyRunningAggregateFunction;
-import org.apache.hyracks.algebricks.runtime.base.ICopyRunningAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyUnnestingFunction;
-import org.apache.hyracks.algebricks.runtime.base.ICopyUnnestingFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
 public class LogicalExpressionJobGenToExpressionRuntimeProviderAdapter implements IExpressionRuntimeProvider {
     private final ILogicalExpressionJobGen lejg;
@@ -54,20 +38,18 @@
     @Override
     public IScalarEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
             IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
-        ICopyEvaluatorFactory cef = lejg.createEvaluatorFactory(expr, env, inputSchemas, context);
-        return new ScalarEvaluatorFactoryAdapter(cef);
+        return lejg.createEvaluatorFactory(expr, env, inputSchemas, context);
     }
 
     @Override
     public IAggregateEvaluatorFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
-            throws AlgebricksException {
-        ICopyAggregateFunctionFactory caff = lejg.createAggregateFunctionFactory(expr, env, inputSchemas, context);
-        return new AggregateFunctionFactoryAdapter(caff);
+                    throws AlgebricksException {
+        return lejg.createAggregateFunctionFactory(expr, env, inputSchemas, context);
     }
 
     @Override
-    public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
+    public ISerializedAggregateEvaluatorFactory createSerializableAggregateFunctionFactory(
             AggregateFunctionCallExpression expr, IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas,
             JobGenContext context) throws AlgebricksException {
         return lejg.createSerializableAggregateFunctionFactory(expr, env, inputSchemas, context);
@@ -76,143 +58,14 @@
     @Override
     public IRunningAggregateEvaluatorFactory createRunningAggregateFunctionFactory(StatefulFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
-            throws AlgebricksException {
-        ICopyRunningAggregateFunctionFactory craff = lejg.createRunningAggregateFunctionFactory(expr, env,
-                inputSchemas, context);
-        return new RunningAggregateFunctionFactoryAdapter(craff);
+                    throws AlgebricksException {
+        return lejg.createRunningAggregateFunctionFactory(expr, env, inputSchemas, context);
     }
 
     @Override
     public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
-            throws AlgebricksException {
-        ICopyUnnestingFunctionFactory cuff = lejg.createUnnestingFunctionFactory(expr, env, inputSchemas, context);
-        return new UnnestingFunctionFactoryAdapter(cuff);
+                    throws AlgebricksException {
+        return lejg.createUnnestingFunctionFactory(expr, env, inputSchemas, context);
     }
-
-    public static final class ScalarEvaluatorFactoryAdapter implements IScalarEvaluatorFactory {
-        private static final long serialVersionUID = 1L;
-
-        private final ICopyEvaluatorFactory cef;
-
-        public ScalarEvaluatorFactoryAdapter(ICopyEvaluatorFactory cef) {
-            this.cef = cef;
-        }
-
-        @Override
-        public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
-            final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
-            final ICopyEvaluator ce = cef.createEvaluator(abvs);
-            return new IScalarEvaluator() {
-                @Override
-                public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
-                    abvs.reset();
-                    ce.evaluate(tuple);
-                    result.set(abvs);
-                }
-            };
-        }
-    }
-
-    public static final class AggregateFunctionFactoryAdapter implements IAggregateEvaluatorFactory {
-        private static final long serialVersionUID = 1L;
-
-        private final ICopyAggregateFunctionFactory caff;
-
-        public AggregateFunctionFactoryAdapter(ICopyAggregateFunctionFactory caff) {
-            this.caff = caff;
-        }
-
-        @Override
-        public IAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
-            final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
-            final ICopyAggregateFunction caf = caff.createAggregateFunction(abvs);
-            return new IAggregateEvaluator() {
-                @Override
-                public void step(IFrameTupleReference tuple) throws AlgebricksException {
-                    caf.step(tuple);
-                }
-
-                @Override
-                public void init() throws AlgebricksException {
-                    abvs.reset();
-                    caf.init();
-                }
-
-                @Override
-                public void finishPartial(IPointable result) throws AlgebricksException {
-                    caf.finishPartial();
-                    result.set(abvs);
-                }
-
-                @Override
-                public void finish(IPointable result) throws AlgebricksException {
-                    caf.finish();
-                    result.set(abvs);
-                }
-
-            };
-        }
-    }
-
-    public static final class RunningAggregateFunctionFactoryAdapter implements IRunningAggregateEvaluatorFactory {
-        private static final long serialVersionUID = 1L;
-
-        private final ICopyRunningAggregateFunctionFactory craff;
-
-        public RunningAggregateFunctionFactoryAdapter(ICopyRunningAggregateFunctionFactory craff) {
-            this.craff = craff;
-        }
-
-        @Override
-        public IRunningAggregateEvaluator createRunningAggregateEvaluator() throws AlgebricksException {
-            final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
-            final ICopyRunningAggregateFunction craf = craff.createRunningAggregateFunction(abvs);
-            return new IRunningAggregateEvaluator() {
-                @Override
-                public void step(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
-                    abvs.reset();
-                    craf.step(tuple);
-                    result.set(abvs);
-                }
-
-                @Override
-                public void init() throws AlgebricksException {
-                    craf.init();
-                }
-            };
-        }
-    }
-
-    public static final class UnnestingFunctionFactoryAdapter implements IUnnestingEvaluatorFactory {
-        private static final long serialVersionUID = 1L;
-
-        private final ICopyUnnestingFunctionFactory cuff;
-
-        public UnnestingFunctionFactoryAdapter(ICopyUnnestingFunctionFactory cuff) {
-            this.cuff = cuff;
-        }
-
-        @Override
-        public IUnnestingEvaluator createUnnestingEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
-            final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
-            final ICopyUnnestingFunction cuf = cuff.createUnnestingFunction(abvs);
-            return new IUnnestingEvaluator() {
-                @Override
-                public boolean step(IPointable result) throws AlgebricksException {
-                    abvs.reset();
-                    if (cuf.step()) {
-                        result.set(abvs);
-                        return true;
-                    }
-                    return false;
-                }
-
-                @Override
-                public void init(IFrameTupleReference tuple) throws AlgebricksException {
-                    cuf.init(tuple);
-                }
-            };
-        }
-    }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java
index eeaf6c3..fe91ed3 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/StatefulFunctionCallExpression.java
@@ -21,7 +21,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
@@ -66,4 +65,8 @@
     public <R, T> R accept(ILogicalExpressionVisitor<R, T> visitor, T arg) throws AlgebricksException {
         return visitor.visitStatefulFunctionCallExpression(this, arg);
     }
+
+    public IPropertiesComputer getPropertiesComputer() {
+        return propertiesComputer;
+    }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
index 3cd510a..865e781 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
@@ -111,4 +111,4 @@
     public boolean splitIntoConjuncts(List<Mutable<ILogicalExpression>> conjs) {
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AlgebricksBuiltinFunctions.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AlgebricksBuiltinFunctions.java
index 70342b6..874b751 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AlgebricksBuiltinFunctions.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/AlgebricksBuiltinFunctions.java
@@ -54,6 +54,7 @@
     public final static FunctionIdentifier IS_NULL = new FunctionIdentifier(ALGEBRICKS_NS, "is-null", 1);
 
     private static final Map<FunctionIdentifier, ComparisonKind> comparisonFunctions = new HashMap<FunctionIdentifier, ComparisonKind>();
+
     static {
         comparisonFunctions.put(AlgebricksBuiltinFunctions.EQ, ComparisonKind.EQ);
         comparisonFunctions.put(AlgebricksBuiltinFunctions.LE, ComparisonKind.LE);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java
index 4d779c7..2f2b7e3 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/functions/FunctionIdentifier.java
@@ -71,4 +71,4 @@
     public String getNamespace() {
         return namespace;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
index 53857d2..8466ef9 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
@@ -48,13 +48,13 @@
             List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOperatorSchema opSchema,
             IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig)
-            throws AlgebricksException;
+                    throws AlgebricksException;
 
     public boolean scannerOperatorIsLeaf(IDataSource<S> dataSource);
 
     public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink,
             int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc)
-            throws AlgebricksException;
+                    throws AlgebricksException;
 
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink,
             int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered,
@@ -63,12 +63,13 @@
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getWriteResultRuntime(IDataSource<S> dataSource,
             IOperatorSchema propagatedSchema, List<LogicalVariable> keys, LogicalVariable payLoadVar,
             List<LogicalVariable> additionalNonKeyFields, JobGenContext context, JobSpecification jobSpec)
-            throws AlgebricksException;
+                    throws AlgebricksException;
 
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getInsertRuntime(IDataSource<S> dataSource,
             IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys,
-            LogicalVariable payLoadVar, List<LogicalVariable> additionalNonKeyFields, RecordDescriptor recordDesc,
-            JobGenContext context, JobSpecification jobSpec, boolean bulkload) throws AlgebricksException;
+            LogicalVariable payLoadVar, List<LogicalVariable> additionalFilterKeyFields,
+            List<LogicalVariable> additionalNonFilteringFields, RecordDescriptor recordDesc, JobGenContext context,
+            JobSpecification jobSpec, boolean bulkload) throws AlgebricksException;
 
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getDeleteRuntime(IDataSource<S> dataSource,
             IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys,
@@ -78,7 +79,7 @@
     /**
      * Creates the insert runtime of IndexInsertDeletePOperator, which models
      * insert/delete operations into a secondary index.
-     * 
+     *
      * @param dataSource
      *            Target secondary index.
      * @param propagatedSchema
@@ -117,7 +118,7 @@
     /**
      * Creates the delete runtime of IndexInsertDeletePOperator, which models
      * insert/delete operations into a secondary index.
-     * 
+     *
      * @param dataSource
      *            Target secondary index.
      * @param propagatedSchema
@@ -157,7 +158,7 @@
      * Creates the TokenizeOperator for IndexInsertDeletePOperator, which tokenizes
      * secondary key into [token, number of token] pair in a length-partitioned index.
      * In case of non length-partitioned index, it tokenizes secondary key into [token].
-     * 
+     *
      * @param dataSource
      *            Target secondary index.
      * @param propagatedSchema
@@ -193,4 +194,17 @@
 
     public IFunctionInfo lookupFunction(FunctionIdentifier fid);
 
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getUpsertRuntime(IDataSource<S> dataSource,
+            IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys,
+            LogicalVariable payLoadVar, List<LogicalVariable> additionalFilterFields,
+            List<LogicalVariable> additionalNonFilteringFields, RecordDescriptor recordDesc, JobGenContext context,
+            JobSpecification jobSpec) throws AlgebricksException;
+
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexUpsertRuntime(
+            IDataSourceIndex<I, S> dataSourceIndex, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
+            IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
+            List<LogicalVariable> additionalFilteringKeys, ILogicalExpression filterExpr,
+            List<LogicalVariable> prevSecondaryKeys, LogicalVariable prevAdditionalFilteringKeys,
+            RecordDescriptor inputDesc, JobGenContext context, JobSpecification spec) throws AlgebricksException;
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractExtensibleLogicalOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractExtensibleLogicalOperator.java
index 03b2feb..dd555e2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractExtensibleLogicalOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractExtensibleLogicalOperator.java
@@ -57,4 +57,4 @@
     public void setPhysicalOperator(IPhysicalOperator physicalOperator) {
         this.physicalOperator = physicalOperator;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractLogicalOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractLogicalOperator.java
index 79452c8..2410ca0 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractLogicalOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractLogicalOperator.java
@@ -24,7 +24,6 @@
 import java.util.Map;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -70,12 +69,12 @@
 
     public AbstractLogicalOperator() {
         inputs = new ArrayList<Mutable<ILogicalOperator>>();
-        // outputs = new ArrayList<LogicalOperatorReference>();
     }
 
     @Override
     public abstract LogicalOperatorTag getOperatorTag();
 
+    @Override
     public ExecutionMode getExecutionMode() {
         return mode;
     }
@@ -103,8 +102,8 @@
 
     @Override
     public final PhysicalRequirements getRequiredPhysicalPropertiesForChildren(
-            IPhysicalPropertiesVector requiredProperties) {
-        return physicalOperator.getRequiredPropertiesForChildren(this, requiredProperties);
+            IPhysicalPropertiesVector requiredProperties, IOptimizationContext context) {
+        return physicalOperator.getRequiredPropertiesForChildren(this, requiredProperties, context);
     }
 
     /**
@@ -154,7 +153,7 @@
     @Override
     public final void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         if (bJobGenEnabled) {
             if (physicalOperator == null) {
                 throw new AlgebricksException("Physical operator not set for operator: " + this);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java
new file mode 100644
index 0000000..8a2981d
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestMapOperator.java
@@ -0,0 +1,101 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
+
+public abstract class AbstractUnnestMapOperator extends AbstractUnnestOperator {
+
+    protected final Mutable<ILogicalExpression> expression;
+    protected final List<Object> variableTypes;
+    protected boolean propagateInput;
+    protected List<Mutable<ILogicalExpression>> additionalFilteringExpressions;
+    protected List<LogicalVariable> minFilterVars;
+    protected List<LogicalVariable> maxFilterVars;
+
+    public AbstractUnnestMapOperator(List<LogicalVariable> variables, Mutable<ILogicalExpression> expression,
+            List<Object> variableTypes, boolean propagateInput) {
+        super(variables, expression);
+        this.expression = expression;
+        this.variableTypes = variableTypes;
+        this.propagateInput = propagateInput;
+    }
+
+    public List<Object> getVariableTypes() {
+        return variableTypes;
+    }
+
+    /**
+     * If propagateInput is true, then propagates the input variables.
+     */
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return new VariablePropagationPolicy() {
+            @Override
+            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
+                    throws AlgebricksException {
+                if (propagateInput) {
+                    target.addAllVariables(sources[0]);
+                }
+                for (LogicalVariable v : variables) {
+                    target.addVariable(v);
+                }
+            }
+        };
+    }
+
+    public boolean propagatesInput() {
+        return propagateInput;
+    }
+
+    public void setPropagatesInput(boolean propagateInput) {
+        this.propagateInput = propagateInput;
+    }
+
+    public List<LogicalVariable> getMinFilterVars() {
+        return minFilterVars;
+    }
+
+    public void setMinFilterVars(List<LogicalVariable> minFilterVars) {
+        this.minFilterVars = minFilterVars;
+    }
+
+    public List<LogicalVariable> getMaxFilterVars() {
+        return maxFilterVars;
+    }
+
+    public void setMaxFilterVars(List<LogicalVariable> maxFilterVars) {
+        this.maxFilterVars = maxFilterVars;
+    }
+
+    public void setAdditionalFilteringExpressions(List<Mutable<ILogicalExpression>> additionalFilteringExpressions) {
+        this.additionalFilteringExpressions = additionalFilteringExpressions;
+    }
+
+    public List<Mutable<ILogicalExpression>> getAdditionalFilteringExpressions() {
+        return additionalFilteringExpressions;
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java
new file mode 100644
index 0000000..c04957c
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestNonMapOperator.java
@@ -0,0 +1,125 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.ArrayList;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
+import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
+
+public abstract class AbstractUnnestNonMapOperator extends AbstractUnnestOperator {
+
+    protected LogicalVariable positionalVariable;
+
+    /**
+     * Used to set the position offset for positional variable
+     */
+    protected ILogicalExpression positionOffsetExpr;
+
+    /**
+     * Specify the writer of the positional variable
+     */
+    protected IUnnestingPositionWriter positionWriter;
+
+    /**
+     * Specify the type of the positional variable
+     */
+    protected Object positionalVariableType;
+
+    public AbstractUnnestNonMapOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression) {
+        super(makeSingletonList(variable), expression);
+    }
+
+    public AbstractUnnestNonMapOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression,
+            LogicalVariable positionalVariable, Object positionalVariableType,
+            IUnnestingPositionWriter positionWriter) {
+        this(variable, expression);
+        this.setPositionalVariable(positionalVariable);
+        this.setPositionalVariableType(positionalVariableType);
+        this.setPositionWriter(positionWriter);
+    }
+
+    public LogicalVariable getVariable() {
+        return variables.get(0);
+    }
+
+    public void setPositionalVariable(LogicalVariable positionalVariable) {
+        this.positionalVariable = positionalVariable;
+    }
+
+    public LogicalVariable getPositionalVariable() {
+        return positionalVariable;
+    }
+
+    public void setPositionWriter(IUnnestingPositionWriter positionWriter) {
+        this.positionWriter = positionWriter;
+    }
+
+    public IUnnestingPositionWriter getPositionWriter() {
+        return positionalVariable != null ? positionWriter : null;
+    }
+
+    public void setPositionalVariableType(Object positionalVariableType) {
+        this.positionalVariableType = positionalVariableType;
+    }
+
+    public Object getPositionalVariableType() {
+        return positionalVariableType;
+    }
+
+    public void setPositionOffsetExpr(ILogicalExpression posOffsetExpr) {
+        this.positionOffsetExpr = posOffsetExpr;
+    }
+
+    public ILogicalExpression getPositionOffsetExpr() {
+        return this.positionOffsetExpr;
+    }
+
+    protected static <E> ArrayList<E> makeSingletonList(E item) {
+        ArrayList<E> array = new ArrayList<E>(1);
+        array.add(item);
+        return array;
+    }
+
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return new VariablePropagationPolicy() {
+
+            @Override
+            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
+                    throws AlgebricksException {
+                if (sources.length > 0) {
+                    target.addAllVariables(sources[0]);
+                }
+                for (LogicalVariable v : variables) {
+                    target.addVariable(v);
+                }
+                if (positionalVariable != null) {
+                    target.addVariable(positionalVariable);
+                }
+            }
+        };
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java
index fcba3ba..9f528bd 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractUnnestOperator.java
@@ -50,4 +50,4 @@
         return visitor.transform(expression);
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java
index c5fac83..f491028 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java
@@ -19,8 +19,8 @@
 package org.apache.hyracks.algebricks.core.algebra.operators.logical;
 
 import java.util.List;
-import org.apache.commons.lang3.mutable.Mutable;
 
+import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
@@ -36,20 +36,19 @@
 
 /**
  * It corresponds to the Map operator in other algebras.
- * 
+ *
  * @author Nicola
  */
 
 public class AssignOperator extends AbstractAssignOperator {
-	
-	private LocalOrderProperty explicitOrderingProperty;
+
+    private LocalOrderProperty explicitOrderingProperty;
 
     public AssignOperator(List<LogicalVariable> vars, List<Mutable<ILogicalExpression>> exprs) {
         super(vars, exprs);
     }
 
     public AssignOperator(LogicalVariable var, Mutable<ILogicalExpression> expr) {
-        super();
         this.variables.add(var);
         this.expressions.add(expr);
     }
@@ -90,10 +89,8 @@
         PropagatingTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx);
         int n = variables.size();
         for (int i = 0; i < n; i++) {
-            env.setVarType(
-                    variables.get(i),
-                    ctx.getExpressionTypeComputer().getType(expressions.get(i).getValue(), ctx.getMetadataProvider(),
-                            env));
+            env.setVarType(variables.get(i), ctx.getExpressionTypeComputer().getType(expressions.get(i).getValue(),
+                    ctx.getMetadataProvider(), env));
             if (expressions.get(i).getValue().getExpressionTag() == LogicalExpressionTag.VARIABLE) {
                 LogicalVariable var = ((VariableReferenceExpression) expressions.get(i).getValue())
                         .getVariableReference();
@@ -113,11 +110,10 @@
     }
 
     public LocalOrderProperty getExplicitOrderingProperty() {
-		return explicitOrderingProperty;
-	}
+        return explicitOrderingProperty;
+    }
 
-	public void setExplicitOrderingProperty(
-			LocalOrderProperty explicitOrderingProperty) {
-		this.explicitOrderingProperty = explicitOrderingProperty;
-	}
-}
\ No newline at end of file
+    public void setExplicitOrderingProperty(LocalOrderProperty explicitOrderingProperty) {
+        this.explicitOrderingProperty = explicitOrderingProperty;
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
index e88b0da..2511fa9 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
@@ -23,7 +23,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
@@ -134,4 +133,4 @@
     public List<Mutable<ILogicalExpression>> getAdditionalFilteringExpressions() {
         return additionalFilteringExpressions;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DistinctOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DistinctOperator.java
index e122dc4..205099f 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DistinctOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DistinctOperator.java
@@ -16,123 +16,123 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.core.algebra.operators.logical;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
-import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
-
-public class DistinctOperator extends AbstractLogicalOperator {
-    private final List<Mutable<ILogicalExpression>> expressions;
-
-    public DistinctOperator(List<Mutable<ILogicalExpression>> expressions) {
-        this.expressions = expressions;
-    }
-
-    @Override
-    public LogicalOperatorTag getOperatorTag() {
-        return LogicalOperatorTag.DISTINCT;
-    }
-
-    public List<Mutable<ILogicalExpression>> getExpressions() {
-        return expressions;
-    }
-
-    @Override
-    public void recomputeSchema() {
-        schema = new ArrayList<LogicalVariable>();
-        schema.addAll(this.getDistinctByVarList());
-        List<LogicalVariable> inputSchema = inputs.get(0).getValue().getSchema();
-        for (LogicalVariable var : inputSchema) {
-            if (!schema.contains(var)) {
-                schema.add(var);
-            }
-        }
-    }
-
-    @Override
-    public VariablePropagationPolicy getVariablePropagationPolicy() {
-        return new VariablePropagationPolicy() {
-            @Override
-            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
-                    throws AlgebricksException {
-                /** make sure distinct key vars laid-out first */
-                for (LogicalVariable keyVar : getDistinctByVarList()) {
-                    target.addVariable(keyVar);
-                }
-                /** add other source vars */
-                for (IOperatorSchema srcSchema : sources) {
-                    for (LogicalVariable srcVar : srcSchema)
-                        if (target.findVariable(srcVar) < 0) {
-                            target.addVariable(srcVar);
-                        }
-                }
-            }
-        };
-    }
-
-    @Override
-    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) throws AlgebricksException {
-        boolean changed = false;
-        for (Mutable<ILogicalExpression> e : expressions) {
-            if (visitor.transform(e)) {
-                changed = true;
-            }
-        }
-        return changed;
-    }
-
-    @Override
-    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
-        return visitor.visitDistinctOperator(this, arg);
-    }
-
-    @Override
-    public boolean isMap() {
-        return false;
+package org.apache.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+
+public class DistinctOperator extends AbstractLogicalOperator {
+    private final List<Mutable<ILogicalExpression>> expressions;
+
+    public DistinctOperator(List<Mutable<ILogicalExpression>> expressions) {
+        this.expressions = expressions;
     }
-
-    public List<LogicalVariable> getDistinctByVarList() {
-        List<LogicalVariable> varList = new ArrayList<LogicalVariable>(expressions.size());
-        for (Mutable<ILogicalExpression> eRef : expressions) {
-            ILogicalExpression e = eRef.getValue();
-            if (e.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
-                VariableReferenceExpression v = (VariableReferenceExpression) e;
-                varList.add(v.getVariableReference());
-            }
-        }
-        return varList;
-    }
-
-    public boolean isDistinctByVar(LogicalVariable var) {
-        for (Mutable<ILogicalExpression> eRef : expressions) {
-            ILogicalExpression e = eRef.getValue();
-            if (e.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
-                VariableReferenceExpression v = (VariableReferenceExpression) e;
-                if (v.getVariableReference() == var) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
-        return createPropagatingAllInputsTypeEnvironment(ctx);
-    }
-
-}
+
+    @Override
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.DISTINCT;
+    }
+
+    public List<Mutable<ILogicalExpression>> getExpressions() {
+        return expressions;
+    }
+
+    @Override
+    public void recomputeSchema() {
+        schema = new ArrayList<LogicalVariable>();
+        schema.addAll(this.getDistinctByVarList());
+        List<LogicalVariable> inputSchema = inputs.get(0).getValue().getSchema();
+        for (LogicalVariable var : inputSchema) {
+            if (!schema.contains(var)) {
+                schema.add(var);
+            }
+        }
+    }
+
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return new VariablePropagationPolicy() {
+            @Override
+            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
+                    throws AlgebricksException {
+                /** make sure distinct key vars laid-out first */
+                for (LogicalVariable keyVar : getDistinctByVarList()) {
+                    target.addVariable(keyVar);
+                }
+                /** add other source vars */
+                for (IOperatorSchema srcSchema : sources) {
+                    for (LogicalVariable srcVar : srcSchema)
+                        if (target.findVariable(srcVar) < 0) {
+                            target.addVariable(srcVar);
+                        }
+                }
+            }
+        };
+    }
+
+    @Override
+    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) throws AlgebricksException {
+        boolean changed = false;
+        for (Mutable<ILogicalExpression> e : expressions) {
+            if (visitor.transform(e)) {
+                changed = true;
+            }
+        }
+        return changed;
+    }
+
+    @Override
+    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
+        return visitor.visitDistinctOperator(this, arg);
+    }
+
+    @Override
+    public boolean isMap() {
+        return false;
+    }
+
+    public List<LogicalVariable> getDistinctByVarList() {
+        List<LogicalVariable> varList = new ArrayList<LogicalVariable>(expressions.size());
+        for (Mutable<ILogicalExpression> eRef : expressions) {
+            ILogicalExpression e = eRef.getValue();
+            if (e.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
+                VariableReferenceExpression v = (VariableReferenceExpression) e;
+                varList.add(v.getVariableReference());
+            }
+        }
+        return varList;
+    }
+
+    public boolean isDistinctByVar(LogicalVariable var) {
+        for (Mutable<ILogicalExpression> eRef : expressions) {
+            ILogicalExpression e = eRef.getValue();
+            if (e.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
+                VariableReferenceExpression v = (VariableReferenceExpression) e;
+                if (v.getVariableReference() == var) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
+        return createPropagatingAllInputsTypeEnvironment(ctx);
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/EmptyTupleSourceOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/EmptyTupleSourceOperator.java
index 0feaec5..1af0ce4 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/EmptyTupleSourceOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/EmptyTupleSourceOperator.java
@@ -97,4 +97,4 @@
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java
index dfd2c8f..d2f7715 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java
@@ -116,7 +116,7 @@
     public String toString() {
         return delegate.toString();
     }
-    
+
     public IOperatorExtension getDelegate() {
         return delegate;
     }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExternalDataLookupOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExternalDataLookupOperator.java
deleted file mode 100644
index fde5fe7..0000000
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExternalDataLookupOperator.java
+++ /dev/null
@@ -1,119 +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.hyracks.algebricks.core.algebra.operators.logical;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
-import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
-import org.apache.hyracks.algebricks.core.algebra.typing.NonPropagatingTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
-
-public class ExternalDataLookupOperator extends AbstractDataSourceOperator {
-
-    private final List<Object> variableTypes;
-    protected final Mutable<ILogicalExpression> expression;
-    private final boolean propagateInput;
-
-    public ExternalDataLookupOperator(List<LogicalVariable> variables, Mutable<ILogicalExpression> expression,
-            List<Object> variableTypes, boolean propagateInput, IDataSource<?> dataSource) {
-        super(variables, dataSource);
-        this.expression = expression;
-        this.variableTypes = variableTypes;
-        this.propagateInput = propagateInput;
-    }
-
-    @Override
-    public LogicalOperatorTag getOperatorTag() {
-        return LogicalOperatorTag.EXTERNAL_LOOKUP;
-    }
-
-    @Override
-    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
-        IVariableTypeEnvironment env = null;
-        if (propagateInput) {
-            env = createPropagatingAllInputsTypeEnvironment(ctx);
-        } else {
-            env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getMetadataProvider());
-        }
-        env.setVarType(variables.get(0), variableTypes.get(0));
-        return env;
-    }
-
-    public List<Object> getVariableTypes() {
-        return variableTypes;
-    }
-
-    @Override
-    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
-        return visitor.visitExternalDataLookupOperator(this, arg);
-    }
-
-    @Override
-    public boolean isMap() {
-        return false;
-    }
-
-    public boolean isPropagateInput() {
-        return propagateInput;
-    }
-
-    @Override
-    public VariablePropagationPolicy getVariablePropagationPolicy() {
-        return new VariablePropagationPolicy() {
-            @Override
-            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
-                    throws AlgebricksException {
-                if (propagateInput) {
-                    ArrayList<LogicalVariable> usedVariables = new ArrayList<LogicalVariable>();
-                    VariableUtilities.getUsedVariables(ExternalDataLookupOperator.this, usedVariables);
-                    int numOfSources = sources.length;
-                    for (int i = 0; i < numOfSources; i++) {
-                        for (LogicalVariable v : sources[i]) {
-                            if (!usedVariables.contains(v)) {
-                                target.addVariable(v);
-                            }
-                        }
-                    }
-                }
-                target.addVariable(variables.get(0));
-            }
-        };
-    }
-
-    public Mutable<ILogicalExpression> getExpressionRef() {
-        return expression;
-    }
-
-    @Override
-    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) throws AlgebricksException {
-        return visitor.transform(expression);
-    }
-}
\ No newline at end of file
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java
index 4d578d9..e61d9a2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java
@@ -47,8 +47,8 @@
     void setPhysicalOperator(IPhysicalOperator physicalOperator);
 
     ExecutionMode getExecutionMode();
-    
+
     public void getUsedVariables(Collection<LogicalVariable> usedVars);
-    
+
     public void getProducedVariables(Collection<LogicalVariable> producedVars);
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorSchema.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorSchema.java
index f6d4788..28a8499 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorSchema.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorSchema.java
@@ -34,4 +34,4 @@
     public int getSize();
 
     public void clear();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteUpsertOperator.java
similarity index 76%
rename from algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteOperator.java
rename to algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteUpsertOperator.java
index 378b916..c06cc18 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteUpsertOperator.java
@@ -28,13 +28,13 @@
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSourceIndex;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
 
-public class IndexInsertDeleteOperator extends AbstractLogicalOperator {
+public class IndexInsertDeleteUpsertOperator extends AbstractLogicalOperator {
 
     private final IDataSourceIndex<?, ?> dataSourceIndex;
     private final List<Mutable<ILogicalExpression>> primaryKeyExprs;
@@ -46,8 +46,11 @@
     private final Kind operation;
     private final boolean bulkload;
     private List<Mutable<ILogicalExpression>> additionalFilteringExpressions;
+    // used for upsert operations
+    private List<Mutable<ILogicalExpression>> prevSecondaryKeyExprs;
+    private Mutable<ILogicalExpression> prevAdditionalFilteringExpression;
 
-    public IndexInsertDeleteOperator(IDataSourceIndex<?, ?> dataSourceIndex,
+    public IndexInsertDeleteUpsertOperator(IDataSourceIndex<?, ?> dataSourceIndex,
             List<Mutable<ILogicalExpression>> primaryKeyExprs, List<Mutable<ILogicalExpression>> secondaryKeyExprs,
             Mutable<ILogicalExpression> filterExpr, Kind operation, boolean bulkload) {
         this.dataSourceIndex = dataSourceIndex;
@@ -67,21 +70,19 @@
     @Override
     public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) throws AlgebricksException {
         boolean b = false;
+        // Primary
         for (int i = 0; i < primaryKeyExprs.size(); i++) {
             if (visitor.transform(primaryKeyExprs.get(i))) {
                 b = true;
             }
         }
+        // Secondary
         for (int i = 0; i < secondaryKeyExprs.size(); i++) {
             if (visitor.transform(secondaryKeyExprs.get(i))) {
                 b = true;
             }
         }
-        if (filterExpr != null) {
-            if (visitor.transform(filterExpr)) {
-                b = true;
-            }
-        }
+        // Additional Filtering <For upsert>
         if (additionalFilteringExpressions != null) {
             for (int i = 0; i < additionalFilteringExpressions.size(); i++) {
                 if (visitor.transform(additionalFilteringExpressions.get(i))) {
@@ -89,12 +90,24 @@
                 }
             }
         }
+        // Old secondary <For upsert>
+        if (prevSecondaryKeyExprs != null) {
+            for (int i = 0; i < prevSecondaryKeyExprs.size(); i++) {
+                if (visitor.transform(prevSecondaryKeyExprs.get(i))) {
+                    b = true;
+                }
+            }
+        }
+        // Old Filtering <For upsert>
+        if (prevAdditionalFilteringExpression != null) {
+            visitor.transform(prevAdditionalFilteringExpression);
+        }
         return b;
     }
 
     @Override
     public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
-        return visitor.visitIndexInsertDeleteOperator(this, arg);
+        return visitor.visitIndexInsertDeleteUpsertOperator(this, arg);
     }
 
     @Override
@@ -109,7 +122,7 @@
 
     @Override
     public LogicalOperatorTag getOperatorTag() {
-        return LogicalOperatorTag.INDEX_INSERT_DELETE;
+        return LogicalOperatorTag.INDEX_INSERT_DELETE_UPSERT;
     }
 
     @Override
@@ -153,4 +166,19 @@
         return additionalFilteringExpressions;
     }
 
+    public List<Mutable<ILogicalExpression>> getPrevSecondaryKeyExprs() {
+        return prevSecondaryKeyExprs;
+    }
+
+    public void setPrevSecondaryKeyExprs(List<Mutable<ILogicalExpression>> prevSecondaryKeyExprs) {
+        this.prevSecondaryKeyExprs = prevSecondaryKeyExprs;
+    }
+
+    public Mutable<ILogicalExpression> getPrevAdditionalFilteringExpression() {
+        return prevAdditionalFilteringExpression;
+    }
+
+    public void setPrevAdditionalFilteringExpression(Mutable<ILogicalExpression> prevAdditionalFilteringExpression) {
+        this.prevAdditionalFilteringExpression = prevAdditionalFilteringExpression;
+    }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InnerJoinOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InnerJoinOperator.java
index f6830ed..a6055cb 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InnerJoinOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InnerJoinOperator.java
@@ -54,4 +54,4 @@
         return createPropagatingAllInputsTypeEnvironment(ctx);
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteOperator.java
deleted file mode 100644
index b95d279..0000000
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteOperator.java
+++ /dev/null
@@ -1,133 +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.hyracks.algebricks.core.algebra.operators.logical;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSource;
-import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
-import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
-
-public class InsertDeleteOperator extends AbstractLogicalOperator {
-
-    public enum Kind {
-        INSERT,
-        DELETE
-    }
-
-    private final IDataSource<?> dataSource;
-
-    private final Mutable<ILogicalExpression> payloadExpr;
-
-    private final List<Mutable<ILogicalExpression>> primaryKeyExprs;
-
-    private final Kind operation;
-    private List<Mutable<ILogicalExpression>> additionalFilteringExpressions;
-
-    private final boolean bulkload;
-
-    public InsertDeleteOperator(IDataSource<?> dataSource, Mutable<ILogicalExpression> payloadExpr,
-            List<Mutable<ILogicalExpression>> primaryKeyExprs, Kind operation, boolean bulkload) {
-        this.dataSource = dataSource;
-        this.payloadExpr = payloadExpr;
-        this.primaryKeyExprs = primaryKeyExprs;
-        this.operation = operation;
-        this.bulkload = bulkload;
-    }
-
-    @Override
-    public void recomputeSchema() throws AlgebricksException {
-        schema = new ArrayList<LogicalVariable>();
-        schema.addAll(inputs.get(0).getValue().getSchema());
-    }
-
-    @Override
-    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform) throws AlgebricksException {
-        boolean changed = false;
-        changed = transform.transform(payloadExpr);
-        for (Mutable<ILogicalExpression> e : primaryKeyExprs) {
-            changed |= transform.transform(e);
-        }
-        return changed;
-    }
-
-    @Override
-    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
-        return visitor.visitInsertDeleteOperator(this, arg);
-    }
-
-    @Override
-    public boolean isMap() {
-        return false;
-    }
-
-    @Override
-    public VariablePropagationPolicy getVariablePropagationPolicy() {
-        return VariablePropagationPolicy.ALL;
-    }
-
-    @Override
-    public LogicalOperatorTag getOperatorTag() {
-        return LogicalOperatorTag.INSERT_DELETE;
-    }
-
-    @Override
-    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
-        return createPropagatingAllInputsTypeEnvironment(ctx);
-    }
-
-    public List<Mutable<ILogicalExpression>> getPrimaryKeyExpressions() {
-        return primaryKeyExprs;
-    }
-
-    public IDataSource<?> getDataSource() {
-        return dataSource;
-    }
-
-    public Mutable<ILogicalExpression> getPayloadExpression() {
-        return payloadExpr;
-    }
-
-    public Kind getOperation() {
-        return operation;
-    }
-
-    public boolean isBulkload() {
-        return bulkload;
-	}
-
-    public void setAdditionalFilteringExpressions(List<Mutable<ILogicalExpression>> additionalFilteringExpressions) {
-        this.additionalFilteringExpressions = additionalFilteringExpressions;
-    }
-
-    public List<Mutable<ILogicalExpression>> getAdditionalFilteringExpressions() {
-        return additionalFilteringExpressions;
-    }
-
-}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
new file mode 100644
index 0000000..6a74eb9
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
@@ -0,0 +1,227 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSource;
+import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+
+public class InsertDeleteUpsertOperator extends AbstractLogicalOperator {
+
+    public enum Kind {
+        INSERT,
+        DELETE,
+        UPSERT
+    }
+
+    private final IDataSource<?> dataSource;
+    private final Mutable<ILogicalExpression> payloadExpr;
+    private final List<Mutable<ILogicalExpression>> primaryKeyExprs;
+    private final Kind operation;
+    private final boolean bulkload;
+    private List<Mutable<ILogicalExpression>> additionalFilteringExpressions;
+    private final List<Mutable<ILogicalExpression>> additionalNonFilteringExpressions;
+    // previous record (for UPSERT)
+    private LogicalVariable prevRecordVar;
+    private Object prevRecordType;
+    // previous filter (for UPSERT)
+    private LogicalVariable prevFilterVar;
+    private Object prevFilterType;
+
+    public InsertDeleteUpsertOperator(IDataSource<?> dataSource, Mutable<ILogicalExpression> payloadExpr,
+            List<Mutable<ILogicalExpression>> primaryKeyExprs,
+            List<Mutable<ILogicalExpression>> additionalNonFilteringExpressions, Kind operation, boolean bulkload) {
+        this.dataSource = dataSource;
+        this.payloadExpr = payloadExpr;
+        this.primaryKeyExprs = primaryKeyExprs;
+        this.operation = operation;
+        this.bulkload = bulkload;
+        this.additionalNonFilteringExpressions = additionalNonFilteringExpressions;
+    }
+
+    public InsertDeleteUpsertOperator(IDataSource<?> dataSource, Mutable<ILogicalExpression> payloadExpr,
+            List<Mutable<ILogicalExpression>> primaryKeyExprs, Kind operation, boolean bulkload) {
+        this.dataSource = dataSource;
+        this.payloadExpr = payloadExpr;
+        this.primaryKeyExprs = primaryKeyExprs;
+        this.operation = operation;
+        this.bulkload = bulkload;
+        this.additionalNonFilteringExpressions = null;
+    }
+
+    @Override
+    public void recomputeSchema() throws AlgebricksException {
+        schema = new ArrayList<LogicalVariable>();
+        schema.addAll(inputs.get(0).getValue().getSchema());
+        if (operation == Kind.UPSERT) {
+            // The upsert case also produces the previous record
+            schema.add(prevRecordVar);
+            if (prevFilterVar != null) {
+                schema.add(prevFilterVar);
+            }
+        }
+    }
+
+    public void getProducedVariables(Collection<LogicalVariable> producedVariables) {
+        if (prevRecordVar != null) {
+            producedVariables.add(prevRecordVar);
+        }
+        if (prevFilterVar != null) {
+            producedVariables.add(prevFilterVar);
+        }
+    }
+
+    @Override
+    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform)
+            throws AlgebricksException {
+        boolean changed = false;
+        changed = transform.transform(payloadExpr);
+        for (Mutable<ILogicalExpression> e : primaryKeyExprs) {
+            changed |= transform.transform(e);
+        }
+        if (additionalFilteringExpressions != null) {
+            for (Mutable<ILogicalExpression> e : additionalFilteringExpressions) {
+                changed |= transform.transform(e);
+            }
+        }
+        if (additionalNonFilteringExpressions != null) {
+            for (Mutable<ILogicalExpression> e : additionalNonFilteringExpressions) {
+                changed |= transform.transform(e);
+            }
+        }
+        return changed;
+    }
+
+    @Override
+    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
+        return visitor.visitInsertDeleteUpsertOperator(this, arg);
+    }
+
+    @Override
+    public boolean isMap() {
+        return true;
+    }
+
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return new VariablePropagationPolicy() {
+            @Override
+            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
+                    throws AlgebricksException {
+                target.addAllVariables(sources[0]);
+                if (operation == Kind.UPSERT) {
+                    target.addVariable(prevRecordVar);
+                    if (prevFilterVar != null) {
+                        target.addVariable(prevFilterVar);
+                    }
+                }
+            }
+        };
+    }
+
+    @Override
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.INSERT_DELETE_UPSERT;
+    }
+
+    @Override
+    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
+        PropagatingTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx);
+        if (operation == Kind.UPSERT) {
+            env.setVarType(prevRecordVar, prevRecordType);
+            if (prevFilterVar != null) {
+                env.setVarType(prevFilterVar, prevFilterType);
+            }
+        }
+        return env;
+    }
+
+    public List<Mutable<ILogicalExpression>> getPrimaryKeyExpressions() {
+        return primaryKeyExprs;
+    }
+
+    public IDataSource<?> getDataSource() {
+        return dataSource;
+    }
+
+    public Mutable<ILogicalExpression> getPayloadExpression() {
+        return payloadExpr;
+    }
+
+    public Kind getOperation() {
+        return operation;
+    }
+
+    public boolean isBulkload() {
+        return bulkload;
+    }
+
+    public List<Mutable<ILogicalExpression>> getAdditionalNonFilteringExpressions() {
+        return additionalNonFilteringExpressions;
+    }
+
+    public void setAdditionalFilteringExpressions(List<Mutable<ILogicalExpression>> additionalFilteringExpressions) {
+        this.additionalFilteringExpressions = additionalFilteringExpressions;
+    }
+
+    public List<Mutable<ILogicalExpression>> getAdditionalFilteringExpressions() {
+        return additionalFilteringExpressions;
+    }
+
+    public LogicalVariable getPrevRecordVar() {
+        return prevRecordVar;
+    }
+
+    public void setPrevRecordVar(LogicalVariable prevRecordVar) {
+        this.prevRecordVar = prevRecordVar;
+    }
+
+    public void setPrevRecordType(Object recordType) {
+        prevRecordType = recordType;
+    }
+
+    public LogicalVariable getPrevFilterVar() {
+        return prevFilterVar;
+    }
+
+    public void setPrevFilterVar(LogicalVariable prevFilterVar) {
+        this.prevFilterVar = prevFilterVar;
+    }
+
+    public Object getPrevFilterType() {
+        return prevFilterType;
+    }
+
+    public void setPrevFilterType(Object prevFilterType) {
+        this.prevFilterType = prevFilterType;
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IntersectOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IntersectOperator.java
new file mode 100644
index 0000000..e64be2b
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IntersectOperator.java
@@ -0,0 +1,126 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.List;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.properties.FilteredVariablePropagationPolicy;
+import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.typing.NonPropagatingTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+import org.apache.hyracks.algebricks.core.config.AlgebricksConfig;
+
+public class IntersectOperator extends AbstractLogicalOperator {
+
+    private final List<List<LogicalVariable>> inputVars;
+    private final List<LogicalVariable> outputVars;
+
+    public IntersectOperator(List<LogicalVariable> outputVars, List<List<LogicalVariable>> inputVars)
+            throws AlgebricksException {
+        if (outputVars.size() != inputVars.get(0).size()) {
+            throw new AlgebricksException("The number of output variables is different with the input variable number");
+        }
+        if (inputVars.stream().anyMatch(vlist -> vlist.size() != outputVars.size())) {
+            throw new AlgebricksException("The schemas of input variables are not consistent");
+        }
+        this.outputVars = outputVars;
+        this.inputVars = inputVars;
+    }
+
+    @Override
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.INTERSECT;
+    }
+
+    @Override
+    public void recomputeSchema() throws AlgebricksException {
+        schema = outputVars;
+    }
+
+    @Override
+    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform)
+            throws AlgebricksException {
+        return false;
+    }
+
+    @Override
+    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
+        return visitor.visitIntersectOperator(this, arg);
+    }
+
+    @Override
+    public boolean isMap() {
+        return false;
+    }
+
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return new FilteredVariablePropagationPolicy(outputVars);
+    }
+
+    @Override
+    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
+        IVariableTypeEnvironment typeEnv = ctx.getOutputTypeEnvironment(inputs.get(0).getValue());
+
+        for (int i = 1; i < inputs.size(); i++) {
+            checkTypeConsistency(typeEnv, inputVars.get(0), ctx.getOutputTypeEnvironment(inputs.get(i).getValue()),
+                    inputVars.get(i));
+        }
+
+        IVariableTypeEnvironment env = new NonPropagatingTypeEnvironment(ctx.getExpressionTypeComputer(),
+                ctx.getMetadataProvider());
+        for (int i = 0; i < outputVars.size(); i++) {
+            env.setVarType(outputVars.get(i), typeEnv.getVarType(inputVars.get(0).get(i)));
+        }
+        return typeEnv;
+    }
+
+    public List<LogicalVariable> getOutputVars() {
+        return outputVars;
+    }
+
+    public int getNumInput() {
+        return inputVars.size();
+    }
+
+    public List<LogicalVariable> getInputVariables(int inputIndex) {
+        return inputVars.get(inputIndex);
+    }
+
+    private void checkTypeConsistency(IVariableTypeEnvironment expected, List<LogicalVariable> expectedVariables,
+            IVariableTypeEnvironment actual, List<LogicalVariable> actualVariables) throws AlgebricksException {
+        for (int i = 0; i < expectedVariables.size(); i++) {
+            Object expectedType = expected.getVarType(expectedVariables.get(i));
+            Object actualType = actual.getVarType(actualVariables.get(i));
+            if (!expectedType.equals(actualType)) {
+                AlgebricksConfig.ALGEBRICKS_LOGGER
+                        .warning("Type of two variables are not equal." + expectedVariables.get(i) + " is of type: "
+                                + expectedType + actualVariables.get(i) + " is of type: " + actualType);
+            }
+        }
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestMapOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestMapOperator.java
new file mode 100644
index 0000000..56e2dfb
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/LeftOuterUnnestMapOperator.java
@@ -0,0 +1,74 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+
+/**
+ * Left-outer-unnest-map is similar to the unnest-map operator. The only
+ * difference is that this operator represents left-outer semantics, meaning
+ * that it generates null values for non-matching tuples. It also propagates all
+ * input variables. This may be used only in a left-outer-join case.
+ */
+public class LeftOuterUnnestMapOperator extends AbstractUnnestMapOperator {
+
+    public LeftOuterUnnestMapOperator(List<LogicalVariable> variables, Mutable<ILogicalExpression> expression,
+            List<Object> variableTypes, boolean propagateInput) {
+        super(variables, expression, variableTypes, propagateInput);
+        // propagateInput is always set to true for this operator.
+        this.propagateInput = true;
+    }
+
+    @Override
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.LEFT_OUTER_UNNEST_MAP;
+    }
+
+    @Override
+    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
+        return visitor.visitLeftOuterUnnestMapOperator(this, arg);
+    }
+
+    @Override
+    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
+        // Propagates all input variables that come from the outer branch.
+        PropagatingTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx);
+
+        env.getCorrelatedNullableVariableLists().add(variables);
+
+        // For the variables from the inner branch, the output type is the union
+        // of (original type + null).
+        for (int i = 0; i < variables.size(); i++) {
+            env.setVarType(variables.get(i), ctx.getNullableTypeComputer().makeNullableType(variableTypes.get(i)));
+        }
+
+        return env;
+    }
+
+}
\ No newline at end of file
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/NestedTupleSourceOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/NestedTupleSourceOperator.java
index 8993495..a3a446a 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/NestedTupleSourceOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/NestedTupleSourceOperator.java
@@ -109,4 +109,4 @@
         return computeOutputTypeEnvironment(ctx);
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OrderOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OrderOperator.java
index 69e2582..cea7e23 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OrderOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OrderOperator.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -96,17 +95,26 @@
     };
 
     private final List<Pair<IOrder, Mutable<ILogicalExpression>>> orderExpressions;
+    // In case we can push down LIMIT information into this operator.
+    protected final int topK;
 
     // These are pairs of type (comparison, expr) where comparison is
     // ASC or DESC or a boolean function of arity 2 that can take as
     // arguments results of expr.
 
+    // TopK : -1 means there is no LIMIT push-down optimization applied to this operator.
     public OrderOperator() {
         orderExpressions = new ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>>();
+        topK = -1;
     }
 
     public OrderOperator(List<Pair<IOrder, Mutable<ILogicalExpression>>> orderExpressions) {
+        this(orderExpressions, -1);
+    }
+
+    public OrderOperator(List<Pair<IOrder, Mutable<ILogicalExpression>>> orderExpressions, int topK) {
         this.orderExpressions = orderExpressions;
+        this.topK = topK;
     }
 
     @Override
@@ -160,4 +168,8 @@
     public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
         return createPropagatingAllInputsTypeEnvironment(ctx);
     }
-}
\ No newline at end of file
+
+    public int getTopK() {
+        return topK;
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OuterUnnestOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OuterUnnestOperator.java
new file mode 100644
index 0000000..133656b
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/OuterUnnestOperator.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2009-2013 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 org.apache.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
+
+public class OuterUnnestOperator extends AbstractUnnestNonMapOperator {
+
+    public OuterUnnestOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression) {
+        super(variable, expression);
+    }
+
+    public OuterUnnestOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression,
+            LogicalVariable positionalVariable, Object positionalVariableType,
+            IUnnestingPositionWriter positionWriter) {
+        super(variable, expression, positionalVariable, positionalVariableType, positionWriter);
+    }
+
+    @Override
+    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
+        return visitor.visitOuterUnnestOperator(this, arg);
+    }
+
+    @Override
+    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
+        PropagatingTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx);
+        Object t = env.getType(expression.getValue());
+        env.setVarType(variables.get(0), t);
+        if (positionalVariable != null) {
+            env.setVarType(positionalVariable, positionalVariableType);
+        }
+
+        // The produced variables of the this operator are nullable because of the left outer semantics.
+        List<LogicalVariable> nullableVars = new ArrayList<LogicalVariable>();
+        nullableVars.add(variables.get(0));
+        if (positionalVariable != null) {
+            nullableVars.add(positionalVariable);
+        }
+        env.getCorrelatedNullableVariableLists().add(nullableVars);
+        return env;
+    }
+
+    @Override
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.OUTER_UNNEST;
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java
index 9d48fa0..1c5f324 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java
@@ -69,11 +69,11 @@
     public int getDefaultBranchIndex() {
         return defaultBranchIndex;
     }
-    
+
     public int getNumOutputBranches() {
         return (defaultBranchIndex == expressions.size()) ? expressions.size() + 1 : expressions.size();
     }
-    
+
     @Override
     public LogicalOperatorTag getOperatorTag() {
         return LogicalOperatorTag.PARTITIONINGSPLIT;
@@ -116,4 +116,4 @@
         return createPropagatingAllInputsTypeEnvironment(ctx);
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ProjectOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ProjectOperator.java
index ceca63b..672d32c 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ProjectOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ProjectOperator.java
@@ -41,12 +41,12 @@
 
     public ProjectOperator(LogicalVariable v) {
         this.variables = new ArrayList<LogicalVariable>(1);
-        this.getVariables().add(v);
+        variables.add(v);
     }
 
     @Override
     public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) {
-        // do nothing
+        // Do nothing
         return false;
     }
 
@@ -83,5 +83,4 @@
     public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
         return createPropagatingAllInputsTypeEnvironment(ctx);
     }
-
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ReplicateOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ReplicateOperator.java
index 2ba4969..343ace8 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ReplicateOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ReplicateOperator.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
@@ -62,7 +61,8 @@
     }
 
     @Override
-    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform) throws AlgebricksException {
+    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform)
+            throws AlgebricksException {
         return false;
     }
 
@@ -73,7 +73,7 @@
 
     @Override
     public boolean isMap() {
-        return false;
+        return true;
     }
 
     @Override
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ScriptOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ScriptOperator.java
index ee2e7da..b04b28c 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ScriptOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ScriptOperator.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.logical;
 
-import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -34,22 +34,22 @@
 
 public class ScriptOperator extends AbstractLogicalOperator {
 
-    private ArrayList<LogicalVariable> inputVariables;
-    private ArrayList<LogicalVariable> outputVariables;
+    private List<LogicalVariable> inputVariables;
+    private List<LogicalVariable> outputVariables;
     private IScriptDescription scriptDesc;
 
-    public ScriptOperator(IScriptDescription scriptDesc, ArrayList<LogicalVariable> inputVariables,
-            ArrayList<LogicalVariable> outputVariables) {
+    public ScriptOperator(IScriptDescription scriptDesc, List<LogicalVariable> inputVariables,
+            List<LogicalVariable> outputVariables) {
         this.inputVariables = inputVariables;
         this.outputVariables = outputVariables;
         this.scriptDesc = scriptDesc;
     }
 
-    public ArrayList<LogicalVariable> getInputVariables() {
+    public List<LogicalVariable> getInputVariables() {
         return inputVariables;
     }
 
-    public ArrayList<LogicalVariable> getOutputVariables() {
+    public List<LogicalVariable> getOutputVariables() {
         return outputVariables;
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java
index 2f3373c..8a8d1f2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SelectOperator.java
@@ -122,4 +122,4 @@
     public boolean requiresVariableReferenceExpressions() {
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SinkOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SinkOperator.java
index bfd2df7..af85fdd7 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SinkOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SinkOperator.java
@@ -19,10 +19,8 @@
 package org.apache.hyracks.algebricks.core.algebra.operators.logical;
 
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Triple;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
@@ -30,7 +28,6 @@
 import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypeEnvPointer;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
-import org.apache.hyracks.algebricks.core.algebra.typing.NonPropagatingTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.typing.OpRefTypeEnvPointer;
 import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
@@ -44,14 +41,15 @@
         for (int i = 0; i < inputs.size(); i++) {
             for (LogicalVariable v : inputs.get(i).getValue().getSchema()) {
                 if (!schema.contains(v))
-                	schema.add(v);
+                    schema.add(v);
             }
 
         }
     }
 
     @Override
-    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform) throws AlgebricksException {
+    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform transform)
+            throws AlgebricksException {
         return false;
     }
 
@@ -72,13 +70,13 @@
 
     @Override
     public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
-      ITypeEnvPointer[] envPointers = new ITypeEnvPointer[inputs.size()];
-      for (int i = 0; i < inputs.size(); i++) {
-          envPointers[i] = new OpRefTypeEnvPointer(inputs.get(i), ctx);
-      }
-      PropagatingTypeEnvironment env = new PropagatingTypeEnvironment(ctx.getExpressionTypeComputer(),
-              ctx.getNullableTypeComputer(), ctx.getMetadataProvider(), TypePropagationPolicy.ALL, envPointers);
-      return env;
+        ITypeEnvPointer[] envPointers = new ITypeEnvPointer[inputs.size()];
+        for (int i = 0; i < inputs.size(); i++) {
+            envPointers[i] = new OpRefTypeEnvPointer(inputs.get(i), ctx);
+        }
+        PropagatingTypeEnvironment env = new PropagatingTypeEnvironment(ctx.getExpressionTypeComputer(),
+                ctx.getNullableTypeComputer(), ctx.getMetadataProvider(), TypePropagationPolicy.ALL, envPointers);
+        return env;
 
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SubplanOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SubplanOperator.java
index 0659365..cf11b3e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SubplanOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SubplanOperator.java
@@ -16,100 +16,100 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.core.algebra.operators.logical;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-import org.apache.commons.lang3.mutable.MutableObject;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
-import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
-import org.apache.hyracks.algebricks.core.algebra.properties.TypePropagationPolicy;
-import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
-import org.apache.hyracks.algebricks.core.algebra.typing.ITypeEnvPointer;
-import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
-import org.apache.hyracks.algebricks.core.algebra.typing.OpRefTypeEnvPointer;
-import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
-import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
-
-public class SubplanOperator extends AbstractOperatorWithNestedPlans {
-
-    public SubplanOperator() {
-        super();
-    }
-
-    public SubplanOperator(List<ILogicalPlan> plans) {
-        super(plans);
-    }
-
-    public SubplanOperator(ILogicalOperator planRoot) {
-        ArrayList<Mutable<ILogicalOperator>> roots = new ArrayList<Mutable<ILogicalOperator>>(1);
-        roots.add(new MutableObject<ILogicalOperator>(planRoot));
-        nestedPlans.add(new ALogicalPlanImpl(roots));
-    }
-
-    public void setRootOp(Mutable<ILogicalOperator> opRef) {
-        ILogicalPlan p = new ALogicalPlanImpl(opRef);
-        nestedPlans.add(p);
-    }
-
-    @Override
-    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) {
-        // do nothing
-        return false;
-    }
-
-    @Override
-    public LogicalOperatorTag getOperatorTag() {
-        return LogicalOperatorTag.SUBPLAN;
-    }
-
-    @Override
-    public VariablePropagationPolicy getVariablePropagationPolicy() {
-        return VariablePropagationPolicy.ADDNEWVARIABLES;
-    }
-
-    @Override
-    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
-        return visitor.visitSubplanOperator(this, arg);
-    }
-
-    @Override
-    public void getProducedVariablesExceptNestedPlans(Collection<LogicalVariable> vars) {
-        // do nothing
-    }
-
-    @Override
-    public void getUsedVariablesExceptNestedPlans(Collection<LogicalVariable> vars) {
-        // do nothing
-    }
-
-    @Override
-    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
-        int n = 0;
-        for (ILogicalPlan p : nestedPlans) {
-            n += p.getRoots().size();
-        }
-        ITypeEnvPointer[] envPointers = new ITypeEnvPointer[n + 1];
-        envPointers[0] = new OpRefTypeEnvPointer(inputs.get(0), ctx);
-        int i = 1;
-        for (ILogicalPlan p : nestedPlans) {
-            for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                envPointers[i] = new OpRefTypeEnvPointer(r, ctx);
-                i++;
-            }
-        }
-        return new PropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getNullableTypeComputer(),
-                ctx.getMetadataProvider(), TypePropagationPolicy.LEFT_OUTER, envPointers);
-    }
-
-}
+package org.apache.hyracks.algebricks.core.algebra.operators.logical;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
+import org.apache.hyracks.algebricks.core.algebra.properties.TypePropagationPolicy;
+import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypeEnvPointer;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.typing.OpRefTypeEnvPointer;
+import org.apache.hyracks.algebricks.core.algebra.typing.PropagatingTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+
+public class SubplanOperator extends AbstractOperatorWithNestedPlans {
+
+    public SubplanOperator() {
+        super();
+    }
+
+    public SubplanOperator(List<ILogicalPlan> plans) {
+        super(plans);
+    }
+
+    public SubplanOperator(ILogicalOperator planRoot) {
+        ArrayList<Mutable<ILogicalOperator>> roots = new ArrayList<Mutable<ILogicalOperator>>(1);
+        roots.add(new MutableObject<ILogicalOperator>(planRoot));
+        nestedPlans.add(new ALogicalPlanImpl(roots));
+    }
+
+    public void setRootOp(Mutable<ILogicalOperator> opRef) {
+        ILogicalPlan p = new ALogicalPlanImpl(opRef);
+        nestedPlans.add(p);
+    }
+
+    @Override
+    public boolean acceptExpressionTransform(ILogicalExpressionReferenceTransform visitor) {
+        // do nothing
+        return false;
+    }
+
+    @Override
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.SUBPLAN;
+    }
+
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return VariablePropagationPolicy.ADDNEWVARIABLES;
+    }
+
+    @Override
+    public <R, T> R accept(ILogicalOperatorVisitor<R, T> visitor, T arg) throws AlgebricksException {
+        return visitor.visitSubplanOperator(this, arg);
+    }
+
+    @Override
+    public void getProducedVariablesExceptNestedPlans(Collection<LogicalVariable> vars) {
+        // do nothing
+    }
+
+    @Override
+    public void getUsedVariablesExceptNestedPlans(Collection<LogicalVariable> vars) {
+        // do nothing
+    }
+
+    @Override
+    public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
+        int n = 0;
+        for (ILogicalPlan p : nestedPlans) {
+            n += p.getRoots().size();
+        }
+        ITypeEnvPointer[] envPointers = new ITypeEnvPointer[n + 1];
+        envPointers[0] = new OpRefTypeEnvPointer(inputs.get(0), ctx);
+        int i = 1;
+        for (ILogicalPlan p : nestedPlans) {
+            for (Mutable<ILogicalOperator> r : p.getRoots()) {
+                envPointers[i] = new OpRefTypeEnvPointer(r, ctx);
+                i++;
+            }
+        }
+        return new PropagatingTypeEnvironment(ctx.getExpressionTypeComputer(), ctx.getNullableTypeComputer(),
+                ctx.getMetadataProvider(), TypePropagationPolicy.LEFT_OUTER, envPointers);
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/TokenizeOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/TokenizeOperator.java
index e1a793c..c69ead7 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/TokenizeOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/TokenizeOperator.java
@@ -29,7 +29,7 @@
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSourceIndex;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
index 881f6ae..89e2423 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
@@ -21,34 +21,20 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
 import org.apache.hyracks.algebricks.core.algebra.typing.NonPropagatingTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
 
-/**
- * This operator may go away after we add indexes to Algebricks.
- */
-public class UnnestMapOperator extends AbstractUnnestOperator {
-
-    private final List<Object> variableTypes; // TODO: get rid of this and  deprecate UnnestMap
-    private boolean propagateInput;
-
-    private List<Mutable<ILogicalExpression>> additionalFilteringExpressions;
-    private List<LogicalVariable> minFilterVars;
-    private List<LogicalVariable> maxFilterVars;
+public class UnnestMapOperator extends AbstractUnnestMapOperator {
 
     public UnnestMapOperator(List<LogicalVariable> variables, Mutable<ILogicalExpression> expression,
             List<Object> variableTypes, boolean propagateInput) {
-        super(variables, expression);
-        this.variableTypes = variableTypes;
-        this.propagateInput = propagateInput;
+        super(variables, expression, variableTypes, propagateInput);
     }
 
     @Override
@@ -61,31 +47,8 @@
         return visitor.visitUnnestMapOperator(this, arg);
     }
 
-    /**
-     * UnnestMap doesn't propagate input variables, because currently it is only
-     * used to search indexes. In the future, it would be nice to have the
-     * choice to propagate input variables or not.
-     */
-    @Override
-    public VariablePropagationPolicy getVariablePropagationPolicy() {
-        return new VariablePropagationPolicy() {
-            @Override
-            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
-                    throws AlgebricksException {
-                if (propagateInput) {
-                    target.addAllVariables(sources[0]);
-                }
-                for (LogicalVariable v : variables) {
-                    target.addVariable(v);
-                }
-            }
-        };
-    }
-
-    public List<Object> getVariableTypes() {
-        return variableTypes;
-    }
-
+    // When propagateInput is true,
+    // this operator propagates all input variables.
     @Override
     public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
         IVariableTypeEnvironment env = null;
@@ -101,38 +64,4 @@
         return env;
     }
 
-    public boolean propagatesInput() {
-        return propagateInput;
-    }
-
-    public List<LogicalVariable> getMinFilterVars() {
-        return minFilterVars;
-    }
-
-    public void setMinFilterVars(List<LogicalVariable> minFilterVars) {
-        this.minFilterVars = minFilterVars;
-    }
-
-    public List<LogicalVariable> getMaxFilterVars() {
-        return maxFilterVars;
-    }
-
-    public void setMaxFilterVars(List<LogicalVariable> maxFilterVars) {
-        this.maxFilterVars = maxFilterVars;
-    }
-
-    public void setAdditionalFilteringExpressions(List<Mutable<ILogicalExpression>> additionalFilteringExpressions) {
-        this.additionalFilteringExpressions = additionalFilteringExpressions;
-    }
-
-    public List<Mutable<ILogicalExpression>> getAdditionalFilteringExpressions() {
-        return additionalFilteringExpressions;
-    }
-
-    /*
-    @Override
-    public boolean isMap() {
-        return !propagateInput;
-    }
-    */
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
index aded8a9..e90298d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
@@ -18,90 +18,26 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.logical;
 
-import java.util.ArrayList;
-
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
 
-public class UnnestOperator extends AbstractUnnestOperator {
-
-    private LogicalVariable positionalVariable;
-
-    /**
-     * Used to set the position offset for positional variable
-     */
-    private ILogicalExpression positionOffsetExpr;
-
-    /**
-     * Specify the writer of the positional variable
-     */
-    private IUnnestingPositionWriter positionWriter;
-
-    /**
-     * Specify the type of the positional variable
-     */
-    private Object positionalVariableType;
+public class UnnestOperator extends AbstractUnnestNonMapOperator {
 
     public UnnestOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression) {
-        super(makeSingletonList(variable), expression);
+        super(variable, expression);
     }
 
     public UnnestOperator(LogicalVariable variable, Mutable<ILogicalExpression> expression,
-            LogicalVariable positionalVariable, Object positionalVariableType, IUnnestingPositionWriter positionWriter) {
-        this(variable, expression);
-        this.setPositionalVariable(positionalVariable);
-        this.setPositionalVariableType(positionalVariableType);
-        this.setPositionWriter(positionWriter);
-    }
-
-    @Override
-    public LogicalOperatorTag getOperatorTag() {
-        return LogicalOperatorTag.UNNEST;
-    }
-
-    public LogicalVariable getVariable() {
-        return variables.get(0);
-    }
-
-    public void setPositionalVariable(LogicalVariable positionalVariable) {
-        this.positionalVariable = positionalVariable;
-    }
-
-    public LogicalVariable getPositionalVariable() {
-        return positionalVariable;
-    }
-
-    public void setPositionWriter(IUnnestingPositionWriter positionWriter) {
-        this.positionWriter = positionWriter;
-    }
-
-    public IUnnestingPositionWriter getPositionWriter() {
-        return positionalVariable != null ? positionWriter : null;
-    }
-
-    public void setPositionalVariableType(Object positionalVariableType) {
-        this.positionalVariableType = positionalVariableType;
-    }
-
-    public Object getPositionalVariableType() {
-        return positionalVariableType;
-    }
-
-    public void setPositionOffsetExpr(ILogicalExpression posOffsetExpr) {
-        this.positionOffsetExpr = posOffsetExpr;
-    }
-
-    public ILogicalExpression getPositionOffsetExpr() {
-        return this.positionOffsetExpr;
+            LogicalVariable positionalVariable, Object positionalVariableType,
+            IUnnestingPositionWriter positionWriter) {
+        super(variable, expression, positionalVariable, positionalVariableType, positionWriter);
     }
 
     @Override
@@ -109,12 +45,6 @@
         return visitor.visitUnnestOperator(this, arg);
     }
 
-    private static <E> ArrayList<E> makeSingletonList(E item) {
-        ArrayList<E> array = new ArrayList<E>(1);
-        array.add(item);
-        return array;
-    }
-
     @Override
     public IVariableTypeEnvironment computeOutputTypeEnvironment(ITypingContext ctx) throws AlgebricksException {
         IVariableTypeEnvironment env = createPropagatingAllInputsTypeEnvironment(ctx);
@@ -127,22 +57,7 @@
     }
 
     @Override
-    public VariablePropagationPolicy getVariablePropagationPolicy() {
-        return new VariablePropagationPolicy() {
-
-            @Override
-            public void propagateVariables(IOperatorSchema target, IOperatorSchema... sources)
-                    throws AlgebricksException {
-                if (sources.length > 0) {
-                    target.addAllVariables(sources[0]);
-                }
-                for (LogicalVariable v : variables) {
-                    target.addVariable(v);
-                }
-                if (positionalVariable != null) {
-                    target.addVariable(positionalVariable);
-                }
-            }
-        };
+    public LogicalOperatorTag getOperatorTag() {
+        return LogicalOperatorTag.UNNEST;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/CardinalityInferenceVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/CardinalityInferenceVisitor.java
new file mode 100644
index 0000000..e90a685
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/CardinalityInferenceVisitor.java
@@ -0,0 +1,261 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical.visitors;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistributeResultOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SinkOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.TokenizeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteResultOperator;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+
+/**
+ * A visitor that provides the basic inference of tuple cardinalities of an
+ * operator's output. There are only two cases: 1. the cardinality is one in the
+ * worst case; 2. the cardinality is some unknown value.
+ */
+public class CardinalityInferenceVisitor implements ILogicalOperatorVisitor<Long, Void> {
+    private static final Long ONE = 1L;
+    private static final Long UNKNOWN = 1000L;
+
+    @Override
+    public Long visitAggregateOperator(AggregateOperator op, Void arg) throws AlgebricksException {
+        return ONE;
+    }
+
+    @Override
+    public Long visitRunningAggregateOperator(RunningAggregateOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, Void arg) throws AlgebricksException {
+        // Empty tuple source sends one empty tuple to kick off the pipeline.
+        return ONE;
+    }
+
+    @Override
+    public Long visitGroupByOperator(GroupByOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitLimitOperator(LimitOperator op, Void arg) throws AlgebricksException {
+        // This is only a worst-case estimate
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitInnerJoinOperator(InnerJoinOperator op, Void arg) throws AlgebricksException {
+        return visitJoin(op, arg);
+    }
+
+    @Override
+    public Long visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Void arg) throws AlgebricksException {
+        return visitJoin(op, arg);
+    }
+
+    @Override
+    public Long visitNestedTupleSourceOperator(NestedTupleSourceOperator op, Void arg) throws AlgebricksException {
+        return ONE;
+    }
+
+    @Override
+    public Long visitOrderOperator(OrderOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitAssignOperator(AssignOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitSelectOperator(SelectOperator op, Void arg) throws AlgebricksException {
+        // This is only a worst-case inference.
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitExtensionOperator(ExtensionOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitProjectOperator(ProjectOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitPartitioningSplitOperator(PartitioningSplitOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitReplicateOperator(ReplicateOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitMaterializeOperator(MaterializeOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitSubplanOperator(SubplanOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitSinkOperator(SinkOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitUnionOperator(UnionAllOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitOuterUnnestOperator(OuterUnnestOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitUnnestMapOperator(UnnestMapOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitDataScanOperator(DataSourceScanOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitDistinctOperator(DistinctOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitExchangeOperator(ExchangeOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitWriteOperator(WriteOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitDistributeResultOperator(DistributeResultOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitWriteResultOperator(WriteResultOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg) throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Void arg)
+            throws AlgebricksException {
+        return op.getInputs().get(0).getValue().accept(this, arg);
+    }
+
+    @Override
+    public Long visitTokenizeOperator(TokenizeOperator op, Void arg) throws AlgebricksException {
+        return UNKNOWN;
+    }
+
+    @Override
+    public Long visitIntersectOperator(IntersectOperator op, Void arg) throws AlgebricksException {
+        long cardinality = UNKNOWN;
+        for (Mutable<ILogicalOperator> inputOpRef : op.getInputs()) {
+            Long branchCardinality = inputOpRef.getValue().accept(this, arg);
+            if (branchCardinality < cardinality) {
+                cardinality = branchCardinality;
+            }
+        }
+        return cardinality;
+    }
+
+    private long visitJoin(ILogicalOperator op, Void arg) throws AlgebricksException {
+        long cardinality = 1L;
+        for (Mutable<ILogicalOperator> inputOpRef : op.getInputs()) {
+            cardinality *= inputOpRef.getValue().accept(this, arg);
+        }
+        if (cardinality > ONE) {
+            cardinality = UNKNOWN;
+        }
+        return cardinality;
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java
index 6d00fab..9a6411b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/FDsAndEquivClassesVisitor.java
@@ -29,7 +29,6 @@
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -55,16 +54,18 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -311,9 +312,9 @@
             }
         }
         if (changed) {
-            AlgebricksConfig.ALGEBRICKS_LOGGER.fine(">>>> Group-by list changed from "
-                    + GroupByOperator.veListToString(gByList) + " to " + GroupByOperator.veListToString(newGbyList)
-                    + ".\n");
+            AlgebricksConfig.ALGEBRICKS_LOGGER
+                    .fine(">>>> Group-by list changed from " + GroupByOperator.veListToString(gByList) + " to "
+                            + GroupByOperator.veListToString(newGbyList) + ".\n");
         }
         gByList.clear();
         gByList.addAll(newGbyList);
@@ -475,12 +476,40 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        setEmptyFDsEqClasses(op, ctx);
+        return null;
+    }
+
+    @Override
     public Void visitUnnestMapOperator(UnnestMapOperator op, IOptimizationContext ctx) throws AlgebricksException {
         fdsEqClassesForAbstractUnnestOperator(op, ctx);
         return null;
     }
 
     @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        // Unlike the unnest-map operator, we propagate all inputs since
+        // propagateInuput is always true.
+        Map<LogicalVariable, EquivalenceClass> equivalenceClasses = new HashMap<LogicalVariable, EquivalenceClass>();
+        List<FunctionalDependency> functionalDependencies = new ArrayList<FunctionalDependency>();
+        ctx.putEquivalenceClassMap(op, equivalenceClasses);
+        ctx.putFDList(op, functionalDependencies);
+        ILogicalOperator childOp = op.getInputs().get(0).getValue();
+        functionalDependencies.addAll(getOrComputeFDs(childOp, ctx));
+        equivalenceClasses.putAll(getOrComputeEqClasses(childOp, ctx));
+
+        // Like Left-Outer join case, we add functional dependencies.
+        List<LogicalVariable> leftSideVars = new ArrayList<LogicalVariable>();
+        List<LogicalVariable> producedVars = new ArrayList<LogicalVariable>();
+        VariableUtilities.getUsedVariables(op, leftSideVars);
+        VariableUtilities.getProducedVariables(op, leftSideVars);
+        functionalDependencies.add(new FunctionalDependency(leftSideVars, producedVars));
+        return null;
+    }
+
+    @Override
     public Void visitUnnestOperator(UnnestOperator op, IOptimizationContext ctx) throws AlgebricksException {
         fdsEqClassesForAbstractUnnestOperator(op, ctx);
         return null;
@@ -509,13 +538,14 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, IOptimizationContext ctx) throws AlgebricksException {
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
         propagateFDsAndEquivClasses(op, ctx);
         return null;
     }
 
     @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, IOptimizationContext ctx)
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, IOptimizationContext ctx)
             throws AlgebricksException {
         propagateFDsAndEquivClasses(op, ctx);
         return null;
@@ -572,13 +602,14 @@
     }
 
     /***
-     * Propagated equivalent classes from the child to the current operator, based
-     * on the used variables of the current operator.
-     * 
+     * Propagated equivalent classes from the child to the current operator,
+     * based on the used variables of the current operator.
+     *
      * @param op
      *            , the current operator
      * @param ctx
-     *            , the optimization context which keeps track of all equivalent classes.
+     *            , the optimization context which keeps track of all equivalent
+     *            classes.
      * @param usedVariables
      *            , used variables.
      * @throws AlgebricksException
@@ -620,9 +651,12 @@
             }
         }
 
-        // Propagates equivalent classes that contain expressions that use the used variables.
-        // Note that for the case variable $v is not in the used variables but it is
-        // equivalent to field-access($t, i) and $t is a used variable, the equivalent
+        // Propagates equivalent classes that contain expressions that use the
+        // used variables.
+        // Note that for the case variable $v is not in the used variables but
+        // it is
+        // equivalent to field-access($t, i) and $t is a used variable, the
+        // equivalent
         // class should still be propagated (kept).
         Set<LogicalVariable> usedVarSet = new HashSet<LogicalVariable>(usedVariables);
         for (Entry<LogicalVariable, EquivalenceClass> entry : chldClasses.entrySet()) {
@@ -635,7 +669,8 @@
                 if (!exprUsedVars.isEmpty()) {
                     for (LogicalVariable v : ec.getMembers()) {
                         eqClasses.put(v, ec);
-                        // If variable members contain a used variable, the representative
+                        // If variable members contain a used variable, the
+                        // representative
                         // variable should be a used variable.
                         if (usedVarSet.contains(v)) {
                             ec.setVariableRepresentative(v);
@@ -669,8 +704,9 @@
         Map<LogicalVariable, EquivalenceClass> eqClasses = getOrCreateEqClasses(op, ctx);
         Map<LogicalVariable, EquivalenceClass> propagatedEqClasses = getOrComputeEqClasses(inp1, ctx);
         /**
-         * The original eq classes of unnest-map are only for produced variables, therefore
-         * eqClasses and propagatedEqClasses do not have overlaps.
+         * The original eq classes of unnest-map are only for produced
+         * variables, therefore eqClasses and propagatedEqClasses do not have
+         * overlaps.
          */
         eqClasses.putAll(propagatedEqClasses);
         ctx.putEquivalenceClassMap(op, eqClasses);
@@ -730,17 +766,10 @@
         return null;
     }
 
-    @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op, IOptimizationContext ctx)
-            throws AlgebricksException {
-        propagateFDsAndEquivClasses(op, ctx);
-        return null;
-    }
-
     /**
      * Propagate equivalences that carried in expressions to the variables that
      * they are assigned to.
-     * 
+     *
      * @param eqClasses
      *            an equivalent class map
      * @param assignExprs
@@ -753,15 +782,27 @@
         for (int assignVarIndex = 0; assignVarIndex < assignVars.size(); ++assignVarIndex) {
             LogicalVariable var = assignVars.get(assignVarIndex);
             ILogicalExpression expr = assignExprs.get(assignVarIndex).getValue();
+            Map<LogicalVariable, EquivalenceClass> newVarEqcMap = new HashMap<LogicalVariable, EquivalenceClass>();
             for (Entry<LogicalVariable, EquivalenceClass> entry : eqClasses.entrySet()) {
                 EquivalenceClass eqc = entry.getValue();
-                // If the equivalence class contains the right-hand-side expression,
-                // the left-hand-side variable is added into the equivalence class.
+                // If the equivalence class contains the right-hand-side
+                // expression,
+                // the left-hand-side variable is added into the equivalence
+                // class.
                 if (eqc.contains(expr)) {
                     eqc.addMember(var);
+                    newVarEqcMap.put(var, eqc); // Add var as a map key for the
+                                                // equivalence class.
                 }
             }
+            eqClasses.putAll(newVarEqcMap);
         }
     }
 
-}
\ No newline at end of file
+    @Override
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        propagateFDsAndEquivClasses(op, ctx);
+        return null;
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsExpressionStatefulVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsExpressionStatefulVisitor.java
new file mode 100644
index 0000000..1a7505b
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsExpressionStatefulVisitor.java
@@ -0,0 +1,82 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical.visitors;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
+
+/**
+ * This visitor determines whether a logical expression contains any stateful
+ * function call expression.
+ */
+public class IsExpressionStatefulVisitor implements ILogicalExpressionVisitor<Boolean, Void> {
+
+    @Override
+    public Boolean visitConstantExpression(ConstantExpression expr, Void arg) throws AlgebricksException {
+        return false;
+    }
+
+    @Override
+    public Boolean visitVariableReferenceExpression(VariableReferenceExpression expr, Void arg)
+            throws AlgebricksException {
+        return false;
+    }
+
+    @Override
+    public Boolean visitAggregateFunctionCallExpression(AggregateFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        return visitFunctionExpression(expr, arg);
+    }
+
+    @Override
+    public Boolean visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        return visitFunctionExpression(expr, arg);
+    }
+
+    @Override
+    public Boolean visitStatefulFunctionCallExpression(StatefulFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        return true;
+    }
+
+    @Override
+    public Boolean visitUnnestingFunctionCallExpression(UnnestingFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        return visitFunctionExpression(expr, arg);
+    }
+
+    private boolean visitFunctionExpression(AbstractFunctionCallExpression expr, Void arg) throws AlgebricksException {
+        for (Mutable<ILogicalExpression> argRef : expr.getArguments()) {
+            if (argRef.getValue().accept(this, arg)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
index a982ed4..5ae116b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
@@ -25,7 +25,6 @@
 import java.util.Map.Entry;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
@@ -43,17 +42,19 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -83,8 +84,9 @@
     @Override
     public Boolean visitAggregateOperator(AggregateOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.AGGREGATE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.AGGREGATE) {
             return Boolean.FALSE;
+        }
         AggregateOperator aggOpArg = (AggregateOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(
                 getPairList(op.getVariables(), op.getExpressions()),
@@ -96,8 +98,9 @@
     public Boolean visitRunningAggregateOperator(RunningAggregateOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.RUNNINGAGGREGATE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.RUNNINGAGGREGATE) {
             return Boolean.FALSE;
+        }
         RunningAggregateOperator aggOpArg = (RunningAggregateOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(
                 getPairList(op.getVariables(), op.getExpressions()),
@@ -109,16 +112,18 @@
     public Boolean visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) copyAndSubstituteVar(op, arg);
-        if (aop.getOperatorTag() != LogicalOperatorTag.EMPTYTUPLESOURCE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.EMPTYTUPLESOURCE) {
             return Boolean.FALSE;
+        }
         return Boolean.TRUE;
     }
 
     @Override
     public Boolean visitExtensionOperator(ExtensionOperator op, ILogicalOperator arg) throws AlgebricksException {
         ExtensionOperator aop = (ExtensionOperator) copyAndSubstituteVar(op, arg);
-        if (aop.getOperatorTag() != LogicalOperatorTag.EXTENSION_OPERATOR)
+        if (aop.getOperatorTag() != LogicalOperatorTag.EXTENSION_OPERATOR) {
             return Boolean.FALSE;
+        }
         return Boolean.TRUE;
     }
 
@@ -128,8 +133,9 @@
         // require the same physical operator, otherwise delivers different data
         // properties
         if (aop.getOperatorTag() != LogicalOperatorTag.GROUP
-                || aop.getPhysicalOperator().getOperatorTag() != op.getPhysicalOperator().getOperatorTag())
+                || aop.getPhysicalOperator().getOperatorTag() != op.getPhysicalOperator().getOperatorTag()) {
             return Boolean.FALSE;
+        }
 
         List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> keyLists = op.getGroupByList();
         GroupByOperator gbyOpArg = (GroupByOperator) copyAndSubstituteVar(op, arg);
@@ -145,12 +151,14 @@
 
         boolean isomorphic = VariableUtilities.varListEqualUnordered(listLeft, listRight);
 
-        if (!isomorphic)
+        if (!isomorphic) {
             return Boolean.FALSE;
+        }
         int sizeOp = op.getNestedPlans().size();
         int sizeArg = gbyOpArg.getNestedPlans().size();
-        if (sizeOp != sizeArg)
+        if (sizeOp != sizeArg) {
             return Boolean.FALSE;
+        }
 
         GroupByOperator argOp = (GroupByOperator) arg;
         List<ILogicalPlan> plans = op.getNestedPlans();
@@ -158,14 +166,16 @@
         for (int i = 0; i < plans.size(); i++) {
             List<Mutable<ILogicalOperator>> roots = plans.get(i).getRoots();
             List<Mutable<ILogicalOperator>> rootsArg = plansArg.get(i).getRoots();
-            if (roots.size() != rootsArg.size())
+            if (roots.size() != rootsArg.size()) {
                 return Boolean.FALSE;
+            }
             for (int j = 0; j < roots.size(); j++) {
                 ILogicalOperator topOp1 = roots.get(j).getValue();
                 ILogicalOperator topOp2 = rootsArg.get(j).getValue();
                 isomorphic = IsomorphismUtilities.isOperatorIsomorphicPlanSegment(topOp1, topOp2);
-                if (!isomorphic)
+                if (!isomorphic) {
                     return Boolean.FALSE;
+                }
             }
         }
         return isomorphic;
@@ -174,11 +184,13 @@
     @Override
     public Boolean visitLimitOperator(LimitOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.LIMIT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.LIMIT) {
             return Boolean.FALSE;
+        }
         LimitOperator limitOpArg = (LimitOperator) copyAndSubstituteVar(op, arg);
-        if (op.getOffset() != limitOpArg.getOffset())
+        if (op.getOffset() != limitOpArg.getOffset()) {
             return Boolean.FALSE;
+        }
         boolean isomorphic = op.getMaxObjects().getValue().equals(limitOpArg.getMaxObjects().getValue());
         return isomorphic;
     }
@@ -186,8 +198,9 @@
     @Override
     public Boolean visitInnerJoinOperator(InnerJoinOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.INNERJOIN)
+        if (aop.getOperatorTag() != LogicalOperatorTag.INNERJOIN) {
             return Boolean.FALSE;
+        }
         InnerJoinOperator joinOpArg = (InnerJoinOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = op.getCondition().getValue().equals(joinOpArg.getCondition().getValue());
         return isomorphic;
@@ -197,8 +210,9 @@
     public Boolean visitLeftOuterJoinOperator(LeftOuterJoinOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.LEFTOUTERJOIN)
+        if (aop.getOperatorTag() != LogicalOperatorTag.LEFTOUTERJOIN) {
             return Boolean.FALSE;
+        }
         LeftOuterJoinOperator joinOpArg = (LeftOuterJoinOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = op.getCondition().getValue().equals(joinOpArg.getCondition().getValue());
         return isomorphic;
@@ -208,16 +222,18 @@
     public Boolean visitNestedTupleSourceOperator(NestedTupleSourceOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.NESTEDTUPLESOURCE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.NESTEDTUPLESOURCE) {
             return Boolean.FALSE;
+        }
         return Boolean.TRUE;
     }
 
     @Override
     public Boolean visitOrderOperator(OrderOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.ORDER)
+        if (aop.getOperatorTag() != LogicalOperatorTag.ORDER) {
             return Boolean.FALSE;
+        }
         OrderOperator orderOpArg = (OrderOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = compareIOrderAndExpressions(op.getOrderExpressions(), orderOpArg.getOrderExpressions());
         return isomorphic;
@@ -226,8 +242,9 @@
     @Override
     public Boolean visitAssignOperator(AssignOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.ASSIGN)
+        if (aop.getOperatorTag() != LogicalOperatorTag.ASSIGN) {
             return Boolean.FALSE;
+        }
         AssignOperator assignOpArg = (AssignOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(
                 getPairList(op.getVariables(), op.getExpressions()),
@@ -238,8 +255,9 @@
     @Override
     public Boolean visitSelectOperator(SelectOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.SELECT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.SELECT) {
             return Boolean.FALSE;
+        }
         SelectOperator selectOpArg = (SelectOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = op.getCondition().getValue().equals(selectOpArg.getCondition().getValue());
         return isomorphic;
@@ -248,8 +266,9 @@
     @Override
     public Boolean visitProjectOperator(ProjectOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.PROJECT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.PROJECT) {
             return Boolean.FALSE;
+        }
         ProjectOperator projectOpArg = (ProjectOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), projectOpArg.getVariables());
         return isomorphic;
@@ -259,8 +278,9 @@
     public Boolean visitPartitioningSplitOperator(PartitioningSplitOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.PARTITIONINGSPLIT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.PARTITIONINGSPLIT) {
             return Boolean.FALSE;
+        }
         PartitioningSplitOperator partitionOpArg = (PartitioningSplitOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = compareExpressions(op.getExpressions(), partitionOpArg.getExpressions());
         return isomorphic;
@@ -269,24 +289,27 @@
     @Override
     public Boolean visitReplicateOperator(ReplicateOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.REPLICATE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.REPLICATE) {
             return Boolean.FALSE;
+        }
         return Boolean.TRUE;
     }
 
     @Override
     public Boolean visitMaterializeOperator(MaterializeOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.MATERIALIZE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.MATERIALIZE) {
             return Boolean.FALSE;
+        }
         return Boolean.TRUE;
     }
 
     @Override
     public Boolean visitScriptOperator(ScriptOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.SCRIPT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.SCRIPT) {
             return Boolean.FALSE;
+        }
         ScriptOperator scriptOpArg = (ScriptOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = op.getScriptDescription().equals(scriptOpArg.getScriptDescription());
         return isomorphic;
@@ -295,22 +318,25 @@
     @Override
     public Boolean visitSubplanOperator(SubplanOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.SUBPLAN)
+        if (aop.getOperatorTag() != LogicalOperatorTag.SUBPLAN) {
             return Boolean.FALSE;
+        }
         SubplanOperator subplanOpArg = (SubplanOperator) copyAndSubstituteVar(op, arg);
         List<ILogicalPlan> plans = op.getNestedPlans();
         List<ILogicalPlan> plansArg = subplanOpArg.getNestedPlans();
         for (int i = 0; i < plans.size(); i++) {
             List<Mutable<ILogicalOperator>> roots = plans.get(i).getRoots();
             List<Mutable<ILogicalOperator>> rootsArg = plansArg.get(i).getRoots();
-            if (roots.size() == rootsArg.size())
+            if (roots.size() == rootsArg.size()) {
                 return Boolean.FALSE;
+            }
             for (int j = 0; j < roots.size(); j++) {
                 ILogicalOperator topOp1 = roots.get(j).getValue();
                 ILogicalOperator topOp2 = rootsArg.get(j).getValue();
                 boolean isomorphic = IsomorphismUtilities.isOperatorIsomorphicPlanSegment(topOp1, topOp2);
-                if (!isomorphic)
+                if (!isomorphic) {
                     return Boolean.FALSE;
+                }
             }
         }
         return Boolean.TRUE;
@@ -319,26 +345,56 @@
     @Override
     public Boolean visitUnionOperator(UnionAllOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.UNIONALL)
+        if (aop.getOperatorTag() != LogicalOperatorTag.UNIONALL) {
             return Boolean.FALSE;
+        }
         UnionAllOperator unionOpArg = (UnionAllOperator) copyAndSubstituteVar(op, arg);
         List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> mapping = op.getVariableMappings();
         List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> mappingArg = unionOpArg.getVariableMappings();
-        if (mapping.size() != mappingArg.size())
+        if (mapping.size() != mappingArg.size()) {
             return Boolean.FALSE;
+        }
         return VariableUtilities.varListEqualUnordered(mapping, mappingArg);
     }
 
     @Override
+    public Boolean visitIntersectOperator(IntersectOperator op, ILogicalOperator arg) throws AlgebricksException {
+        if (op.getOperatorTag() != LogicalOperatorTag.INTERSECT) {
+            return Boolean.FALSE;
+        }
+        IntersectOperator intersetOpArg = (IntersectOperator) copyAndSubstituteVar(op, arg);
+        List<LogicalVariable> variables = op.getOutputVars();
+        List<LogicalVariable> variablesArg = intersetOpArg.getOutputVars();
+        if (variables.size() != variablesArg.size()) {
+            return Boolean.FALSE;
+        }
+        if (!VariableUtilities.varListEqualUnordered(variables, variablesArg)) {
+            return Boolean.FALSE;
+        }
+
+        if (op.getNumInput() != intersetOpArg.getNumInput()) {
+            return Boolean.FALSE;
+        }
+        for (int i = 0; i < op.getNumInput(); i++) {
+            if (!VariableUtilities.varListEqualUnordered(op.getInputVariables(i), intersetOpArg.getInputVariables(i))) {
+                return Boolean.FALSE;
+            }
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
     public Boolean visitUnnestOperator(UnnestOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.UNNEST)
+        if (aop.getOperatorTag() != LogicalOperatorTag.UNNEST) {
             return Boolean.FALSE;
+        }
         UnnestOperator unnestOpArg = (UnnestOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), unnestOpArg.getVariables())
                 && variableEqual(op.getPositionalVariable(), unnestOpArg.getPositionalVariable());
-        if (!isomorphic)
+        if (!isomorphic) {
             return Boolean.FALSE;
+        }
         isomorphic = op.getExpressionRef().getValue().equals(unnestOpArg.getExpressionRef().getValue());
         return isomorphic;
     }
@@ -346,24 +402,44 @@
     @Override
     public Boolean visitUnnestMapOperator(UnnestMapOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.UNNEST_MAP)
+        if (aop.getOperatorTag() != LogicalOperatorTag.UNNEST_MAP) {
             return Boolean.FALSE;
+        }
         UnnestMapOperator unnestOpArg = (UnnestMapOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), unnestOpArg.getVariables());
-        if (!isomorphic)
+        if (!isomorphic) {
             return Boolean.FALSE;
+        }
         isomorphic = op.getExpressionRef().getValue().equals(unnestOpArg.getExpressionRef().getValue());
         return isomorphic;
     }
 
     @Override
+    public Boolean visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
+        if (aop.getOperatorTag() != LogicalOperatorTag.LEFT_OUTER_UNNEST_MAP) {
+            return Boolean.FALSE;
+        }
+        LeftOuterUnnestMapOperator loUnnestOpArg = (LeftOuterUnnestMapOperator) copyAndSubstituteVar(op, arg);
+        boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), loUnnestOpArg.getVariables());
+        if (!isomorphic) {
+            return Boolean.FALSE;
+        }
+        isomorphic = op.getExpressionRef().getValue().equals(loUnnestOpArg.getExpressionRef().getValue());
+        return isomorphic;
+    }
+
+    @Override
     public Boolean visitDataScanOperator(DataSourceScanOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN)
+        if (aop.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN) {
             return Boolean.FALSE;
+        }
         DataSourceScanOperator argScan = (DataSourceScanOperator) arg;
-        if (!argScan.getDataSource().toString().equals(op.getDataSource().toString()))
+        if (!argScan.getDataSource().toString().equals(op.getDataSource().toString())) {
             return Boolean.FALSE;
+        }
         DataSourceScanOperator scanOpArg = (DataSourceScanOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), scanOpArg.getVariables())
                 && op.getDataSource().toString().equals(scanOpArg.getDataSource().toString());
@@ -373,8 +449,9 @@
     @Override
     public Boolean visitDistinctOperator(DistinctOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.DISTINCT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.DISTINCT) {
             return Boolean.FALSE;
+        }
         DistinctOperator distinctOpArg = (DistinctOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = compareExpressions(op.getExpressions(), distinctOpArg.getExpressions());
         return isomorphic;
@@ -383,36 +460,44 @@
     @Override
     public Boolean visitExchangeOperator(ExchangeOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.EXCHANGE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.EXCHANGE) {
             return Boolean.FALSE;
+        }
         // require the same partition property
-        if (!(op.getPhysicalOperator().getOperatorTag() == aop.getPhysicalOperator().getOperatorTag()))
+        if (!(op.getPhysicalOperator().getOperatorTag() == aop.getPhysicalOperator().getOperatorTag())) {
             return Boolean.FALSE;
+        }
         variableMapping.clear();
         IsomorphismUtilities.mapVariablesTopDown(op, arg, variableMapping);
         IPhysicalPropertiesVector properties = op.getPhysicalOperator().getDeliveredProperties();
         IPhysicalPropertiesVector propertiesArg = aop.getPhysicalOperator().getDeliveredProperties();
-        if (properties == null && propertiesArg == null)
+        if (properties == null && propertiesArg == null) {
             return Boolean.TRUE;
-        if (properties == null || propertiesArg == null)
+        }
+        if (properties == null || propertiesArg == null) {
             return Boolean.FALSE;
+        }
         IPartitioningProperty partProp = properties.getPartitioningProperty();
         IPartitioningProperty partPropArg = propertiesArg.getPartitioningProperty();
-        if (!partProp.getPartitioningType().equals(partPropArg.getPartitioningType()))
+        if (!partProp.getPartitioningType().equals(partPropArg.getPartitioningType())) {
             return Boolean.FALSE;
+        }
         List<LogicalVariable> columns = new ArrayList<LogicalVariable>();
         partProp.getColumns(columns);
         List<LogicalVariable> columnsArg = new ArrayList<LogicalVariable>();
         partPropArg.getColumns(columnsArg);
-        if (columns.size() != columnsArg.size())
+        if (columns.size() != columnsArg.size()) {
             return Boolean.FALSE;
-        if (columns.size() == 0)
+        }
+        if (columns.size() == 0) {
             return Boolean.TRUE;
+        }
         for (int i = 0; i < columnsArg.size(); i++) {
             LogicalVariable rightVar = columnsArg.get(i);
             LogicalVariable leftVar = variableMapping.get(rightVar);
-            if (leftVar != null)
+            if (leftVar != null) {
                 columnsArg.set(i, leftVar);
+            }
         }
         return VariableUtilities.varListEqualUnordered(columns, columnsArg);
     }
@@ -420,8 +505,9 @@
     @Override
     public Boolean visitWriteOperator(WriteOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.WRITE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.WRITE) {
             return Boolean.FALSE;
+        }
         WriteOperator writeOpArg = (WriteOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), writeOpArg.getSchema());
         return isomorphic;
@@ -431,8 +517,9 @@
     public Boolean visitDistributeResultOperator(DistributeResultOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.DISTRIBUTE_RESULT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.DISTRIBUTE_RESULT) {
             return Boolean.FALSE;
+        }
         DistributeResultOperator writeOpArg = (DistributeResultOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), writeOpArg.getSchema());
         return isomorphic;
@@ -441,53 +528,64 @@
     @Override
     public Boolean visitWriteResultOperator(WriteResultOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.WRITE_RESULT)
+        if (aop.getOperatorTag() != LogicalOperatorTag.WRITE_RESULT) {
             return Boolean.FALSE;
+        }
         WriteResultOperator writeOpArg = (WriteResultOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), writeOpArg.getSchema());
-        if (!op.getDataSource().equals(writeOpArg.getDataSource()))
+        if (!op.getDataSource().equals(writeOpArg.getDataSource())) {
             isomorphic = false;
-        if (!op.getPayloadExpression().equals(writeOpArg.getPayloadExpression()))
+        }
+        if (!op.getPayloadExpression().equals(writeOpArg.getPayloadExpression())) {
             isomorphic = false;
+        }
         return isomorphic;
     }
 
     @Override
-    public Boolean visitInsertDeleteOperator(InsertDeleteOperator op, ILogicalOperator arg) throws AlgebricksException {
-        AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.INSERT_DELETE)
-            return Boolean.FALSE;
-        InsertDeleteOperator insertOpArg = (InsertDeleteOperator) copyAndSubstituteVar(op, arg);
-        boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), insertOpArg.getSchema());
-        if (!op.getDataSource().equals(insertOpArg.getDataSource()))
-            isomorphic = false;
-        if (!op.getPayloadExpression().equals(insertOpArg.getPayloadExpression()))
-            isomorphic = false;
-        return isomorphic;
-    }
-
-    @Override
-    public Boolean visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, ILogicalOperator arg)
+    public Boolean visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.INDEX_INSERT_DELETE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.INSERT_DELETE_UPSERT) {
             return Boolean.FALSE;
-        IndexInsertDeleteOperator insertOpArg = (IndexInsertDeleteOperator) copyAndSubstituteVar(op, arg);
+        }
+        InsertDeleteUpsertOperator insertOpArg = (InsertDeleteUpsertOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), insertOpArg.getSchema());
-        if (!op.getDataSourceIndex().equals(insertOpArg.getDataSourceIndex()))
+        if (!op.getDataSource().equals(insertOpArg.getDataSource())) {
             isomorphic = false;
+        }
+        if (!op.getPayloadExpression().equals(insertOpArg.getPayloadExpression())) {
+            isomorphic = false;
+        }
+        return isomorphic;
+    }
+
+    @Override
+    public Boolean visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
+        if (aop.getOperatorTag() != LogicalOperatorTag.INDEX_INSERT_DELETE_UPSERT) {
+            return Boolean.FALSE;
+        }
+        IndexInsertDeleteUpsertOperator insertOpArg = (IndexInsertDeleteUpsertOperator) copyAndSubstituteVar(op, arg);
+        boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), insertOpArg.getSchema());
+        if (!op.getDataSourceIndex().equals(insertOpArg.getDataSourceIndex())) {
+            isomorphic = false;
+        }
         return isomorphic;
     }
 
     @Override
     public Boolean visitTokenizeOperator(TokenizeOperator op, ILogicalOperator arg) throws AlgebricksException {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
-        if (aop.getOperatorTag() != LogicalOperatorTag.TOKENIZE)
+        if (aop.getOperatorTag() != LogicalOperatorTag.TOKENIZE) {
             return Boolean.FALSE;
+        }
         TokenizeOperator tokenizeOpArg = (TokenizeOperator) copyAndSubstituteVar(op, arg);
         boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getSchema(), tokenizeOpArg.getSchema());
-        if (!op.getDataSourceIndex().equals(tokenizeOpArg.getDataSourceIndex()))
+        if (!op.getDataSourceIndex().equals(tokenizeOpArg.getDataSourceIndex())) {
             isomorphic = false;
+        }
         return isomorphic;
     }
 
@@ -498,33 +596,32 @@
 
     private Boolean compareExpressions(List<Mutable<ILogicalExpression>> opExprs,
             List<Mutable<ILogicalExpression>> argExprs) {
-        if (opExprs.size() != argExprs.size())
+        if (opExprs.size() != argExprs.size()) {
             return Boolean.FALSE;
+        }
         for (int i = 0; i < opExprs.size(); i++) {
             boolean isomorphic = opExprs.get(i).getValue().equals(argExprs.get(i).getValue());
-            if (!isomorphic)
+            if (!isomorphic) {
                 return Boolean.FALSE;
+            }
         }
         return Boolean.TRUE;
     }
 
-    @Override
-    public Boolean visitExternalDataLookupOperator(ExternalDataLookupOperator op, ILogicalOperator arg)
-            throws AlgebricksException {
-        return Boolean.FALSE;
-    }
-
     private Boolean compareIOrderAndExpressions(List<Pair<IOrder, Mutable<ILogicalExpression>>> opOrderExprs,
             List<Pair<IOrder, Mutable<ILogicalExpression>>> argOrderExprs) {
-        if (opOrderExprs.size() != argOrderExprs.size())
+        if (opOrderExprs.size() != argOrderExprs.size()) {
             return Boolean.FALSE;
+        }
         for (int i = 0; i < opOrderExprs.size(); i++) {
             boolean isomorphic = opOrderExprs.get(i).first.equals(argOrderExprs.get(i).first);
-            if (!isomorphic)
+            if (!isomorphic) {
                 return Boolean.FALSE;
+            }
             isomorphic = opOrderExprs.get(i).second.getValue().equals(argOrderExprs.get(i).second.getValue());
-            if (!isomorphic)
+            if (!isomorphic) {
                 return Boolean.FALSE;
+            }
         }
         return Boolean.TRUE;
     }
@@ -536,16 +633,18 @@
         IsomorphismUtilities.mapVariablesTopDown(op, argOp, variableMapping);
 
         List<LogicalVariable> liveVars = new ArrayList<LogicalVariable>();
-        if (argOp.getInputs().size() > 0)
+        if (argOp.getInputs().size() > 0) {
             for (int i = 0; i < argOp.getInputs().size(); i++)
                 VariableUtilities.getLiveVariables(argOp.getInputs().get(i).getValue(), liveVars);
+        }
         List<LogicalVariable> producedVars = new ArrayList<LogicalVariable>();
         VariableUtilities.getProducedVariables(argOp, producedVars);
         List<LogicalVariable> producedVarsNew = new ArrayList<LogicalVariable>();
         VariableUtilities.getProducedVariables(op, producedVarsNew);
 
-        if (producedVars.size() != producedVarsNew.size())
+        if (producedVars.size() != producedVarsNew.size()) {
             return newOp;
+        }
         for (Entry<LogicalVariable, LogicalVariable> map : variableMapping.entrySet()) {
             if (liveVars.contains(map.getKey())) {
                 VariableUtilities.substituteVariables(newOp, map.getKey(), map.getValue(), null);
@@ -559,8 +658,9 @@
     public List<Pair<LogicalVariable, ILogicalExpression>> getPairList(List<LogicalVariable> vars,
             List<Mutable<ILogicalExpression>> exprs) throws AlgebricksException {
         List<Pair<LogicalVariable, ILogicalExpression>> list = new ArrayList<Pair<LogicalVariable, ILogicalExpression>>();
-        if (vars.size() != exprs.size())
+        if (vars.size() != exprs.size()) {
             throw new AlgebricksException("variable list size does not equal to expression list size ");
+        }
         for (int i = 0; i < vars.size(); i++) {
             list.add(new Pair<LogicalVariable, ILogicalExpression>(vars.get(i), exprs.get(i).getValue()));
         }
@@ -568,12 +668,30 @@
     }
 
     private static boolean variableEqual(LogicalVariable var, LogicalVariable varArg) {
-        if (var == null && varArg == null)
+        if (var == null && varArg == null) {
             return true;
-        if (var.equals(varArg))
+        }
+        if (var.equals(varArg)) {
             return true;
-        else
+        } else {
             return false;
+        }
+    }
+
+    @Override
+    public Boolean visitOuterUnnestOperator(OuterUnnestOperator op, ILogicalOperator arg) throws AlgebricksException {
+        AbstractLogicalOperator aop = (AbstractLogicalOperator) arg;
+        if (aop.getOperatorTag() != LogicalOperatorTag.OUTER_UNNEST) {
+            return Boolean.FALSE;
+        }
+        OuterUnnestOperator unnestOpArg = (OuterUnnestOperator) copyAndSubstituteVar(op, arg);
+        boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), unnestOpArg.getVariables())
+                && variableEqual(op.getPositionalVariable(), unnestOpArg.getPositionalVariable());
+        if (!isomorphic) {
+            return Boolean.FALSE;
+        }
+        isomorphic = op.getExpressionRef().getValue().equals(unnestOpArg.getExpressionRef().getValue());
+        return isomorphic;
     }
 
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismUtilities.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismUtilities.java
index aa9848c..b86e8e9 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismUtilities.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismUtilities.java
@@ -22,7 +22,6 @@
 import java.util.Map;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
@@ -45,14 +44,16 @@
             throws AlgebricksException {
         List<Mutable<ILogicalOperator>> inputs1 = op.getInputs();
         List<Mutable<ILogicalOperator>> inputs2 = arg.getInputs();
-        if (inputs1.size() != inputs2.size())
-            return Boolean.FALSE;
+        if (inputs1.size() != inputs2.size()) {
+            return false;
+        }
         for (int i = 0; i < inputs1.size(); i++) {
             ILogicalOperator input1 = inputs1.get(i).getValue();
             ILogicalOperator input2 = inputs2.get(i).getValue();
             boolean isomorphic = isOperatorIsomorphicPlanSegment(input1, input2);
-            if (!isomorphic)
-                return Boolean.FALSE;
+            if (!isomorphic) {
+                return false;
+            }
         }
         return IsomorphismUtilities.isOperatorIsomorphic(op, arg);
     }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismVariableMappingVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismVariableMappingVisitor.java
index 4f0bcd3..1b1b9d8 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismVariableMappingVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismVariableMappingVisitor.java
@@ -25,7 +25,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
@@ -44,16 +43,18 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -201,6 +202,13 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, ILogicalOperator arg) throws AlgebricksException {
+        mapChildren(op, arg);
+        mapVariablesForIntersect(op, arg);
+        return null;
+    }
+
+    @Override
     public Void visitUnnestOperator(UnnestOperator op, ILogicalOperator arg) throws AlgebricksException {
         mapVariablesStandard(op, arg);
         return null;
@@ -213,6 +221,13 @@
     }
 
     @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        mapVariablesStandard(op, arg);
+        return null;
+    }
+
+    @Override
     public Void visitDataScanOperator(DataSourceScanOperator op, ILogicalOperator arg) throws AlgebricksException {
         mapVariablesStandard(op, arg);
         return null;
@@ -250,26 +265,26 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, ILogicalOperator arg) throws AlgebricksException {
-        mapVariablesStandard(op, arg);
-        return null;
-    }
-
-    @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, ILogicalOperator arg)
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         mapVariablesStandard(op, arg);
         return null;
     }
 
     @Override
-    public Void visitTokenizeOperator(TokenizeOperator op, ILogicalOperator arg)
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, ILogicalOperator arg)
             throws AlgebricksException {
         mapVariablesStandard(op, arg);
         return null;
     }
 
     @Override
+    public Void visitTokenizeOperator(TokenizeOperator op, ILogicalOperator arg) throws AlgebricksException {
+        mapVariablesStandard(op, arg);
+        return null;
+    }
+
+    @Override
     public Void visitSinkOperator(SinkOperator op, ILogicalOperator arg) throws AlgebricksException {
         mapVariablesStandard(op, arg);
         return null;
@@ -427,6 +442,22 @@
         }
     }
 
+    private void mapVariablesForIntersect(IntersectOperator op, ILogicalOperator arg) {
+        IntersectOperator opArg = (IntersectOperator) arg;
+        if (op.getNumInput() != opArg.getNumInput()) {
+            return;
+        }
+        for (int i = 0; i < op.getNumInput(); i++) {
+            for (int j = 0; j < op.getInputVariables(i).size(); j++) {
+                if (!varEquivalent(op.getInputVariables(i).get(j), opArg.getInputVariables(i).get(j))) {
+                    return;
+                }
+            }
+
+        }
+        mapVariables(op.getOutputVars(), opArg.getOutputVars());
+    }
+
     private boolean varEquivalent(LogicalVariable left, LogicalVariable right) {
         if (variableMapping.get(right) == null)
             return false;
@@ -443,8 +474,8 @@
     }
 
     @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op, ILogicalOperator arg)
-            throws AlgebricksException {
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, ILogicalOperator arg) throws AlgebricksException {
+        mapVariablesStandard(op, arg);
         return null;
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalExpressionDeepCopyWithNewVariablesVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalExpressionDeepCopyWithNewVariablesVisitor.java
new file mode 100644
index 0000000..36111ff
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalExpressionDeepCopyWithNewVariablesVisitor.java
@@ -0,0 +1,159 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical.visitors;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.IVariableContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionAnnotation;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
+
+public class LogicalExpressionDeepCopyWithNewVariablesVisitor
+        implements ILogicalExpressionVisitor<ILogicalExpression, Void> {
+    private final IVariableContext varContext;
+    private final Map<LogicalVariable, LogicalVariable> inVarMapping;
+    private final Map<LogicalVariable, LogicalVariable> outVarMapping;
+
+    public LogicalExpressionDeepCopyWithNewVariablesVisitor(IVariableContext varContext,
+            Map<LogicalVariable, LogicalVariable> inVarMapping, Map<LogicalVariable, LogicalVariable> variableMapping) {
+        this.varContext = varContext;
+        this.inVarMapping = inVarMapping;
+        this.outVarMapping = variableMapping;
+    }
+
+    public ILogicalExpression deepCopy(ILogicalExpression expr) throws AlgebricksException {
+        if (expr == null) {
+            return null;
+        }
+        return expr.accept(this, null);
+    }
+
+    private void deepCopyAnnotations(AbstractFunctionCallExpression src, AbstractFunctionCallExpression dest) {
+        Map<Object, IExpressionAnnotation> srcAnnotations = src.getAnnotations();
+        Map<Object, IExpressionAnnotation> destAnnotations = dest.getAnnotations();
+        for (Map.Entry<Object, IExpressionAnnotation> annotationEntry : srcAnnotations.entrySet()) {
+            IExpressionAnnotation annotation = annotationEntry.getValue().copy();
+            destAnnotations.put(annotationEntry.getKey(), annotation);
+        }
+    }
+
+    private void deepCopyOpaqueParameters(AbstractFunctionCallExpression src, AbstractFunctionCallExpression dest) {
+        Object[] srcOpaqueParameters = src.getOpaqueParameters();
+        Object[] newOpaqueParameters = null;
+        if (srcOpaqueParameters != null) {
+            newOpaqueParameters = new Object[srcOpaqueParameters.length];
+            for (int i = 0; i < srcOpaqueParameters.length; i++) {
+                newOpaqueParameters[i] = srcOpaqueParameters[i];
+            }
+        }
+        dest.setOpaqueParameters(newOpaqueParameters);
+    }
+
+    public MutableObject<ILogicalExpression> deepCopyExpressionReference(Mutable<ILogicalExpression> exprRef)
+            throws AlgebricksException {
+        return new MutableObject<ILogicalExpression>(deepCopy(exprRef.getValue()));
+    }
+
+    // TODO return List<...>
+    public ArrayList<Mutable<ILogicalExpression>> deepCopyExpressionReferenceList(
+            List<Mutable<ILogicalExpression>> list) throws AlgebricksException {
+        ArrayList<Mutable<ILogicalExpression>> listCopy = new ArrayList<Mutable<ILogicalExpression>>(list.size());
+        for (Mutable<ILogicalExpression> exprRef : list) {
+            listCopy.add(deepCopyExpressionReference(exprRef));
+        }
+        return listCopy;
+    }
+
+    @Override
+    public ILogicalExpression visitAggregateFunctionCallExpression(AggregateFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        AggregateFunctionCallExpression exprCopy = new AggregateFunctionCallExpression(expr.getFunctionInfo(),
+                expr.isTwoStep(), deepCopyExpressionReferenceList(expr.getArguments()));
+        deepCopyAnnotations(expr, exprCopy);
+        deepCopyOpaqueParameters(expr, exprCopy);
+        return exprCopy;
+    }
+
+    @Override
+    public ILogicalExpression visitConstantExpression(ConstantExpression expr, Void arg) throws AlgebricksException {
+        return new ConstantExpression(expr.getValue());
+    }
+
+    @Override
+    public ILogicalExpression visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        ScalarFunctionCallExpression exprCopy = new ScalarFunctionCallExpression(expr.getFunctionInfo(),
+                deepCopyExpressionReferenceList(expr.getArguments()));
+        deepCopyAnnotations(expr, exprCopy);
+        deepCopyOpaqueParameters(expr, exprCopy);
+        return exprCopy;
+
+    }
+
+    @Override
+    public ILogicalExpression visitStatefulFunctionCallExpression(StatefulFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        StatefulFunctionCallExpression exprCopy = new StatefulFunctionCallExpression(expr.getFunctionInfo(),
+                expr.getPropertiesComputer(), deepCopyExpressionReferenceList(expr.getArguments()));
+        deepCopyAnnotations(expr, exprCopy);
+        deepCopyOpaqueParameters(expr, exprCopy);
+        return exprCopy;
+    }
+
+    @Override
+    public ILogicalExpression visitUnnestingFunctionCallExpression(UnnestingFunctionCallExpression expr, Void arg)
+            throws AlgebricksException {
+        UnnestingFunctionCallExpression exprCopy = new UnnestingFunctionCallExpression(expr.getFunctionInfo(),
+                deepCopyExpressionReferenceList(expr.getArguments()));
+        deepCopyAnnotations(expr, exprCopy);
+        deepCopyOpaqueParameters(expr, exprCopy);
+        return exprCopy;
+    }
+
+    @Override
+    public ILogicalExpression visitVariableReferenceExpression(VariableReferenceExpression expr, Void arg)
+            throws AlgebricksException {
+        LogicalVariable var = expr.getVariableReference();
+        LogicalVariable givenVarReplacement = inVarMapping.get(var);
+        if (givenVarReplacement != null) {
+            outVarMapping.put(var, givenVarReplacement);
+            return new VariableReferenceExpression(givenVarReplacement);
+        }
+        LogicalVariable varCopy = outVarMapping.get(var);
+        if (varCopy == null) {
+            varCopy = varContext.newVar();
+            outVarMapping.put(var, varCopy);
+        }
+        return new VariableReferenceExpression(varCopy);
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
new file mode 100644
index 0000000..213b2b1
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalOperatorDeepCopyWithNewVariablesVisitor.java
@@ -0,0 +1,571 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical.visitors;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.IVariableContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.TokenizeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
+import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
+import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
+import org.apache.hyracks.algebricks.core.algebra.visitors.IQueryOperatorVisitor;
+
+/**
+ * This visitor deep-copies a query plan but uses a new set of variables. Method
+ * getInputToOutputVariableMapping() will return a map that maps input variables
+ * to their corresponding output variables.
+ */
+public class LogicalOperatorDeepCopyWithNewVariablesVisitor
+        implements IQueryOperatorVisitor<ILogicalOperator, ILogicalOperator> {
+    private final ITypingContext typeContext;
+    private final IVariableContext varContext;
+    private final LogicalExpressionDeepCopyWithNewVariablesVisitor exprDeepCopyVisitor;
+
+    // Key: Variable in the original plan. Value: New variable replacing the
+    // original one in the copied plan.
+    private final Map<LogicalVariable, LogicalVariable> inputVarToOutputVarMapping;
+
+    // Key: New variable in the new plan. Value: The old variable in the
+    // original plan.
+    private final Map<LogicalVariable, LogicalVariable> outputVarToInputVarMapping;
+
+    /**
+     * @param IOptimizationContext
+     *            , the optimization context
+     */
+    public LogicalOperatorDeepCopyWithNewVariablesVisitor(IVariableContext varContext, ITypingContext typeContext) {
+        this.varContext = varContext;
+        this.typeContext = typeContext;
+        this.inputVarToOutputVarMapping = new HashMap<>();
+        this.outputVarToInputVarMapping = new HashMap<>();
+        this.exprDeepCopyVisitor = new LogicalExpressionDeepCopyWithNewVariablesVisitor(varContext,
+                outputVarToInputVarMapping, inputVarToOutputVarMapping);
+    }
+
+    /**
+     * @param IOptimizationContext
+     *            the optimization context
+     * @param inVarMapping
+     *            Variable mapping keyed by variables in the original plan.
+     *            Those variables are replaced by their corresponding value in
+     *            the map in the copied plan.
+     */
+    public LogicalOperatorDeepCopyWithNewVariablesVisitor(IVariableContext varContext, ITypingContext typeContext,
+            Map<LogicalVariable, LogicalVariable> inVarMapping) {
+        this.varContext = varContext;
+        this.typeContext = typeContext;
+        this.inputVarToOutputVarMapping = inVarMapping;
+        this.outputVarToInputVarMapping = new HashMap<>();
+        exprDeepCopyVisitor = new LogicalExpressionDeepCopyWithNewVariablesVisitor(varContext, inVarMapping,
+                inputVarToOutputVarMapping);
+    }
+
+    private void copyAnnotations(ILogicalOperator src, ILogicalOperator dest) {
+        dest.getAnnotations().putAll(src.getAnnotations());
+    }
+
+    public ILogicalOperator deepCopy(ILogicalOperator op) throws AlgebricksException {
+        // The deep copy call outside this visitor always has a null argument.
+        return deepCopy(op, null);
+    }
+
+    private ILogicalOperator deepCopy(ILogicalOperator op, ILogicalOperator arg) throws AlgebricksException {
+        if (op == null) {
+            return null;
+        }
+        ILogicalOperator opCopy = op.accept(this, arg);
+        if (typeContext != null) {
+            OperatorManipulationUtil.computeTypeEnvironmentBottomUp(opCopy, typeContext);
+        }
+        return opCopy;
+    }
+
+    private void deepCopyInputs(ILogicalOperator src, ILogicalOperator dest, ILogicalOperator arg)
+            throws AlgebricksException {
+        List<Mutable<ILogicalOperator>> inputs = src.getInputs();
+        List<Mutable<ILogicalOperator>> inputsCopy = dest.getInputs();
+        for (Mutable<ILogicalOperator> input : inputs) {
+            inputsCopy.add(deepCopyOperatorReference(input, arg));
+        }
+    }
+
+    private Mutable<ILogicalOperator> deepCopyOperatorReference(Mutable<ILogicalOperator> opRef, ILogicalOperator arg)
+            throws AlgebricksException {
+        return new MutableObject<ILogicalOperator>(deepCopy(opRef.getValue(), arg));
+    }
+
+    private List<Mutable<ILogicalOperator>> deepCopyOperatorReferenceList(List<Mutable<ILogicalOperator>> list,
+            ILogicalOperator arg) throws AlgebricksException {
+        List<Mutable<ILogicalOperator>> listCopy = new ArrayList<Mutable<ILogicalOperator>>(list.size());
+        for (Mutable<ILogicalOperator> opRef : list) {
+            listCopy.add(deepCopyOperatorReference(opRef, arg));
+        }
+        return listCopy;
+    }
+
+    private IOrder deepCopyOrder(IOrder order) {
+        switch (order.getKind()) {
+            case ASC:
+            case DESC:
+                return order;
+            case FUNCTIONCALL:
+            default:
+                throw new UnsupportedOperationException();
+        }
+    }
+
+    private List<Pair<IOrder, Mutable<ILogicalExpression>>> deepCopyOrderExpressionReferencePairList(
+            List<Pair<IOrder, Mutable<ILogicalExpression>>> list) throws AlgebricksException {
+        ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>> listCopy = new ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>>(
+                list.size());
+        for (Pair<IOrder, Mutable<ILogicalExpression>> pair : list) {
+            listCopy.add(new Pair<OrderOperator.IOrder, Mutable<ILogicalExpression>>(deepCopyOrder(pair.first),
+                    exprDeepCopyVisitor.deepCopyExpressionReference(pair.second)));
+        }
+        return listCopy;
+    }
+
+    private ILogicalPlan deepCopyPlan(ILogicalPlan plan, ILogicalOperator arg) throws AlgebricksException {
+        List<Mutable<ILogicalOperator>> rootsCopy = deepCopyOperatorReferenceList(plan.getRoots(), arg);
+        ILogicalPlan planCopy = new ALogicalPlanImpl(rootsCopy);
+        return planCopy;
+    }
+
+    private List<ILogicalPlan> deepCopyPlanList(List<ILogicalPlan> list, List<ILogicalPlan> listCopy,
+            ILogicalOperator arg) throws AlgebricksException {
+        for (ILogicalPlan plan : list) {
+            listCopy.add(deepCopyPlan(plan, arg));
+        }
+        return listCopy;
+    }
+
+    private LogicalVariable deepCopyVariable(LogicalVariable var) {
+        if (var == null) {
+            return null;
+        }
+        LogicalVariable givenVarReplacement = outputVarToInputVarMapping.get(var);
+        if (givenVarReplacement != null) {
+            inputVarToOutputVarMapping.put(var, givenVarReplacement);
+            return givenVarReplacement;
+        }
+        LogicalVariable varCopy = inputVarToOutputVarMapping.get(var);
+        if (varCopy == null) {
+            varCopy = varContext.newVar();
+            inputVarToOutputVarMapping.put(var, varCopy);
+        }
+        return varCopy;
+    }
+
+    private List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> deepCopyVariableExpressionReferencePairList(
+            List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> list) throws AlgebricksException {
+        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> listCopy = new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>(
+                list.size());
+        for (Pair<LogicalVariable, Mutable<ILogicalExpression>> pair : list) {
+            listCopy.add(new Pair<LogicalVariable, Mutable<ILogicalExpression>>(deepCopyVariable(pair.first),
+                    exprDeepCopyVisitor.deepCopyExpressionReference(pair.second)));
+        }
+        return listCopy;
+    }
+
+    private List<LogicalVariable> deepCopyVariableList(List<LogicalVariable> list) {
+        ArrayList<LogicalVariable> listCopy = new ArrayList<LogicalVariable>(list.size());
+        for (LogicalVariable var : list) {
+            listCopy.add(deepCopyVariable(var));
+        }
+        return listCopy;
+    }
+
+    private void deepCopyInputsAnnotationsAndExecutionMode(ILogicalOperator op, ILogicalOperator arg,
+            AbstractLogicalOperator opCopy) throws AlgebricksException {
+        deepCopyInputs(op, opCopy, arg);
+        copyAnnotations(op, opCopy);
+        opCopy.setExecutionMode(op.getExecutionMode());
+    }
+
+    public void reset() {
+        inputVarToOutputVarMapping.clear();
+        outputVarToInputVarMapping.clear();
+    }
+
+    public void updatePrimaryKeys(IOptimizationContext context) {
+        for (Map.Entry<LogicalVariable, LogicalVariable> entry : inputVarToOutputVarMapping.entrySet()) {
+            List<LogicalVariable> primaryKey = context.findPrimaryKey(entry.getKey());
+            if (primaryKey != null) {
+                List<LogicalVariable> head = new ArrayList<LogicalVariable>();
+                for (LogicalVariable variable : primaryKey) {
+                    head.add(inputVarToOutputVarMapping.get(variable));
+                }
+                List<LogicalVariable> tail = new ArrayList<LogicalVariable>(1);
+                tail.add(entry.getValue());
+                context.addPrimaryKey(new FunctionalDependency(head, tail));
+            }
+        }
+    }
+
+    public LogicalVariable varCopy(LogicalVariable var) throws AlgebricksException {
+        return inputVarToOutputVarMapping.get(var);
+    }
+
+    @Override
+    public ILogicalOperator visitAggregateOperator(AggregateOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        AggregateOperator opCopy = new AggregateOperator(deepCopyVariableList(op.getVariables()),
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getExpressions()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitAssignOperator(AssignOperator op, ILogicalOperator arg) throws AlgebricksException {
+        AssignOperator opCopy = new AssignOperator(deepCopyVariableList(op.getVariables()),
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getExpressions()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitDataScanOperator(DataSourceScanOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        DataSourceScanOperator opCopy = new DataSourceScanOperator(deepCopyVariableList(op.getVariables()),
+                op.getDataSource());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitDistinctOperator(DistinctOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        DistinctOperator opCopy = new DistinctOperator(
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getExpressions()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, ILogicalOperator arg) {
+        EmptyTupleSourceOperator opCopy = new EmptyTupleSourceOperator();
+        opCopy.setExecutionMode(op.getExecutionMode());
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitExchangeOperator(ExchangeOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        ExchangeOperator opCopy = new ExchangeOperator();
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitGroupByOperator(GroupByOperator op, ILogicalOperator arg) throws AlgebricksException {
+        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> groupByListCopy = deepCopyVariableExpressionReferencePairList(
+                op.getGroupByList());
+        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> decorListCopy = deepCopyVariableExpressionReferencePairList(
+                op.getDecorList());
+        List<ILogicalPlan> nestedPlansCopy = new ArrayList<ILogicalPlan>();
+
+        GroupByOperator opCopy = new GroupByOperator(groupByListCopy, decorListCopy, nestedPlansCopy);
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitInnerJoinOperator(InnerJoinOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        InnerJoinOperator opCopy = new InnerJoinOperator(
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getCondition()),
+                deepCopyOperatorReference(op.getInputs().get(0), null),
+                deepCopyOperatorReference(op.getInputs().get(1), null));
+        copyAnnotations(op, opCopy);
+        opCopy.setExecutionMode(op.getExecutionMode());
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitLeftOuterJoinOperator(LeftOuterJoinOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        LeftOuterJoinOperator opCopy = new LeftOuterJoinOperator(
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getCondition()),
+                deepCopyOperatorReference(op.getInputs().get(0), null),
+                deepCopyOperatorReference(op.getInputs().get(1), null));
+        copyAnnotations(op, opCopy);
+        opCopy.setExecutionMode(op.getExecutionMode());
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitLimitOperator(LimitOperator op, ILogicalOperator arg) throws AlgebricksException {
+        LimitOperator opCopy = new LimitOperator(exprDeepCopyVisitor.deepCopy(op.getMaxObjects().getValue()),
+                exprDeepCopyVisitor.deepCopy(op.getOffset().getValue()), op.isTopmostLimitOp());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitNestedTupleSourceOperator(NestedTupleSourceOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        Mutable<ILogicalOperator> dataSourceReference = arg == null ? op.getDataSourceReference()
+                : new MutableObject<ILogicalOperator>(arg);
+        NestedTupleSourceOperator opCopy = new NestedTupleSourceOperator(dataSourceReference);
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitOrderOperator(OrderOperator op, ILogicalOperator arg) throws AlgebricksException {
+        OrderOperator opCopy = new OrderOperator(deepCopyOrderExpressionReferencePairList(op.getOrderExpressions()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitPartitioningSplitOperator(PartitioningSplitOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        PartitioningSplitOperator opCopy = new PartitioningSplitOperator(
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getExpressions()), op.getDefaultBranchIndex());
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitProjectOperator(ProjectOperator op, ILogicalOperator arg) throws AlgebricksException {
+        ProjectOperator opCopy = new ProjectOperator(deepCopyVariableList(op.getVariables()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitReplicateOperator(ReplicateOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        boolean[] outputMatFlags = op.getOutputMaterializationFlags();
+        boolean[] copiedOutputMatFlags = new boolean[outputMatFlags.length];
+        System.arraycopy(outputMatFlags, 0, copiedOutputMatFlags, 0, outputMatFlags.length);
+        ReplicateOperator opCopy = new ReplicateOperator(op.getOutputArity(), copiedOutputMatFlags);
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitMaterializeOperator(MaterializeOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        MaterializeOperator opCopy = new MaterializeOperator();
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitRunningAggregateOperator(RunningAggregateOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        RunningAggregateOperator opCopy = new RunningAggregateOperator(deepCopyVariableList(op.getVariables()),
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getExpressions()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitScriptOperator(ScriptOperator op, ILogicalOperator arg) throws AlgebricksException {
+        ScriptOperator opCopy = new ScriptOperator(op.getScriptDescription(),
+                deepCopyVariableList(op.getInputVariables()), deepCopyVariableList(op.getOutputVariables()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitSelectOperator(SelectOperator op, ILogicalOperator arg) throws AlgebricksException {
+        SelectOperator opCopy = new SelectOperator(exprDeepCopyVisitor.deepCopyExpressionReference(op.getCondition()),
+                op.getRetainNull(), deepCopyVariable(op.getNullPlaceholderVariable()));
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitSubplanOperator(SubplanOperator op, ILogicalOperator arg) throws AlgebricksException {
+        List<ILogicalPlan> nestedPlansCopy = new ArrayList<ILogicalPlan>();
+        SubplanOperator opCopy = new SubplanOperator(nestedPlansCopy);
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        deepCopyPlanList(op.getNestedPlans(), nestedPlansCopy, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitUnionOperator(UnionAllOperator op, ILogicalOperator arg) throws AlgebricksException {
+        List<Mutable<ILogicalOperator>> copiedInputs = new ArrayList<>();
+        for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
+            copiedInputs.add(deepCopyOperatorReference(childRef, null));
+        }
+        List<List<LogicalVariable>> liveVarsInInputs = new ArrayList<>();
+        for (Mutable<ILogicalOperator> inputOpRef : copiedInputs) {
+            List<LogicalVariable> liveVars = new ArrayList<>();
+            VariableUtilities.getLiveVariables(inputOpRef.getValue(), liveVars);
+            liveVarsInInputs.add(liveVars);
+        }
+        List<LogicalVariable> liveVarsInLeftInput = liveVarsInInputs.get(0);
+        List<LogicalVariable> liveVarsInRightInput = liveVarsInInputs.get(1);
+        List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> copiedTriples = new ArrayList<>();
+        int index = 0;
+        for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> triple : op.getVariableMappings()) {
+            LogicalVariable producedVar = deepCopyVariable(triple.third);
+            Triple<LogicalVariable, LogicalVariable, LogicalVariable> copiedTriple = new Triple<>(
+                    liveVarsInLeftInput.get(index), liveVarsInRightInput.get(index), producedVar);
+            copiedTriples.add(copiedTriple);
+            ++index;
+        }
+        UnionAllOperator opCopy = new UnionAllOperator(copiedTriples);
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitIntersectOperator(IntersectOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        List<List<LogicalVariable>> liveVarsInInputs = getLiveVarsInInputs(op);
+        List<LogicalVariable> outputCopy = new ArrayList<>();
+        for (LogicalVariable var : op.getOutputVars()) {
+            outputCopy.add(deepCopyVariable(var));
+        }
+        IntersectOperator opCopy = new IntersectOperator(outputCopy, liveVarsInInputs);
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    private List<List<LogicalVariable>> getLiveVarsInInputs(AbstractLogicalOperator op) throws AlgebricksException {
+        List<Mutable<ILogicalOperator>> copiedInputs = new ArrayList<>();
+        for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
+            copiedInputs.add(deepCopyOperatorReference(childRef, null));
+        }
+        List<List<LogicalVariable>> liveVarsInInputs = new ArrayList<>();
+        for (Mutable<ILogicalOperator> inputOpRef : copiedInputs) {
+            List<LogicalVariable> liveVars = new ArrayList<>();
+            VariableUtilities.getLiveVariables(inputOpRef.getValue(), liveVars);
+            liveVarsInInputs.add(liveVars);
+        }
+        return liveVarsInInputs;
+    }
+
+    @Override
+    public ILogicalOperator visitUnnestMapOperator(UnnestMapOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        UnnestMapOperator opCopy = new UnnestMapOperator(deepCopyVariableList(op.getVariables()),
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getExpressionRef()), op.getVariableTypes(),
+                op.propagatesInput());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        LeftOuterUnnestMapOperator opCopy = new LeftOuterUnnestMapOperator(deepCopyVariableList(op.getVariables()),
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getExpressionRef()), op.getVariableTypes(),
+                op.propagatesInput());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitUnnestOperator(UnnestOperator op, ILogicalOperator arg) throws AlgebricksException {
+        UnnestOperator opCopy = new UnnestOperator(deepCopyVariable(op.getVariable()),
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getExpressionRef()),
+                deepCopyVariable(op.getPositionalVariable()), op.getPositionalVariableType(), op.getPositionWriter());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitTokenizeOperator(TokenizeOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        TokenizeOperator opCopy = new TokenizeOperator(op.getDataSourceIndex(),
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getPrimaryKeyExpressions()),
+                exprDeepCopyVisitor.deepCopyExpressionReferenceList(op.getSecondaryKeyExpressions()),
+                this.deepCopyVariableList(op.getTokenizeVars()),
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getFilterExpression()), op.getOperation(),
+                op.isBulkload(), op.isPartitioned(), op.getTokenizeVarTypes());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    @Override
+    public ILogicalOperator visitExtensionOperator(ExtensionOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ILogicalOperator visitOuterUnnestOperator(OuterUnnestOperator op, ILogicalOperator arg)
+            throws AlgebricksException {
+        OuterUnnestOperator opCopy = new OuterUnnestOperator(deepCopyVariable(op.getVariable()),
+                exprDeepCopyVisitor.deepCopyExpressionReference(op.getExpressionRef()),
+                deepCopyVariable(op.getPositionalVariable()), op.getPositionalVariableType(), op.getPositionWriter());
+        deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy);
+        return opCopy;
+    }
+
+    public Map<LogicalVariable, LogicalVariable> getOutputToInputVariableMapping() {
+        return outputVarToInputVarMapping;
+    }
+
+    public Map<LogicalVariable, LogicalVariable> getInputToOutputVariableMapping() {
+        return inputVarToOutputVarMapping;
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalPropertiesVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalPropertiesVisitor.java
index 32dbc94..7ef76ee 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalPropertiesVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/LogicalPropertiesVisitor.java
@@ -19,7 +19,6 @@
 package org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -36,16 +35,18 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -80,8 +81,8 @@
         }
         op.accept(visitor, context);
         if (AlgebricksConfig.DEBUG) {
-            AlgebricksConfig.ALGEBRICKS_LOGGER.finest("Logical properties visitor for " + op + ": "
-                    + context.getLogicalPropertiesVector(op) + "\n");
+            AlgebricksConfig.ALGEBRICKS_LOGGER.finest(
+                    "Logical properties visitor for " + op + ": " + context.getLogicalPropertiesVector(op) + "\n");
         }
     }
 
@@ -229,12 +230,23 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, IOptimizationContext arg) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
     public Void visitUnnestMapOperator(UnnestMapOperator op, IOptimizationContext arg) throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, IOptimizationContext arg)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
     public Void visitUnnestOperator(UnnestOperator op, IOptimizationContext arg) throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
@@ -259,26 +271,26 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, IOptimizationContext arg) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, IOptimizationContext arg)
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, IOptimizationContext arg)
             throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
-    public Void visitTokenizeOperator(TokenizeOperator op, IOptimizationContext arg)
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, IOptimizationContext arg)
             throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
+    public Void visitTokenizeOperator(TokenizeOperator op, IOptimizationContext arg) throws AlgebricksException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
     public Void visitSinkOperator(SinkOperator op, IOptimizationContext arg) throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
@@ -346,8 +358,7 @@
     }
 
     @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op, IOptimizationContext arg)
-            throws AlgebricksException {
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, IOptimizationContext arg) throws AlgebricksException {
         return null;
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
index afc832a..931640e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
@@ -24,7 +24,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
@@ -41,17 +40,19 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -115,26 +116,26 @@
 
     @Override
     public ILogicalOperator visitLimitOperator(LimitOperator op, Void arg) throws AlgebricksException {
-        return new LimitOperator(deepCopyExpressionRef(op.getMaxObjects()).getValue(), deepCopyExpressionRef(
-                op.getOffset()).getValue(), op.isTopmostLimitOp());
+        return new LimitOperator(deepCopyExpressionRef(op.getMaxObjects()).getValue(),
+                deepCopyExpressionRef(op.getOffset()).getValue(), op.isTopmostLimitOp());
     }
 
     @Override
     public ILogicalOperator visitInnerJoinOperator(InnerJoinOperator op, Void arg) throws AlgebricksException {
-        return new InnerJoinOperator(deepCopyExpressionRef(op.getCondition()), op.getInputs().get(0), op.getInputs()
-                .get(1));
+        return new InnerJoinOperator(deepCopyExpressionRef(op.getCondition()), op.getInputs().get(0),
+                op.getInputs().get(1));
     }
 
     @Override
     public ILogicalOperator visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Void arg) throws AlgebricksException {
-        return new LeftOuterJoinOperator(deepCopyExpressionRef(op.getCondition()), op.getInputs().get(0), op
-                .getInputs().get(1));
+        return new LeftOuterJoinOperator(deepCopyExpressionRef(op.getCondition()), op.getInputs().get(0),
+                op.getInputs().get(1));
     }
 
     @Override
     public ILogicalOperator visitNestedTupleSourceOperator(NestedTupleSourceOperator op, Void arg)
             throws AlgebricksException {
-        return new NestedTupleSourceOperator(null);
+        return new NestedTupleSourceOperator(op.getDataSourceReference());
     }
 
     @Override
@@ -206,6 +207,16 @@
     }
 
     @Override
+    public ILogicalOperator visitIntersectOperator(IntersectOperator op, Void arg) throws AlgebricksException {
+        List<LogicalVariable> outputVar = new ArrayList<>(op.getOutputVars());
+        List<List<LogicalVariable>> inputVars = new ArrayList<>(op.getNumInput());
+        for (int i = 0; i < op.getNumInput(); i++) {
+            inputVars.add(new ArrayList<>(op.getInputVariables(i)));
+        }
+        return new IntersectOperator(outputVar, inputVars);
+    }
+
+    @Override
     public ILogicalOperator visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
         return new UnnestOperator(op.getVariable(), deepCopyExpressionRef(op.getExpressionRef()),
                 op.getPositionalVariable(), op.getPositionalVariableType(), op.getPositionWriter());
@@ -215,8 +226,17 @@
     public ILogicalOperator visitUnnestMapOperator(UnnestMapOperator op, Void arg) throws AlgebricksException {
         ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
         newInputList.addAll(op.getVariables());
-        return new UnnestMapOperator(newInputList, deepCopyExpressionRef(op.getExpressionRef()), new ArrayList<Object>(
-                op.getVariableTypes()), op.propagatesInput());
+        return new UnnestMapOperator(newInputList, deepCopyExpressionRef(op.getExpressionRef()),
+                new ArrayList<Object>(op.getVariableTypes()), op.propagatesInput());
+    }
+
+    @Override
+    public ILogicalOperator visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg)
+            throws AlgebricksException {
+        ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
+        newInputList.addAll(op.getVariables());
+        return new LeftOuterUnnestMapOperator(newInputList, deepCopyExpressionRef(op.getExpressionRef()),
+                new ArrayList<Object>(op.getVariableTypes()), op.propagatesInput());
     }
 
     @Override
@@ -266,19 +286,21 @@
     }
 
     @Override
-    public ILogicalOperator visitInsertDeleteOperator(InsertDeleteOperator op, Void arg) throws AlgebricksException {
+    public ILogicalOperator visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg)
+            throws AlgebricksException {
         List<Mutable<ILogicalExpression>> newKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
         deepCopyExpressionRefs(newKeyExpressions, op.getPrimaryKeyExpressions());
         List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions = new ArrayList<Mutable<ILogicalExpression>>();
         deepCopyExpressionRefs(newKeyExpressions, op.getAdditionalFilteringExpressions());
-        InsertDeleteOperator insertDeleteOp = new InsertDeleteOperator(op.getDataSource(),
-                deepCopyExpressionRef(op.getPayloadExpression()), newKeyExpressions, op.getOperation(), op.isBulkload());
+        InsertDeleteUpsertOperator insertDeleteOp = new InsertDeleteUpsertOperator(op.getDataSource(),
+                deepCopyExpressionRef(op.getPayloadExpression()), newKeyExpressions, op.getOperation(),
+                op.isBulkload());
         insertDeleteOp.setAdditionalFilteringExpressions(newLSMComponentFilterExpressions);
         return insertDeleteOp;
     }
 
     @Override
-    public ILogicalOperator visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, Void arg)
+    public ILogicalOperator visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Void arg)
             throws AlgebricksException {
         List<Mutable<ILogicalExpression>> newPrimaryKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
         deepCopyExpressionRefs(newPrimaryKeyExpressions, op.getPrimaryKeyExpressions());
@@ -288,9 +310,9 @@
                 ((AbstractLogicalExpression) op.getFilterExpression()).cloneExpression());
         List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions = new ArrayList<Mutable<ILogicalExpression>>();
         deepCopyExpressionRefs(newLSMComponentFilterExpressions, op.getAdditionalFilteringExpressions());
-        IndexInsertDeleteOperator indexInsertDeleteOp = new IndexInsertDeleteOperator(op.getDataSourceIndex(),
-                newPrimaryKeyExpressions, newSecondaryKeyExpressions, newFilterExpression, op.getOperation(),
-                op.isBulkload());
+        IndexInsertDeleteUpsertOperator indexInsertDeleteOp = new IndexInsertDeleteUpsertOperator(
+                op.getDataSourceIndex(), newPrimaryKeyExpressions, newSecondaryKeyExpressions, newFilterExpression,
+                op.getOperation(), op.isBulkload());
         indexInsertDeleteOp.setAdditionalFilteringExpressions(newLSMComponentFilterExpressions);
         return indexInsertDeleteOp;
     }
@@ -322,12 +344,13 @@
     private void deepCopyExpressionRefs(List<Mutable<ILogicalExpression>> newExprs,
             List<Mutable<ILogicalExpression>> oldExprs) {
         for (Mutable<ILogicalExpression> oldExpr : oldExprs)
-            newExprs.add(new MutableObject<ILogicalExpression>(((AbstractLogicalExpression) oldExpr.getValue())
-                    .cloneExpression()));
+            newExprs.add(new MutableObject<ILogicalExpression>(
+                    ((AbstractLogicalExpression) oldExpr.getValue()).cloneExpression()));
     }
 
     private Mutable<ILogicalExpression> deepCopyExpressionRef(Mutable<ILogicalExpression> oldExpr) {
-        return new MutableObject<ILogicalExpression>(((AbstractLogicalExpression) oldExpr.getValue()).cloneExpression());
+        return new MutableObject<ILogicalExpression>(
+                ((AbstractLogicalExpression) oldExpr.getValue()).cloneExpression());
     }
 
     private List<LogicalVariable> deepCopyVars(List<LogicalVariable> newVars, List<LogicalVariable> oldVars) {
@@ -346,8 +369,8 @@
             List<Pair<IOrder, Mutable<ILogicalExpression>>> ordersAndExprs) {
         List<Pair<IOrder, Mutable<ILogicalExpression>>> newOrdersAndExprs = new ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>>();
         for (Pair<IOrder, Mutable<ILogicalExpression>> pair : ordersAndExprs)
-            newOrdersAndExprs.add(new Pair<IOrder, Mutable<ILogicalExpression>>(pair.first,
-                    deepCopyExpressionRef(pair.second)));
+            newOrdersAndExprs
+                    .add(new Pair<IOrder, Mutable<ILogicalExpression>>(pair.first, deepCopyExpressionRef(pair.second)));
         return newOrdersAndExprs;
     }
 
@@ -357,16 +380,13 @@
     }
 
     @Override
-    public ILogicalOperator visitExternalDataLookupOperator(ExternalDataLookupOperator op, Void arg)
-            throws AlgebricksException {
-        ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
-        newInputList.addAll(op.getVariables());
-        return new ExternalDataLookupOperator(newInputList, deepCopyExpressionRef(op.getExpressionRef()),
-                new ArrayList<Object>(op.getVariableTypes()), op.isPropagateInput(), op.getDataSource());
+    public ILogicalOperator visitMaterializeOperator(MaterializeOperator op, Void arg) throws AlgebricksException {
+        return new MaterializeOperator();
     }
 
     @Override
-    public ILogicalOperator visitMaterializeOperator(MaterializeOperator op, Void arg) throws AlgebricksException {
-        return new MaterializeOperator();
+    public ILogicalOperator visitOuterUnnestOperator(OuterUnnestOperator op, Void arg) throws AlgebricksException {
+        return new OuterUnnestOperator(op.getVariable(), deepCopyExpressionRef(op.getExpressionRef()),
+                op.getPositionalVariable(), op.getPositionalVariableType(), op.getPositionWriter());
     }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/PrimaryKeyVariablesVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/PrimaryKeyVariablesVisitor.java
new file mode 100644
index 0000000..3f0772a
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/PrimaryKeyVariablesVisitor.java
@@ -0,0 +1,286 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.logical.visitors;
+
+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.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistributeResultOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SinkOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.TokenizeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteResultOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
+
+/**
+ * This visitor propagates primary key information for each operator.
+ * NOTE: since the primary key information in data-source-scan is determined by the specific
+ * data source, this visitor, at the Algebricks level, could not generate that information.
+ */
+public class PrimaryKeyVariablesVisitor implements ILogicalOperatorVisitor<Void, IOptimizationContext> {
+
+    @Override
+    public Void visitAggregateOperator(AggregateOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        ctx.addPrimaryKey(new FunctionalDependency(op.getVariables(), op.getVariables()));
+        return null;
+    }
+
+    @Override
+    public Void visitRunningAggregateOperator(RunningAggregateOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitGroupByOperator(GroupByOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        List<LogicalVariable> header = new ArrayList<>();
+        for (Pair<LogicalVariable, Mutable<ILogicalExpression>> gbyTerm : op.getGroupByList()) {
+            header.add(gbyTerm.first);
+        }
+        List<LogicalVariable> liveVars = new ArrayList<>();
+        VariableUtilities.getSubplanLocalLiveVariables(op, liveVars);
+        ctx.addPrimaryKey(new FunctionalDependency(header, liveVars));
+        return null;
+    }
+
+    @Override
+    public Void visitLimitOperator(LimitOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitInnerJoinOperator(InnerJoinOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitLeftOuterJoinOperator(LeftOuterJoinOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitNestedTupleSourceOperator(NestedTupleSourceOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitOrderOperator(OrderOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitAssignOperator(AssignOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        // Obtain used variables on the right-hand side of an assign.
+        Set<LogicalVariable> usedVars = new HashSet<>();
+        VariableUtilities.getUsedVariables(op, usedVars);
+        Set<LogicalVariable> primaryKeyVars = null;
+        for (LogicalVariable usedVar : usedVars) {
+            List<LogicalVariable> keyVars = ctx.findPrimaryKey(usedVar);
+            if (keyVars == null) {
+                // No key variables can uniquely identify usedVar.
+                return null;
+            }
+            if (primaryKeyVars == null) {
+                primaryKeyVars = new HashSet<>(keyVars);
+            } else {
+                // The primary key is the union of all the key header variables.
+                primaryKeyVars.addAll(keyVars);
+            }
+        }
+        if (primaryKeyVars != null && !primaryKeyVars.isEmpty()) {
+            List<LogicalVariable> producedVars = new ArrayList<>();
+            VariableUtilities.getProducedVariables(op, producedVars);
+            // Generates new primary keys.
+            ctx.addPrimaryKey(new FunctionalDependency(new ArrayList<LogicalVariable>(primaryKeyVars), producedVars));
+        }
+        return null;
+    }
+
+    @Override
+    public Void visitSelectOperator(SelectOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitExtensionOperator(ExtensionOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitProjectOperator(ProjectOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitPartitioningSplitOperator(PartitioningSplitOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitReplicateOperator(ReplicateOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitMaterializeOperator(MaterializeOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitScriptOperator(ScriptOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitSubplanOperator(SubplanOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitSinkOperator(SinkOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitUnionOperator(UnionAllOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitIntersectOperator(IntersectOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitUnnestOperator(UnnestOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitUnnestMapOperator(UnnestMapOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitDataScanOperator(DataSourceScanOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitDistinctOperator(DistinctOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitExchangeOperator(ExchangeOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitWriteOperator(WriteOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitDistributeResultOperator(DistributeResultOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitWriteResultOperator(WriteResultOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, IOptimizationContext ctx)
+            throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitTokenizeOperator(TokenizeOperator op, IOptimizationContext ctx) throws AlgebricksException {
+        return null;
+    }
+
+    @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, IOptimizationContext arg)
+            throws AlgebricksException {
+        return null;
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
index 8383ef2..b05bdf5 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
@@ -20,10 +20,11 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
@@ -31,6 +32,7 @@
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestNonMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
@@ -39,16 +41,18 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -186,11 +190,16 @@
 
     @Override
     public Void visitSubplanOperator(SubplanOperator op, Void arg) throws AlgebricksException {
+        Set<LogicalVariable> producedVars = new HashSet<>();
+        Set<LogicalVariable> liveVars = new HashSet<>();
         for (ILogicalPlan p : op.getNestedPlans()) {
             for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                VariableUtilities.getLiveVariables(r.getValue(), producedVariables);
+                VariableUtilities.getProducedVariablesInDescendantsAndSelf(r.getValue(), producedVars);
+                VariableUtilities.getSubplanLocalLiveVariables(r.getValue(), liveVars);
             }
         }
+        producedVars.retainAll(liveVars);
+        producedVariables.addAll(producedVars);
         return null;
     }
 
@@ -203,23 +212,29 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, Void arg) throws AlgebricksException {
+        producedVariables.addAll(op.getOutputVars());
+        return null;
+    }
+
+    @Override
     public Void visitUnnestMapOperator(UnnestMapOperator op, Void arg) throws AlgebricksException {
         producedVariables.addAll(op.getVariables());
         return null;
     }
 
     @Override
-    public Void visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg) throws AlgebricksException {
         producedVariables.addAll(op.getVariables());
-        LogicalVariable positionalVariable = op.getPositionalVariable();
-        if (positionalVariable != null) {
-            if (!producedVariables.contains(positionalVariable))
-                producedVariables.add(positionalVariable);
-        }
         return null;
     }
 
     @Override
+    public Void visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
+        return visitUnnestNonMapOperator(op);
+    }
+
+    @Override
     public Void visitWriteOperator(WriteOperator op, Void arg) throws AlgebricksException {
         return null;
     }
@@ -245,12 +260,14 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, Void arg) throws AlgebricksException {
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg) throws AlgebricksException {
+        op.getProducedVariables(producedVariables);
         return null;
     }
 
     @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, Void arg) throws AlgebricksException {
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Void arg)
+            throws AlgebricksException {
         return null;
     }
 
@@ -272,8 +289,18 @@
     }
 
     @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op, Void arg) throws AlgebricksException {
-        producedVariables.add(op.getVariables().get(0));
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, Void arg) throws AlgebricksException {
+        return visitUnnestNonMapOperator(op);
+    }
+
+    private Void visitUnnestNonMapOperator(AbstractUnnestNonMapOperator op) {
+        producedVariables.addAll(op.getVariables());
+        LogicalVariable positionalVariable = op.getPositionalVariable();
+        if (positionalVariable != null) {
+            if (!producedVariables.contains(positionalVariable)) {
+                producedVariables.add(positionalVariable);
+            }
+        }
         return null;
     }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SchemaVariableVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SchemaVariableVisitor.java
index 29b7edd..ea6f6aa 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SchemaVariableVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SchemaVariableVisitor.java
@@ -23,7 +23,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -40,16 +39,18 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -213,7 +214,6 @@
         for (Mutable<ILogicalOperator> c : op.getInputs()) {
             VariableUtilities.getLiveVariables(c.getValue(), schemaVariables);
         }
-        VariableUtilities.getProducedVariables(op, schemaVariables);
         for (ILogicalPlan p : op.getNestedPlans()) {
             for (Mutable<ILogicalOperator> r : p.getRoots()) {
                 VariableUtilities.getLiveVariables(r.getValue(), schemaVariables);
@@ -229,6 +229,12 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, Void arg) throws AlgebricksException {
+        VariableUtilities.getProducedVariables(op, schemaVariables);
+        return null;
+    }
+
+    @Override
     public Void visitUnnestMapOperator(UnnestMapOperator op, Void arg) throws AlgebricksException {
         if (op.propagatesInput()) {
             standardLayout(op);
@@ -239,6 +245,12 @@
     }
 
     @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg) throws AlgebricksException {
+        standardLayout(op);
+        return null;
+    }
+
+    @Override
     public Void visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
         standardLayout(op);
         return null;
@@ -282,13 +294,14 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, Void arg) throws AlgebricksException {
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg) throws AlgebricksException {
         standardLayout(op);
         return null;
     }
 
     @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, Void arg) throws AlgebricksException {
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Void arg)
+            throws AlgebricksException {
         standardLayout(op);
         return null;
     }
@@ -312,22 +325,8 @@
     }
 
     @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op, Void arg) throws AlgebricksException {
-        ArrayList<LogicalVariable> liveVariables = new ArrayList<LogicalVariable>();
-        ArrayList<LogicalVariable> usedVariables = new ArrayList<LogicalVariable>();
-        //get used variables
-        op.getExpressionRef().getValue().getUsedVariables(usedVariables);
-        //live variables - used variables
-        for (Mutable<ILogicalOperator> c : op.getInputs()) {
-            VariableUtilities.getLiveVariables(c.getValue(), liveVariables);
-        }
-        for (LogicalVariable v : liveVariables) {
-            if (!usedVariables.contains(v)) {
-                schemaVariables.add(v);
-            }
-        }
-        VariableUtilities.getProducedVariables(op, schemaVariables);
-        //+ produced variables
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, Void arg) throws AlgebricksException {
+        standardLayout(op);
         return null;
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SubstituteVariableVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SubstituteVariableVisitor.java
index 77e6cb6..4061497 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SubstituteVariableVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/SubstituteVariableVisitor.java
@@ -18,11 +18,9 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
@@ -31,7 +29,8 @@
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestNonMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
@@ -40,17 +39,19 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -67,10 +68,10 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteResultOperator;
 import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
-import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
 
-public class SubstituteVariableVisitor implements ILogicalOperatorVisitor<Void, Pair<LogicalVariable, LogicalVariable>> {
+public class SubstituteVariableVisitor
+        implements ILogicalOperatorVisitor<Void, Pair<LogicalVariable, LogicalVariable>> {
 
     private final boolean goThroughNts;
     private final ITypingContext ctx;
@@ -147,7 +148,8 @@
     }
 
     @Override
-    public Void visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, Pair<LogicalVariable, LogicalVariable> pair) {
+    public Void visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) {
         // does not use any variable
         return null;
     }
@@ -165,8 +167,7 @@
         subst(pair.first, pair.second, op.getDecorList());
         for (ILogicalPlan p : op.getNestedPlans()) {
             for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                OperatorManipulationUtil.substituteVarRec((AbstractLogicalOperator) r.getValue(), pair.first,
-                        pair.second, goThroughNts, ctx);
+                VariableUtilities.substituteVariablesInDescendantsAndSelf(r.getValue(), pair.first, pair.second, ctx);
             }
         }
         substVarTypes(op, pair);
@@ -202,8 +203,8 @@
     }
 
     @Override
-    public Void visitNestedTupleSourceOperator(NestedTupleSourceOperator op, Pair<LogicalVariable, LogicalVariable> pair)
-            throws AlgebricksException {
+    public Void visitNestedTupleSourceOperator(NestedTupleSourceOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
         return null;
     }
 
@@ -218,8 +219,8 @@
     }
 
     @Override
-    public Void visitPartitioningSplitOperator(PartitioningSplitOperator op, Pair<LogicalVariable, LogicalVariable> pair)
-            throws AlgebricksException {
+    public Void visitPartitioningSplitOperator(PartitioningSplitOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
         for (Mutable<ILogicalExpression> e : op.getExpressions()) {
             e.getValue().substituteVar(pair.first, pair.second);
         }
@@ -278,8 +279,7 @@
             throws AlgebricksException {
         for (ILogicalPlan p : op.getNestedPlans()) {
             for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                OperatorManipulationUtil.substituteVarRec((AbstractLogicalOperator) r.getValue(), pair.first,
-                        pair.second, goThroughNts, ctx);
+                VariableUtilities.substituteVariablesInDescendantsAndSelf(r.getValue(), pair.first, pair.second, ctx);
             }
         }
         return null;
@@ -305,33 +305,54 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, Pair<LogicalVariable, LogicalVariable> pair)
+            throws AlgebricksException {
+        for (int i = 0; i < op.getOutputVars().size(); i++) {
+            if (op.getOutputVars().get(i).equals(pair.first)) {
+                op.getOutputVars().set(i, pair.second);
+            }
+        }
+        for (int i = 0; i < op.getNumInput(); i++) {
+            for (int j = 0; j < op.getInputVariables(i).size(); j++) {
+                if (op.getInputVariables(i).get(j).equals(pair.first)) {
+                    op.getInputVariables(i).set(j, pair.second);
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
     public Void visitUnnestMapOperator(UnnestMapOperator op, Pair<LogicalVariable, LogicalVariable> pair)
             throws AlgebricksException {
+        substituteVarsForAbstractUnnestMapOp(op, pair);
+        return null;
+    }
+
+    @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
+        substituteVarsForAbstractUnnestMapOp(op, pair);
+        return null;
+    }
+
+    private void substituteVarsForAbstractUnnestMapOp(AbstractUnnestMapOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
         List<LogicalVariable> variables = op.getVariables();
         for (int i = 0; i < variables.size(); i++) {
             if (variables.get(i) == pair.first) {
                 variables.set(i, pair.second);
-                return null;
+                return;
             }
         }
         op.getExpressionRef().getValue().substituteVar(pair.first, pair.second);
         substVarTypes(op, pair);
-        return null;
     }
 
     @Override
     public Void visitUnnestOperator(UnnestOperator op, Pair<LogicalVariable, LogicalVariable> pair)
             throws AlgebricksException {
-        List<LogicalVariable> variables = op.getVariables();
-        for (int i = 0; i < variables.size(); i++) {
-            if (variables.get(i) == pair.first) {
-                variables.set(i, pair.second);
-                return null;
-            }
-        }
-        op.getExpressionRef().getValue().substituteVar(pair.first, pair.second);
-        substVarTypes(op, pair);
-        return null;
+        return visitUnnestNonMapOperator(op, pair);
     }
 
     @Override
@@ -376,7 +397,7 @@
         }
     }
 
-    private void substInArray(ArrayList<LogicalVariable> varArray, LogicalVariable v1, LogicalVariable v2) {
+    private void substInArray(List<LogicalVariable> varArray, LogicalVariable v1, LogicalVariable v2) {
         for (int i = 0; i < varArray.size(); i++) {
             LogicalVariable v = varArray.get(i);
             if (v == v1) {
@@ -399,8 +420,8 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, Pair<LogicalVariable, LogicalVariable> pair)
-            throws AlgebricksException {
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
         op.getPayloadExpression().getValue().substituteVar(pair.first, pair.second);
         for (Mutable<ILogicalExpression> e : op.getPrimaryKeyExpressions()) {
             e.getValue().substituteVar(pair.first, pair.second);
@@ -410,8 +431,8 @@
     }
 
     @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, Pair<LogicalVariable, LogicalVariable> pair)
-            throws AlgebricksException {
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op,
+            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
         for (Mutable<ILogicalExpression> e : op.getPrimaryKeyExpressions()) {
             e.getValue().substituteVar(pair.first, pair.second);
         }
@@ -447,7 +468,9 @@
             return;
         }
         IVariableTypeEnvironment env = ctx.getOutputTypeEnvironment(op);
-        env.substituteProducedVariable(arg.first, arg.second);
+        if (env != null) {
+            env.substituteProducedVariable(arg.first, arg.second);
+        }
     }
 
     @Override
@@ -457,8 +480,13 @@
     }
 
     @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op,
-            Pair<LogicalVariable, LogicalVariable> pair) throws AlgebricksException {
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, Pair<LogicalVariable, LogicalVariable> pair)
+            throws AlgebricksException {
+        return visitUnnestNonMapOperator(op, pair);
+    }
+
+    private Void visitUnnestNonMapOperator(AbstractUnnestNonMapOperator op, Pair<LogicalVariable, LogicalVariable> pair)
+            throws AlgebricksException {
         List<LogicalVariable> variables = op.getVariables();
         for (int i = 0; i < variables.size(); i++) {
             if (variables.get(i) == pair.first) {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java
index bfb9036..2feea5d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.common.utils.Triple;
@@ -31,6 +30,7 @@
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import org.apache.hyracks.algebricks.core.algebra.base.IPhysicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
@@ -39,17 +39,19 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -166,6 +168,9 @@
                     }
                     break;
                 }
+                case RANDOM_PARTITION_EXCHANGE: {
+                    break;
+                }
                 default: {
                     throw new AlgebricksException("Unhandled physical operator tag '" + physOp.getOperatorTag() + "'.");
                 }
@@ -294,14 +299,36 @@
     }
 
     @Override
+    public Void visitIntersectOperator(IntersectOperator op, Void arg) throws AlgebricksException {
+        for (int i = 0; i < op.getNumInput(); i++) {
+            for (LogicalVariable var : op.getInputVariables(i)) {
+                if (!usedVariables.contains(var)) {
+                    usedVariables.add(var);
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
     public Void visitUnnestMapOperator(UnnestMapOperator op, Void arg) {
+        getUsedVarsFromExprAndFilterExpr(op);
+        return null;
+    }
+
+    @Override
+    public Void visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg) throws AlgebricksException {
+        getUsedVarsFromExprAndFilterExpr(op);
+        return null;
+    }
+
+    private void getUsedVarsFromExprAndFilterExpr(AbstractUnnestMapOperator op) {
         op.getExpressionRef().getValue().getUsedVariables(usedVariables);
         if (op.getAdditionalFilteringExpressions() != null) {
             for (Mutable<ILogicalExpression> e : op.getAdditionalFilteringExpressions()) {
                 e.getValue().getUsedVariables(usedVariables);
             }
         }
-        return null;
     }
 
     @Override
@@ -341,21 +368,31 @@
     }
 
     @Override
-    public Void visitInsertDeleteOperator(InsertDeleteOperator op, Void arg) {
+    public Void visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Void arg) {
+        // 1. The record variable
         op.getPayloadExpression().getValue().getUsedVariables(usedVariables);
+
+        // 2. The primary key variables
         for (Mutable<ILogicalExpression> e : op.getPrimaryKeyExpressions()) {
             e.getValue().getUsedVariables(usedVariables);
         }
+        // 3. The filters variables
         if (op.getAdditionalFilteringExpressions() != null) {
             for (Mutable<ILogicalExpression> e : op.getAdditionalFilteringExpressions()) {
                 e.getValue().getUsedVariables(usedVariables);
             }
         }
+        // 4. The Other variables (Not key, Not payload, and Not Filter)
+        if (op.getAdditionalNonFilteringExpressions() != null) {
+            for (Mutable<ILogicalExpression> e : op.getAdditionalNonFilteringExpressions()) {
+                e.getValue().getUsedVariables(usedVariables);
+            }
+        }
         return null;
     }
 
     @Override
-    public Void visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, Void arg) {
+    public Void visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Void arg) {
         for (Mutable<ILogicalExpression> e : op.getPrimaryKeyExpressions()) {
             e.getValue().getUsedVariables(usedVariables);
         }
@@ -367,6 +404,14 @@
                 e.getValue().getUsedVariables(usedVariables);
             }
         }
+        if (op.getPrevAdditionalFilteringExpression() != null) {
+            op.getPrevAdditionalFilteringExpression().getValue().getUsedVariables(usedVariables);
+        }
+        if (op.getPrevSecondaryKeyExprs() != null) {
+            for (Mutable<ILogicalExpression> e : op.getPrevSecondaryKeyExprs()) {
+                e.getValue().getUsedVariables(usedVariables);
+            }
+        }
         return null;
     }
 
@@ -403,7 +448,7 @@
     }
 
     @Override
-    public Void visitExternalDataLookupOperator(ExternalDataLookupOperator op, Void arg) throws AlgebricksException {
+    public Void visitOuterUnnestOperator(OuterUnnestOperator op, Void arg) throws AlgebricksException {
         op.getExpressionRef().getValue().getUsedVariables(usedVariables);
         return null;
     }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/VariableUtilities.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/VariableUtilities.java
index a3ea549..8859c03 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/VariableUtilities.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/VariableUtilities.java
@@ -21,10 +21,11 @@
 import java.util.Collection;
 import java.util.HashSet;
 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.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -34,24 +35,59 @@
 
 public class VariableUtilities {
 
+    /***
+     * Adds the used variables in the logical operator to the list of used variables
+     *
+     * @param op
+     *            The target operator
+     * @param usedVariables
+     *            A list to be filled with variables used in the logical operator op.
+     * @throws AlgebricksException
+     */
     public static void getUsedVariables(ILogicalOperator op, Collection<LogicalVariable> usedVariables)
             throws AlgebricksException {
         ILogicalOperatorVisitor<Void, Void> visitor = new UsedVariableVisitor(usedVariables);
         op.accept(visitor, null);
     }
 
+    /**
+     * Adds the variables produced in the logical operator in the list of produced variables
+     *
+     * @param op
+     *            The target operator
+     * @param producedVariables
+     *            The variables produced in the logical operator
+     * @throws AlgebricksException
+     */
     public static void getProducedVariables(ILogicalOperator op, Collection<LogicalVariable> producedVariables)
             throws AlgebricksException {
         ILogicalOperatorVisitor<Void, Void> visitor = new ProducedVariableVisitor(producedVariables);
         op.accept(visitor, null);
     }
 
+    /**
+     * Adds the variables that are live after the execution of this operator to the list of schema variables.
+     *
+     * @param op
+     *            The target logical operator
+     * @param schemaVariables
+     *            The list of live variables. The output of the operator and the propagated outputs of its children
+     * @throws AlgebricksException
+     */
     public static void getLiveVariables(ILogicalOperator op, Collection<LogicalVariable> schemaVariables)
             throws AlgebricksException {
         ILogicalOperatorVisitor<Void, Void> visitor = new SchemaVariableVisitor(schemaVariables);
         op.accept(visitor, null);
     }
 
+    public static void getSubplanLocalLiveVariables(ILogicalOperator op, Collection<LogicalVariable> liveVariables)
+            throws AlgebricksException {
+        VariableUtilities.getLiveVariables(op, liveVariables);
+        Set<LogicalVariable> locallyProducedVars = new HashSet<>();
+        VariableUtilities.getProducedVariablesInDescendantsAndSelf(op, locallyProducedVars);
+        liveVariables.retainAll(locallyProducedVars);
+    }
+
     public static void getUsedVariablesInDescendantsAndSelf(ILogicalOperator op, Collection<LogicalVariable> vars)
             throws AlgebricksException {
         // DFS traversal
@@ -75,6 +111,21 @@
         substituteVariables(op, v1, v2, true, ctx);
     }
 
+    public static void substituteVariables(ILogicalOperator op, Map<LogicalVariable, LogicalVariable> varMap,
+            ITypingContext ctx) throws AlgebricksException {
+        for (Map.Entry<LogicalVariable, LogicalVariable> entry : varMap.entrySet()) {
+            VariableUtilities.substituteVariables(op, entry.getKey(), entry.getValue(), ctx);
+        }
+    }
+
+    public static void substituteVariables(ILogicalOperator op,
+            List<Pair<LogicalVariable, LogicalVariable>> oldVarNewVarMapHistory, ITypingContext ctx)
+                    throws AlgebricksException {
+        for (Pair<LogicalVariable, LogicalVariable> entry : oldVarNewVarMapHistory) {
+            VariableUtilities.substituteVariables(op, entry.first, entry.second, ctx);
+        }
+    }
+
     public static void substituteVariablesInDescendantsAndSelf(ILogicalOperator op, LogicalVariable v1,
             LogicalVariable v2, ITypingContext ctx) throws AlgebricksException {
         for (Mutable<ILogicalOperator> childOp : op.getInputs()) {
@@ -83,6 +134,16 @@
         substituteVariables(op, v1, v2, true, ctx);
     }
 
+    public static void substituteVariablesInDescendantsAndSelf(ILogicalOperator op,
+            Map<LogicalVariable, LogicalVariable> varMap, ITypingContext ctx) throws AlgebricksException {
+        for (Entry<LogicalVariable, LogicalVariable> entry : varMap.entrySet()) {
+            for (Mutable<ILogicalOperator> childOp : op.getInputs()) {
+                substituteVariablesInDescendantsAndSelf(childOp.getValue(), entry.getKey(), entry.getValue(), ctx);
+            }
+            substituteVariables(op, entry.getKey(), entry.getValue(), true, ctx);
+        }
+    }
+
     public static void substituteVariables(ILogicalOperator op, LogicalVariable v1, LogicalVariable v2,
             boolean goThroughNts, ITypingContext ctx) throws AlgebricksException {
         ILogicalOperatorVisitor<Void, Pair<LogicalVariable, LogicalVariable>> visitor = new SubstituteVariableVisitor(
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
index 1091e1a..7077014 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
@@ -86,7 +86,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator iop,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         StructuralPropertiesVector[] pv = new StructuralPropertiesVector[2];
         // In a cost-based optimizer, we would also try to propagate the
         // parent's partitioning requirements.
@@ -97,12 +97,14 @@
         if (op.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) {
             switch (partitioningType) {
                 case PAIRWISE: {
-                    pp1 = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(keysLeftBranch), null);
-                    pp2 = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(keysRightBranch), null);
+                    pp1 = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(keysLeftBranch),
+                            context.getComputationNodeDomain());
+                    pp2 = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(keysRightBranch),
+                            context.getComputationNodeDomain());
                     break;
                 }
                 case BROADCAST: {
-                    pp2 = new BroadcastPartitioningProperty(null);
+                    pp2 = new BroadcastPartitioningProperty(context.getComputationNodeDomain());
                     break;
                 }
                 default: {
@@ -127,9 +129,8 @@
                     public Pair<Boolean, IPartitioningProperty> coordinateRequirements(
                             IPartitioningProperty requirements, IPartitioningProperty firstDeliveredPartitioning,
                             ILogicalOperator op, IOptimizationContext context) throws AlgebricksException {
-                        if (firstDeliveredPartitioning != null
-                                && firstDeliveredPartitioning.getPartitioningType() == requirements
-                                        .getPartitioningType()) {
+                        if (firstDeliveredPartitioning != null && firstDeliveredPartitioning
+                                .getPartitioningType() == requirements.getPartitioningType()) {
                             switch (requirements.getPartitioningType()) {
                                 case UNORDERED_PARTITIONED: {
                                     UnorderedPartitionedProperty upp1 = (UnorderedPartitionedProperty) firstDeliveredPartitioning;
@@ -138,11 +139,16 @@
                                     Set<LogicalVariable> modifuppreq = new ListSet<LogicalVariable>();
                                     Map<LogicalVariable, EquivalenceClass> eqmap = context.getEquivalenceClassMap(op);
                                     Set<LogicalVariable> covered = new ListSet<LogicalVariable>();
+                                    Set<LogicalVariable> keysCurrent = uppreq.getColumnSet();
+                                    List<LogicalVariable> keysFirst = (keysRightBranch.containsAll(keysCurrent))
+                                            ? keysRightBranch : keysLeftBranch;
+                                    List<LogicalVariable> keysSecond = keysFirst == keysRightBranch ? keysLeftBranch
+                                            : keysRightBranch;
                                     for (LogicalVariable r : uppreq.getColumnSet()) {
                                         EquivalenceClass ecSnd = eqmap.get(r);
                                         boolean found = false;
                                         int j = 0;
-                                        for (LogicalVariable rvar : keysRightBranch) {
+                                        for (LogicalVariable rvar : keysFirst) {
                                             if (rvar == r || ecSnd != null && eqmap.get(rvar) == ecSnd) {
                                                 found = true;
                                                 break;
@@ -150,10 +156,10 @@
                                             j++;
                                         }
                                         if (!found) {
-                                            throw new IllegalStateException("Did not find a variable equivalent to "
-                                                    + r + " among " + keysRightBranch);
+                                            throw new IllegalStateException("Did not find a variable equivalent to " + r
+                                                    + " among " + keysFirst);
                                         }
-                                        LogicalVariable v2 = keysLeftBranch.get(j);
+                                        LogicalVariable v2 = keysSecond.get(j);
                                         EquivalenceClass ecFst = eqmap.get(v2);
                                         for (LogicalVariable vset1 : set1) {
                                             if (vset1 == v2 || ecFst != null && eqmap.get(vset1) == ecFst) {
@@ -162,6 +168,9 @@
                                                 break;
                                             }
                                         }
+                                        if (covered.equals(set1)) {
+                                            break;
+                                        }
                                     }
                                     if (!covered.equals(set1)) {
                                         throw new AlgebricksException("Could not modify " + requirements
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPhysicalOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPhysicalOperator.java
index 74200b4..0fb667a 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPhysicalOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPhysicalOperator.java
@@ -61,16 +61,19 @@
         return getOperatorTag().toString();
     }
 
+    @Override
     public void setHostQueryContext(Object context) {
         this.hostQueryContext = context;
     }
 
+    @Override
     public Object getHostQueryContext() {
         return hostQueryContext;
     }
 
     protected PhysicalRequirements emptyUnaryRequirements() {
-        StructuralPropertiesVector[] req = new StructuralPropertiesVector[] { StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR };
+        StructuralPropertiesVector[] req = new StructuralPropertiesVector[] {
+                StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR };
         return new PhysicalRequirements(req, IPartitioningRequirementsCoordinator.NO_COORDINATION);
     }
 
@@ -103,7 +106,8 @@
         return new Pair<int[], int[]>(inputDependencyLabels, outputDependencyLabels);
     }
 
-    protected void contributeOpDesc(IHyracksJobBuilder builder, AbstractLogicalOperator op, IOperatorDescriptor opDesc) {
+    protected void contributeOpDesc(IHyracksJobBuilder builder, AbstractLogicalOperator op,
+            IOperatorDescriptor opDesc) {
         if (op.getExecutionMode() == ExecutionMode.UNPARTITIONED) {
             AlgebricksPartitionConstraint apc = new AlgebricksCountPartitionConstraint(1);
             builder.contributeAlgebricksPartitionConstraint(opDesc, apc);
@@ -113,7 +117,7 @@
 
     protected AlgebricksPipeline[] compileSubplans(IOperatorSchema outerPlanSchema,
             AbstractOperatorWithNestedPlans npOp, IOperatorSchema opSchema, JobGenContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         AlgebricksPipeline[] subplans = new AlgebricksPipeline[npOp.getNestedPlans().size()];
         PlanCompiler pc = new PlanCompiler(context);
         int i = 0;
@@ -124,7 +128,8 @@
     }
 
     private AlgebricksPipeline buildPipelineWithProjection(ILogicalPlan p, IOperatorSchema outerPlanSchema,
-            AbstractOperatorWithNestedPlans npOp, IOperatorSchema opSchema, PlanCompiler pc) throws AlgebricksException {
+            AbstractOperatorWithNestedPlans npOp, IOperatorSchema opSchema, PlanCompiler pc)
+                    throws AlgebricksException {
         if (p.getRoots().size() > 1) {
             throw new NotImplementedException("Nested plans with several roots are not supported.");
         }
@@ -136,14 +141,12 @@
 
         Map<OperatorDescriptorId, IOperatorDescriptor> opMap = nestedJob.getOperatorMap();
         if (opMap.size() != 1) {
-            throw new AlgebricksException(
-                    "Attempting to construct a nested plan with "
-                            + opMap.size()
-                            + " operator descriptors. Currently, nested plans can only consist in linear pipelines of Asterix micro operators.");
+            throw new AlgebricksException("Attempting to construct a nested plan with " + opMap.size()
+                    + " operator descriptors. Currently, nested plans can only consist in linear pipelines of Asterix micro operators.");
         }
 
-        for (OperatorDescriptorId oid : opMap.keySet()) {
-            IOperatorDescriptor opd = opMap.get(oid);
+        for (Map.Entry<OperatorDescriptorId, IOperatorDescriptor> opEntry : opMap.entrySet()) {
+            IOperatorDescriptor opd = opEntry.getValue();
             if (!(opd instanceof AlgebricksMetaOperatorDescriptor)) {
                 throw new AlgebricksException(
                         "Can only generate Hyracks jobs for pipelinable Asterix nested plans, not for "
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPreclusteredGroupByPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPreclusteredGroupByPOperator.java
index 66cb6b2..2d00e4c 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPreclusteredGroupByPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractPreclusteredGroupByPOperator.java
@@ -20,12 +20,13 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.EquivalenceClass;
@@ -54,6 +55,7 @@
 import org.apache.hyracks.algebricks.core.algebra.properties.PropertiesUtil;
 import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
 import org.apache.hyracks.algebricks.core.algebra.properties.UnorderedPartitionedProperty;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
 
 public abstract class AbstractPreclusteredGroupByPOperator extends AbstractPhysicalOperator {
 
@@ -136,7 +138,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1];
         List<ILocalStructuralProperty> localProps = null;
 
@@ -155,7 +157,18 @@
                     AbstractLogicalOperator op2 = (AbstractLogicalOperator) op1.getInputs().get(0).getValue();
                     IPhysicalOperator pop2 = op2.getPhysicalOperator();
                     if (pop2 instanceof AbstractPreclusteredGroupByPOperator) {
-                        List<LogicalVariable> sndOrder = ((AbstractPreclusteredGroupByPOperator) pop2).getGbyColumns();
+                        List<LogicalVariable> gbyColumns = ((AbstractPreclusteredGroupByPOperator) pop2)
+                                .getGbyColumns();
+                        List<LogicalVariable> sndOrder = new ArrayList<>();
+                        sndOrder.addAll(gbyColumns);
+                        Set<LogicalVariable> freeVars = new HashSet<>();
+                        try {
+                            OperatorPropertiesUtil.getFreeVariablesInSelfOrDesc(op2, freeVars);
+                        } catch (AlgebricksException e) {
+                            throw new IllegalStateException(e);
+                        }
+                        // Only considers group key variables defined out-side the outer-most group-by operator.
+                        sndOrder.retainAll(freeVars);
                         groupProp.getColumnSet().addAll(sndOrder);
                         groupProp.getPreferredOrderEnforcer().addAll(sndOrder);
                         goon = false;
@@ -210,9 +223,8 @@
                     tl.add(((VariableReferenceExpression) decorPair.second.getValue()).getVariableReference());
                     fdList.add(new FunctionalDependency(hd, tl));
                 }
-                if (allOk
-                        && PropertiesUtil.matchLocalProperties(localProps, props,
-                                new HashMap<LogicalVariable, EquivalenceClass>(), fdList)) {
+                if (allOk && PropertiesUtil.matchLocalProperties(localProps, props,
+                        new HashMap<LogicalVariable, EquivalenceClass>(), fdList)) {
                     localProps = props;
                 }
             }
@@ -221,7 +233,8 @@
         IPartitioningProperty pp = null;
         AbstractLogicalOperator aop = (AbstractLogicalOperator) op;
         if (aop.getExecutionMode() == ExecutionMode.PARTITIONED) {
-            pp = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(columnList), null);
+            pp = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(columnList),
+                    context.getComputationNodeDomain());
         }
         pv[0] = new StructuralPropertiesVector(pp, localProps);
         return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractScanPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractScanPOperator.java
index 2ab24d2..5159ac5 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractScanPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractScanPOperator.java
@@ -19,6 +19,7 @@
 package org.apache.hyracks.algebricks.core.algebra.operators.physical;
 
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
 import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
 
@@ -26,7 +27,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractStableSortPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractStableSortPOperator.java
index 4b13645..3759956 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractStableSortPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractStableSortPOperator.java
@@ -69,7 +69,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator iop,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         AbstractLogicalOperator op = (AbstractLogicalOperator) iop;
         if (op.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) {
             if (orderProp == null) {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AggregatePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AggregatePOperator.java
index 2a2eb1e..3242fa0 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AggregatePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AggregatePOperator.java
@@ -72,7 +72,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         AggregateOperator aggOp = (AggregateOperator) op;
         StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1];
         if (aggOp.isGlobal() && aggOp.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.UNPARTITIONED) {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AssignPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AssignPOperator.java
index 5b6c40a..5aed63e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AssignPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AssignPOperator.java
@@ -63,7 +63,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BroadcastPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BroadcastPOperator.java
index c0e20d6..69bfe2a 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BroadcastPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BroadcastPOperator.java
@@ -18,15 +18,17 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.physical;
 
+import java.util.ArrayList;
+
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder.TargetConstraint;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
 import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
 import org.apache.hyracks.algebricks.core.algebra.properties.BroadcastPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
 import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
@@ -52,15 +54,14 @@
 
     @Override
     public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
-        AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
         IPartitioningProperty pp = new BroadcastPartitioningProperty(domain);
-        this.deliveredProperties = new StructuralPropertiesVector(pp, op2.getDeliveredPhysicalProperties()
-                .getLocalProperties());
+        // Broadcasts will destroy input local properties.
+        this.deliveredProperties = new StructuralPropertiesVector(pp, new ArrayList<ILocalStructuralProperty>());
     }
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BulkloadPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BulkloadPOperator.java
index 449c04f..dda5456 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BulkloadPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/BulkloadPOperator.java
@@ -35,8 +35,8 @@
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
 import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
@@ -52,13 +52,16 @@
     private final LogicalVariable payload;
     private final List<LogicalVariable> primaryKeys;
     private final List<LogicalVariable> additionalFilteringKeys;
+    private final List<LogicalVariable> additionalNonFilterVars;
     private final IDataSource<?> dataSource;
 
     public BulkloadPOperator(LogicalVariable payload, List<LogicalVariable> keys,
-           List<LogicalVariable> additionalFilteringKeys, IDataSource<?> dataSource) {
+            List<LogicalVariable> additionalFilteringKeys, List<LogicalVariable> additionalNonFilterVars,
+            IDataSource<?> dataSource) {
         this.payload = payload;
         this.primaryKeys = keys;
         this.additionalFilteringKeys = additionalFilteringKeys;
+        this.additionalNonFilterVars = additionalNonFilterVars;
         this.dataSource = dataSource;
     }
 
@@ -69,12 +72,12 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<LogicalVariable> scanVariables = new ArrayList<>();
         scanVariables.addAll(primaryKeys);
         scanVariables.add(new LogicalVariable(-1));
-        IPhysicalPropertiesVector physicalProps = dataSource.getPropertiesProvider().computePropertiesVector(
-                scanVariables);
+        IPhysicalPropertiesVector physicalProps = dataSource.getPropertiesProvider()
+                .computePropertiesVector(scanVariables);
         StructuralPropertiesVector spv = new StructuralPropertiesVector(physicalProps.getPartitioningProperty(),
                 physicalProps.getLocalProperties());
         return new PhysicalRequirements(new IPhysicalPropertiesVector[] { spv },
@@ -85,24 +88,24 @@
     public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context)
             throws AlgebricksException {
         AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
-        deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone();
+        deliveredProperties = op2.getDeliveredPhysicalProperties().clone();
     }
 
+    @SuppressWarnings({ "rawtypes", "unchecked" })
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
-        InsertDeleteOperator insertDeleteOp = (InsertDeleteOperator) op;
+                    throws AlgebricksException {
+        InsertDeleteUpsertOperator insertDeleteOp = (InsertDeleteUpsertOperator) op;
         assert insertDeleteOp.getOperation() == Kind.INSERT;
         assert insertDeleteOp.isBulkload();
-
         IMetadataProvider mp = context.getMetadataProvider();
         IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(op);
         JobSpecification spec = builder.getJobSpec();
         RecordDescriptor inputDesc = JobGenHelper.mkRecordDescriptor(
                 context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context);
-        Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = mp.getInsertRuntime(
-                dataSource, propagatedSchema, typeEnv, primaryKeys, payload, additionalFilteringKeys,
+        Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = mp.getInsertRuntime(dataSource,
+                propagatedSchema, typeEnv, primaryKeys, payload, additionalFilteringKeys, additionalNonFilterVars,
                 inputDesc, context, spec, true);
         builder.contributeHyracksOperator(insertDeleteOp, runtimeAndConstraints.first);
         builder.contributeAlgebricksPartitionConstraint(runtimeAndConstraints.first, runtimeAndConstraints.second);
@@ -120,5 +123,4 @@
         return false;
     }
 
-
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DistributeResultPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DistributeResultPOperator.java
index 5823bc0..b3e8385 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DistributeResultPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DistributeResultPOperator.java
@@ -68,7 +68,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         DistributeResultOperator write = (DistributeResultOperator) op;
         IDataSink sink = write.getDataSink();
         IPartitioningProperty pp = sink.getPartitioningProperty();
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/EmptyTupleSourcePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/EmptyTupleSourcePOperator.java
index 4e3a5bc..dcb7e15 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/EmptyTupleSourcePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/EmptyTupleSourcePOperator.java
@@ -56,7 +56,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return null;
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ExternalGroupByPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ExternalGroupByPOperator.java
index 672e6d0..7772620 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ExternalGroupByPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ExternalGroupByPOperator.java
@@ -24,7 +24,6 @@
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -56,29 +55,29 @@
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
 import org.apache.hyracks.algebricks.core.jobgen.impl.OperatorSchemaImpl;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.operators.aggreg.SerializableAggregatorDescriptorFactory;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor;
 
 public class ExternalGroupByPOperator extends AbstractPhysicalOperator {
 
-    private int tableSize = 0;
-    private int frameLimit = 0;
+    private final int tableSize;
+    private final long fileSize;
+    private final int frameLimit;
     private List<LogicalVariable> columnSet = new ArrayList<LogicalVariable>();
 
     public ExternalGroupByPOperator(List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> gbyList, int frameLimit,
-            int tableSize) {
+            int tableSize, long fileSize) {
         this.tableSize = tableSize;
         this.frameLimit = frameLimit;
+        this.fileSize = fileSize;
         computeColumnSet(gbyList);
     }
 
@@ -136,12 +135,12 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         AbstractLogicalOperator aop = (AbstractLogicalOperator) op;
         if (aop.getExecutionMode() == ExecutionMode.PARTITIONED) {
             StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1];
-            pv[0] = new StructuralPropertiesVector(new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(
-                    columnSet), null), null);
+            pv[0] = new StructuralPropertiesVector(new UnorderedPartitionedProperty(
+                    new ListSet<LogicalVariable>(columnSet), context.getComputationNodeDomain()), null);
             return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION);
         } else {
             return emptyUnaryRequirements();
@@ -151,7 +150,7 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         List<LogicalVariable> gbyCols = getGbyColumns();
         int keys[] = JobGenHelper.variablesToFieldIndexes(gbyCols, inputSchemas[0]);
         GroupByOperator gby = (GroupByOperator) op;
@@ -185,7 +184,7 @@
         IPartialAggregationTypeComputer partialAggregationTypeComputer = context.getPartialAggregationTypeComputer();
         List<Object> intermediateTypes = new ArrayList<Object>();
         int n = aggOp.getExpressions().size();
-        ICopySerializableAggregateFunctionFactory[] aff = new ICopySerializableAggregateFunctionFactory[n];
+        ISerializedAggregateEvaluatorFactory[] aff = new ISerializedAggregateEvaluatorFactory[n];
         int i = 0;
         IExpressionRuntimeProvider expressionRuntimeProvider = context.getExpressionRuntimeProvider();
         IVariableTypeEnvironment aggOpInputEnv = context.getTypeEnvironment(aggOp.getInputs().get(0).getValue());
@@ -194,8 +193,8 @@
             AggregateFunctionCallExpression aggFun = (AggregateFunctionCallExpression) exprRef.getValue();
             aff[i++] = expressionRuntimeProvider.createSerializableAggregateFunctionFactory(aggFun, aggOpInputEnv,
                     inputSchemas, context);
-            intermediateTypes.add(partialAggregationTypeComputer.getType(aggFun, aggOpInputEnv,
-                    context.getMetadataProvider()));
+            intermediateTypes
+                    .add(partialAggregationTypeComputer.getType(aggFun, aggOpInputEnv, context.getMetadataProvider()));
         }
 
         int[] keyAndDecFields = new int[keys.length + fdColumns.length];
@@ -207,23 +206,27 @@
         }
 
         List<LogicalVariable> keyAndDecVariables = new ArrayList<LogicalVariable>();
-        for (Pair<LogicalVariable, Mutable<ILogicalExpression>> p : gby.getGroupByList())
+        for (Pair<LogicalVariable, Mutable<ILogicalExpression>> p : gby.getGroupByList()) {
             keyAndDecVariables.add(p.first);
-        for (Pair<LogicalVariable, Mutable<ILogicalExpression>> p : gby.getDecorList())
+        }
+        for (Pair<LogicalVariable, Mutable<ILogicalExpression>> p : gby.getDecorList()) {
             keyAndDecVariables.add(GroupByOperator.getDecorVariable(p));
+        }
 
-        for (LogicalVariable var : keyAndDecVariables)
+        for (LogicalVariable var : keyAndDecVariables) {
             aggOpInputEnv.setVarType(var, outputEnv.getVarType(var));
+        }
 
         compileSubplans(inputSchemas[0], gby, opSchema, context);
         IOperatorDescriptorRegistry spec = builder.getJobSpec();
         IBinaryComparatorFactory[] comparatorFactories = JobGenHelper.variablesToAscBinaryComparatorFactories(gbyCols,
                 aggOpInputEnv, context);
-        RecordDescriptor recordDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context);
-        IBinaryHashFunctionFactory[] hashFunctionFactories = JobGenHelper.variablesToBinaryHashFunctionFactories(
-                gbyCols, aggOpInputEnv, context);
+        RecordDescriptor recordDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema,
+                context);
+        IBinaryHashFunctionFamily[] hashFunctionFactories = JobGenHelper.variablesToBinaryHashFunctionFamilies(gbyCols,
+                aggOpInputEnv, context);
 
-        ICopySerializableAggregateFunctionFactory[] merges = new ICopySerializableAggregateFunctionFactory[n];
+        ISerializedAggregateEvaluatorFactory[] merges = new ISerializedAggregateEvaluatorFactory[n];
         List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
         IOperatorSchema[] localInputSchemas = new IOperatorSchema[1];
         localInputSchemas[0] = new OperatorSchemaImpl();
@@ -236,10 +239,12 @@
         for (Object type : intermediateTypes) {
             aggOpInputEnv.setVarType(usedVars.get(i++), type);
         }
-        for (LogicalVariable keyVar : keyAndDecVariables)
+        for (LogicalVariable keyVar : keyAndDecVariables) {
             localInputSchemas[0].addVariable(keyVar);
-        for (LogicalVariable usedVar : usedVars)
+        }
+        for (LogicalVariable usedVar : usedVars) {
             localInputSchemas[0].addVariable(usedVar);
+        }
         for (i = 0; i < n; i++) {
             AggregateFunctionCallExpression mergeFun = (AggregateFunctionCallExpression) aggOp.getMergeExpressions()
                     .get(i).getValue();
@@ -249,13 +254,11 @@
         IAggregatorDescriptorFactory aggregatorFactory = new SerializableAggregatorDescriptorFactory(aff);
         IAggregatorDescriptorFactory mergeFactory = new SerializableAggregatorDescriptorFactory(merges);
 
-        ITuplePartitionComputerFactory tpcf = new FieldHashPartitionComputerFactory(keys, hashFunctionFactories);
-        INormalizedKeyComputerFactory normalizedKeyFactory = JobGenHelper.variablesToAscNormalizedKeyComputerFactory(
-                gbyCols, aggOpInputEnv, context);
-        ExternalGroupOperatorDescriptor gbyOpDesc = new ExternalGroupOperatorDescriptor(spec, keyAndDecFields,
-                frameLimit, comparatorFactories, normalizedKeyFactory, aggregatorFactory, mergeFactory,
-                recordDescriptor, new HashSpillableTableFactory(tpcf, tableSize), false);
-
+        INormalizedKeyComputerFactory normalizedKeyFactory = JobGenHelper
+                .variablesToAscNormalizedKeyComputerFactory(gbyCols, aggOpInputEnv, context);
+        ExternalGroupOperatorDescriptor gbyOpDesc = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyAndDecFields, frameLimit, comparatorFactories, normalizedKeyFactory, aggregatorFactory, mergeFactory,
+                recordDescriptor, recordDescriptor, new HashSpillableTableFactory(hashFunctionFactories));
         contributeOpDesc(builder, gby, gbyOpDesc);
         ILogicalOperator src = op.getInputs().get(0).getValue();
         builder.contributeGraphEdge(src, 0, op, 0);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
index 0ff1e47..34c707b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
@@ -76,7 +76,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
index 21be272..17322b6 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
@@ -100,7 +100,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<ILocalStructuralProperty> orderProps = new LinkedList<ILocalStructuralProperty>();
         List<OrderColumn> columns = new ArrayList<OrderColumn>();
         for (OrderColumn oc : orderColumns) {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HybridHashJoinPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HybridHashJoinPOperator.java
index 34e3dc6..a24b87b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HybridHashJoinPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HybridHashJoinPOperator.java
@@ -18,12 +18,14 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.physical;
 
-import java.util.LinkedList;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.logging.Logger;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
+import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
@@ -34,6 +36,8 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
 import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.LocalGroupingProperty;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
 import org.apache.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
@@ -106,14 +110,14 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         int[] keysLeft = JobGenHelper.variablesToFieldIndexes(keysLeftBranch, inputSchemas[0]);
         int[] keysRight = JobGenHelper.variablesToFieldIndexes(keysRightBranch, inputSchemas[1]);
         IVariableTypeEnvironment env = context.getTypeEnvironment(op);
-        IBinaryHashFunctionFactory[] hashFunFactories = JobGenHelper.variablesToBinaryHashFunctionFactories(
-                keysLeftBranch, env, context);
-        IBinaryHashFunctionFamily[] hashFunFamilies = JobGenHelper.variablesToBinaryHashFunctionFamilies(
-                keysLeftBranch, env, context);
+        IBinaryHashFunctionFactory[] hashFunFactories = JobGenHelper
+                .variablesToBinaryHashFunctionFactories(keysLeftBranch, env, context);
+        IBinaryHashFunctionFamily[] hashFunFamilies = JobGenHelper.variablesToBinaryHashFunctionFamilies(keysLeftBranch,
+                env, context);
         IBinaryComparatorFactory[] comparatorFactories = new IBinaryComparatorFactory[keysLeft.length];
         int i = 0;
         IBinaryComparatorFactoryProvider bcfp = context.getBinaryComparatorFactoryProvider();
@@ -146,7 +150,7 @@
                     case INNER: {
                         opDesc = new HybridHashJoinOperatorDescriptor(spec, getMemSizeInFrames(),
                                 maxInputBuildSizeInFrames, aveRecordsPerFrame, getFudgeFactor(), keysLeft, keysRight,
-                                hashFunFactories, comparatorFactories, recDescriptor, predEvaluatorFactory);
+                                hashFunFactories, comparatorFactories, recDescriptor, predEvaluatorFactory, false, null);
                         break;
                     }
                     case LEFT_OUTER: {
@@ -173,9 +177,10 @@
                     case INNER: {
                         opDesc = new OptimizedHybridHashJoinOperatorDescriptor(spec, getMemSizeInFrames(),
                                 maxInputBuildSizeInFrames, getFudgeFactor(), keysLeft, keysRight, hashFunFamilies,
-                                comparatorFactories, recDescriptor, new JoinMultiComparatorFactory(comparatorFactories,
-                                        keysLeft, keysRight), new JoinMultiComparatorFactory(comparatorFactories,
-                                        keysRight, keysLeft), predEvaluatorFactory);
+                                comparatorFactories, recDescriptor,
+                                new JoinMultiComparatorFactory(comparatorFactories, keysLeft, keysRight),
+                                new JoinMultiComparatorFactory(comparatorFactories, keysRight, keysLeft),
+                                predEvaluatorFactory);
                         break;
                     }
                     case LEFT_OUTER: {
@@ -185,9 +190,10 @@
                         }
                         opDesc = new OptimizedHybridHashJoinOperatorDescriptor(spec, getMemSizeInFrames(),
                                 maxInputBuildSizeInFrames, getFudgeFactor(), keysLeft, keysRight, hashFunFamilies,
-                                comparatorFactories, recDescriptor, new JoinMultiComparatorFactory(comparatorFactories,
-                                        keysLeft, keysRight), new JoinMultiComparatorFactory(comparatorFactories,
-                                        keysRight, keysLeft), predEvaluatorFactory, true, nullWriterFactories);
+                                comparatorFactories, recDescriptor,
+                                new JoinMultiComparatorFactory(comparatorFactories, keysLeft, keysRight),
+                                new JoinMultiComparatorFactory(comparatorFactories, keysRight, keysLeft),
+                                predEvaluatorFactory, true, nullWriterFactories);
                         break;
                     }
                     default: {
@@ -209,7 +215,31 @@
     @Override
     protected List<ILocalStructuralProperty> deliveredLocalProperties(ILogicalOperator op, IOptimizationContext context)
             throws AlgebricksException {
-        return new LinkedList<ILocalStructuralProperty>();
+        List<ILocalStructuralProperty> deliveredLocalProperties = new ArrayList<ILocalStructuralProperty>();
+        // Inner join can kick off the "role reversal" optimization, which can kill data properties for the probe side.
+        if (kind == JoinKind.LEFT_OUTER) {
+            AbstractLogicalOperator probeOp = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
+            IPhysicalPropertiesVector probeSideProperties = probeOp.getPhysicalOperator().getDeliveredProperties();
+            List<ILocalStructuralProperty> probeSideLocalProperties = probeSideProperties.getLocalProperties();
+            if (probeSideLocalProperties != null) {
+                // The local grouping property in the probe side will be maintained
+                // and the local ordering property in the probe side will be turned into a local grouping property
+                // if the grouping variables (or sort columns) in the local property contain all the join key variables
+                // for the left branch:
+                // 1. in case spilling is not kicked off, the ordering property is maintained and hence local grouping property is maintained.
+                // 2. if spilling is kicked off, the grouping property is still maintained though the ordering property is destroyed.
+                for (ILocalStructuralProperty property : probeSideLocalProperties) {
+                    Set<LogicalVariable> groupingVars = new ListSet<LogicalVariable>();
+                    Set<LogicalVariable> leftBranchVars = new ListSet<LogicalVariable>();
+                    property.getVariables(groupingVars);
+                    leftBranchVars.addAll(getKeysLeftBranch());
+                    if (groupingVars.containsAll(leftBranchVars)) {
+                        deliveredLocalProperties.add(new LocalGroupingProperty(groupingVars));
+                    }
+                }
+            }
+        }
+        return deliveredLocalProperties;
     }
 
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java
index 5b04e08..a92bd70 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java
@@ -92,10 +92,10 @@
             Object t = env.getVarType(v);
             comparatorFactories[i++] = bcfp.getBinaryComparatorFactory(t, true);
         }
-        
+
         IPredicateEvaluatorFactoryProvider predEvaluatorFactoryProvider = context.getPredicateEvaluatorFactoryProvider();
         IPredicateEvaluatorFactory predEvaluatorFactory = ( predEvaluatorFactoryProvider == null ? null : predEvaluatorFactoryProvider.getPredicateEvaluatorFactory(keysLeft, keysRight));
-        
+
         RecordDescriptor recDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op),
                 propagatedSchema, context);
         IOperatorDescriptorRegistry spec = builder.getJobSpec();
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexBulkloadPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexBulkloadPOperator.java
index ff23703..50ab6aa 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexBulkloadPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexBulkloadPOperator.java
@@ -38,8 +38,8 @@
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder.OrderKind;
 import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
@@ -59,7 +59,7 @@
     private final List<LogicalVariable> primaryKeys;
     private final List<LogicalVariable> secondaryKeys;
     private final List<LogicalVariable> additionalFilteringKeys;
-    private final Mutable<ILogicalExpression> filterExpr;
+    private final ILogicalExpression filterExpr;
     private final IDataSourceIndex<?, ?> dataSourceIndex;
 
     public IndexBulkloadPOperator(List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
@@ -68,7 +68,11 @@
         this.primaryKeys = primaryKeys;
         this.secondaryKeys = secondaryKeys;
         this.additionalFilteringKeys = additionalFilteringKeys;
-        this.filterExpr = filterExpr;
+        if (filterExpr != null) {
+            this.filterExpr = filterExpr.getValue();
+        } else {
+            this.filterExpr = null;
+        }
         this.dataSourceIndex = dataSourceIndex;
     }
 
@@ -79,7 +83,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<LogicalVariable> scanVariables = new ArrayList<>();
         scanVariables.addAll(primaryKeys);
         scanVariables.add(new LogicalVariable(-1));
@@ -113,7 +117,7 @@
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
             throws AlgebricksException {
-        IndexInsertDeleteOperator indexInsertDeleteOp = (IndexInsertDeleteOperator) op;
+        IndexInsertDeleteUpsertOperator indexInsertDeleteOp = (IndexInsertDeleteUpsertOperator) op;
         assert indexInsertDeleteOp.getOperation() == Kind.INSERT;
         assert indexInsertDeleteOp.isBulkload();
 
@@ -124,7 +128,7 @@
                 context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context);
         Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = mp.getIndexInsertRuntime(
                 dataSourceIndex, propagatedSchema, inputSchemas, typeEnv, primaryKeys, secondaryKeys,
-                additionalFilteringKeys, null, inputDesc, context, spec, true);
+                additionalFilteringKeys, filterExpr, inputDesc, context, spec, true);
         builder.contributeHyracksOperator(indexInsertDeleteOp, runtimeAndConstraints.first);
         builder.contributeAlgebricksPartitionConstraint(runtimeAndConstraints.first, runtimeAndConstraints.second);
         ILogicalOperator src = indexInsertDeleteOp.getInputs().get(0).getValue();
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeletePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
similarity index 75%
rename from algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeletePOperator.java
rename to algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
index 29673b4..f29fd6f 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeletePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -37,29 +36,31 @@
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
 import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
-import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
 import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.job.JobSpecification;
 
-public class IndexInsertDeletePOperator extends AbstractPhysicalOperator {
+public class IndexInsertDeleteUpsertPOperator extends AbstractPhysicalOperator {
 
     private final List<LogicalVariable> primaryKeys;
     private final List<LogicalVariable> secondaryKeys;
     private final ILogicalExpression filterExpr;
     private final IDataSourceIndex<?, ?> dataSourceIndex;
     private final List<LogicalVariable> additionalFilteringKeys;
+    private final List<LogicalVariable> prevSecondaryKeys;
+    private final LogicalVariable prevAdditionalFilteringKey;
 
-    public IndexInsertDeletePOperator(List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
+    public IndexInsertDeleteUpsertPOperator(List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
             List<LogicalVariable> additionalFilteringKeys, Mutable<ILogicalExpression> filterExpr,
-            IDataSourceIndex<?, ?> dataSourceIndex) {
+            IDataSourceIndex<?, ?> dataSourceIndex, List<LogicalVariable> prevSecondaryKeys,
+            LogicalVariable prevAdditionalFilteringKey) {
         this.primaryKeys = primaryKeys;
         this.secondaryKeys = secondaryKeys;
         if (filterExpr != null) {
@@ -69,6 +70,8 @@
         }
         this.dataSourceIndex = dataSourceIndex;
         this.additionalFilteringKeys = additionalFilteringKeys;
+        this.prevSecondaryKeys = prevSecondaryKeys;
+        this.prevAdditionalFilteringKey = prevAdditionalFilteringKey;
     }
 
     @Override
@@ -79,12 +82,12 @@
     @Override
     public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
         AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
-        deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone();
+        deliveredProperties = op2.getDeliveredPhysicalProperties().clone();
     }
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>();
         scanVariables.addAll(primaryKeys);
         scanVariables.add(new LogicalVariable(-1));
@@ -100,8 +103,8 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
-        IndexInsertDeleteOperator insertDeleteOp = (IndexInsertDeleteOperator) op;
+                    throws AlgebricksException {
+        IndexInsertDeleteUpsertOperator insertDeleteUpsertOp = (IndexInsertDeleteUpsertOperator) op;
         IMetadataProvider mp = context.getMetadataProvider();
 
         JobSpecification spec = builder.getJobSpec();
@@ -109,18 +112,22 @@
                 context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context);
 
         Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = null;
-        IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(insertDeleteOp);
-        if (insertDeleteOp.getOperation() == Kind.INSERT) {
+        IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(insertDeleteUpsertOp);
+        if (insertDeleteUpsertOp.getOperation() == Kind.INSERT) {
             runtimeAndConstraints = mp.getIndexInsertRuntime(dataSourceIndex, propagatedSchema, inputSchemas, typeEnv,
                     primaryKeys, secondaryKeys, additionalFilteringKeys, filterExpr, inputDesc, context, spec, false);
-        } else {
+        } else if (insertDeleteUpsertOp.getOperation() == Kind.DELETE) {
             runtimeAndConstraints = mp.getIndexDeleteRuntime(dataSourceIndex, propagatedSchema, inputSchemas, typeEnv,
                     primaryKeys, secondaryKeys, additionalFilteringKeys, filterExpr, inputDesc, context, spec);
+        } else if (insertDeleteUpsertOp.getOperation() == Kind.UPSERT) {
+            runtimeAndConstraints = mp.getIndexUpsertRuntime(dataSourceIndex, propagatedSchema, inputSchemas, typeEnv,
+                    primaryKeys, secondaryKeys, additionalFilteringKeys, filterExpr, prevSecondaryKeys,
+                    prevAdditionalFilteringKey, inputDesc, context, spec);
         }
-        builder.contributeHyracksOperator(insertDeleteOp, runtimeAndConstraints.first);
+        builder.contributeHyracksOperator(insertDeleteUpsertOp, runtimeAndConstraints.first);
         builder.contributeAlgebricksPartitionConstraint(runtimeAndConstraints.first, runtimeAndConstraints.second);
-        ILogicalOperator src = insertDeleteOp.getInputs().get(0).getValue();
-        builder.contributeGraphEdge(src, 0, insertDeleteOp, 0);
+        ILogicalOperator src = insertDeleteUpsertOp.getInputs().get(0).getValue();
+        builder.contributeGraphEdge(src, 0, insertDeleteUpsertOp, 0);
     }
 
     @Override
@@ -132,4 +139,12 @@
     public boolean expensiveThanMaterialization() {
         return false;
     }
+
+    public List<LogicalVariable> getPrevSecondaryKeys() {
+        return prevSecondaryKeys;
+    }
+
+    public LogicalVariable getPrevFilteringKeys() {
+        return prevAdditionalFilteringKey;
+    }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeletePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
similarity index 77%
rename from algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeletePOperator.java
rename to algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
index c774f44..f0bd603 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeletePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
@@ -34,12 +34,11 @@
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
 import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
-import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
 import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
 import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
@@ -47,19 +46,24 @@
 import org.apache.hyracks.api.job.JobSpecification;
 
 @SuppressWarnings("rawtypes")
-public class InsertDeletePOperator extends AbstractPhysicalOperator {
+public class InsertDeleteUpsertPOperator extends AbstractPhysicalOperator {
 
-    private LogicalVariable payload;
-    private List<LogicalVariable> keys;
-    private IDataSource<?> dataSource;
+    private final LogicalVariable payload;
+    private final List<LogicalVariable> keys;
+    private final IDataSource<?> dataSource;
     private final List<LogicalVariable> additionalFilteringKeys;
+    private final List<LogicalVariable> additionalNonFilteringFields;
+    private final Kind operation;
 
-    public InsertDeletePOperator(LogicalVariable payload, List<LogicalVariable> keys,
-            List<LogicalVariable> additionalFilteringKeys, IDataSource dataSource) {
+    public InsertDeleteUpsertPOperator(LogicalVariable payload, List<LogicalVariable> keys,
+            List<LogicalVariable> additionalFilteringKeys, IDataSource dataSource, Kind operation,
+            List<LogicalVariable> additionalNonFilteringFields) {
         this.payload = payload;
         this.keys = keys;
         this.dataSource = dataSource;
         this.additionalFilteringKeys = additionalFilteringKeys;
+        this.operation = operation;
+        this.additionalNonFilteringFields = additionalNonFilteringFields;
     }
 
     @Override
@@ -67,15 +71,16 @@
         return PhysicalOperatorTag.INSERT_DELETE;
     }
 
+    // Delivered Properties of this will be (Sorted on PK, Partitioned on PK)
     @Override
     public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
         AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
-        deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone();
+        deliveredProperties = op2.getDeliveredPhysicalProperties().clone();
     }
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>();
         scanVariables.addAll(keys);
         scanVariables.add(new LogicalVariable(-1));
@@ -90,8 +95,8 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
-        InsertDeleteOperator insertDeleteOp = (InsertDeleteOperator) op;
+                    throws AlgebricksException {
+        InsertDeleteUpsertOperator insertDeleteOp = (InsertDeleteUpsertOperator) op;
         IMetadataProvider mp = context.getMetadataProvider();
         IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(op);
         JobSpecification spec = builder.getJobSpec();
@@ -99,12 +104,17 @@
                 context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context);
 
         Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = null;
-        if (insertDeleteOp.getOperation() == Kind.INSERT) {
+        if (operation == Kind.INSERT) {
             runtimeAndConstraints = mp.getInsertRuntime(dataSource, propagatedSchema, typeEnv, keys, payload,
-                    additionalFilteringKeys, inputDesc, context, spec, false);
-        } else {
+                    additionalFilteringKeys, additionalNonFilteringFields, inputDesc, context, spec, false);
+        } else if (operation == Kind.DELETE) {
             runtimeAndConstraints = mp.getDeleteRuntime(dataSource, propagatedSchema, typeEnv, keys, payload,
                     additionalFilteringKeys, inputDesc, context, spec);
+        } else if (operation == Kind.UPSERT) {
+            runtimeAndConstraints = mp.getUpsertRuntime(dataSource, propagatedSchema, typeEnv, keys, payload,
+                    additionalFilteringKeys, additionalNonFilteringFields, inputDesc, context, spec);
+        } else {
+            throw new AlgebricksException("Unsupported Operation " + operation);
         }
 
         builder.contributeHyracksOperator(insertDeleteOp, runtimeAndConstraints.first);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IntersectPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IntersectPOperator.java
new file mode 100644
index 0000000..5f43c3e
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IntersectPOperator.java
@@ -0,0 +1,161 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.operators.physical;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningRequirementsCoordinator;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.LocalOrderProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
+import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.UnorderedPartitionedProperty;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenHelper;
+import org.apache.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.dataflow.std.intersect.IntersectOperatorDescriptor;
+
+public class IntersectPOperator extends AbstractPhysicalOperator {
+
+    @Override
+    public PhysicalOperatorTag getOperatorTag() {
+        return PhysicalOperatorTag.INTERSECT;
+    }
+
+    @Override
+    public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator iop,
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
+        IntersectOperator intersectOp = (IntersectOperator) iop;
+        StructuralPropertiesVector[] pv = new StructuralPropertiesVector[intersectOp.getNumInput()];
+        for (int i = 0; i < intersectOp.getNumInput(); i++) {
+            List<ILocalStructuralProperty> localProps = new ArrayList<>();
+            List<OrderColumn> orderColumns = new ArrayList<>();
+            for (LogicalVariable column : intersectOp.getInputVariables(i)) {
+                orderColumns.add(new OrderColumn(column, OrderOperator.IOrder.OrderKind.ASC));
+            }
+            localProps.add(new LocalOrderProperty(orderColumns));
+            IPartitioningProperty pp = null;
+            if (intersectOp.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) {
+                Set<LogicalVariable> partitioningVariables = new HashSet<>(intersectOp.getInputVariables(i));
+                pp = new UnorderedPartitionedProperty(partitioningVariables, null);
+            }
+            pv[i] = new StructuralPropertiesVector(pp, localProps);
+        }
+        return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION);
+    }
+
+    @Override
+    public void computeDeliveredProperties(ILogicalOperator iop, IOptimizationContext context)
+            throws AlgebricksException {
+        IntersectOperator op = (IntersectOperator) iop;
+        IPartitioningProperty pp = op.getInputs().get(0).getValue().getDeliveredPhysicalProperties()
+                .getPartitioningProperty();
+
+        HashMap<LogicalVariable, LogicalVariable> varMaps = new HashMap<>(op.getOutputVars().size());
+        for (int i = 0; i < op.getOutputVars().size(); i++) {
+            varMaps.put(op.getInputVariables(0).get(i), op.getOutputVars().get(i));
+        }
+        pp.substituteColumnVars(varMaps);
+
+        List<ILocalStructuralProperty> propsLocal = new ArrayList<>();
+        List<OrderColumn> orderColumns = new ArrayList<>();
+        for (LogicalVariable var : op.getOutputVars()) {
+            orderColumns.add(new OrderColumn(var, OrderOperator.IOrder.OrderKind.ASC));
+        }
+        propsLocal.add(new LocalOrderProperty(orderColumns));
+        deliveredProperties = new StructuralPropertiesVector(pp, propsLocal);
+    }
+
+    @Override
+    public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
+            IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
+                    throws AlgebricksException {
+        // logical op should have checked all the mismatch issues.
+        IntersectOperator logicalOp = (IntersectOperator) op;
+        int nInput = logicalOp.getNumInput();
+        int[][] compareFields = new int[nInput][];
+
+        IBinaryComparatorFactory[] comparatorFactories = JobGenHelper.variablesToAscBinaryComparatorFactories(
+                logicalOp.getInputVariables(0), context.getTypeEnvironment(op), context);
+
+        INormalizedKeyComputerFactoryProvider nkcfProvider = context.getNormalizedKeyComputerFactoryProvider();
+        INormalizedKeyComputerFactory nkcf = null;
+
+        if (nkcfProvider != null) {
+            Object type = context.getTypeEnvironment(op).getVarType(logicalOp.getInputVariables(0).get(0));
+            if (type != null) {
+                nkcf = nkcfProvider.getNormalizedKeyComputerFactory(type, true);
+            }
+        }
+
+        for (int i = 0; i < logicalOp.getNumInput(); i++) {
+            compareFields[i] = JobGenHelper.variablesToFieldIndexes(logicalOp.getInputVariables(i), inputSchemas[i]);
+        }
+
+        IOperatorDescriptorRegistry spec = builder.getJobSpec();
+        RecordDescriptor recordDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema,
+                context);
+
+        IntersectOperatorDescriptor opDescriptor = null;
+        try {
+            opDescriptor = new IntersectOperatorDescriptor(spec, nInput, compareFields, nkcf, comparatorFactories,
+                    recordDescriptor);
+        } catch (HyracksException e) {
+            throw new AlgebricksException(e);
+        }
+
+        contributeOpDesc(builder, (AbstractLogicalOperator) op, opDescriptor);
+        for (int i = 0; i < op.getInputs().size(); i++) {
+            builder.contributeGraphEdge(op.getInputs().get(i).getValue(), 0, op, i);
+        }
+    }
+
+    @Override
+    public boolean isMicroOperator() {
+        return false;
+    }
+
+    @Override
+    public boolean expensiveThanMaterialization() {
+        return false;
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/MaterializePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/MaterializePOperator.java
index a154d91..c55a4ae 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/MaterializePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/MaterializePOperator.java
@@ -55,7 +55,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NLJoinPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NLJoinPOperator.java
index a923944..2622ae3 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NLJoinPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NLJoinPOperator.java
@@ -18,7 +18,6 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.physical;
 
-import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -105,19 +104,23 @@
             pp = IPartitioningProperty.UNPARTITIONED;
         }
 
-        List<ILocalStructuralProperty> localProps = new LinkedList<ILocalStructuralProperty>();
-        this.deliveredProperties = new StructuralPropertiesVector(pp, localProps);
+        // Nested loop join maintains the local structure property for the probe side.
+        AbstractLogicalOperator probeOp = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
+        IPhysicalPropertiesVector probeSideProperties = probeOp.getPhysicalOperator().getDeliveredProperties();
+        List<ILocalStructuralProperty> probeSideLocalProperties = probeSideProperties.getLocalProperties();
+        this.deliveredProperties = new StructuralPropertiesVector(pp, probeSideLocalProperties);
     }
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         if (partitioningType != JoinPartitioningType.BROADCAST) {
             throw new NotImplementedException(partitioningType + " nested loop joins are not implemented.");
         }
 
         StructuralPropertiesVector[] pv = new StructuralPropertiesVector[2];
-        pv[0] = new StructuralPropertiesVector(new BroadcastPartitioningProperty(null), null);
+        pv[0] = new StructuralPropertiesVector(new BroadcastPartitioningProperty(context.getComputationNodeDomain()),
+                null);
         pv[1] = new StructuralPropertiesVector(null, null);
         return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION);
     }
@@ -125,7 +128,7 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         AbstractBinaryJoinOperator join = (AbstractBinaryJoinOperator) op;
         RecordDescriptor recDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op),
                 propagatedSchema, context);
@@ -221,12 +224,13 @@
             } catch (AlgebricksException ae) {
                 throw new HyracksDataException(ae);
             }
-            boolean result = binaryBooleanInspector
-                    .getBooleanValue(p.getByteArray(), p.getStartOffset(), p.getLength());
-            if (result)
+            boolean result = binaryBooleanInspector.getBooleanValue(p.getByteArray(), p.getStartOffset(),
+                    p.getLength());
+            if (result) {
                 return 0;
-            else
+            } else {
                 return 1;
+            }
         }
     }
 
@@ -254,28 +258,31 @@
         @Override
         public byte[] getFieldData(int fIdx) {
             int leftFieldCount = refLeft.getFieldCount();
-            if (fIdx < leftFieldCount)
+            if (fIdx < leftFieldCount) {
                 return refLeft.getFieldData(fIdx);
-            else
+            } else {
                 return refRight.getFieldData(fIdx - leftFieldCount);
+            }
         }
 
         @Override
         public int getFieldStart(int fIdx) {
             int leftFieldCount = refLeft.getFieldCount();
-            if (fIdx < leftFieldCount)
+            if (fIdx < leftFieldCount) {
                 return refLeft.getFieldStart(fIdx);
-            else
+            } else {
                 return refRight.getFieldStart(fIdx - leftFieldCount);
+            }
         }
 
         @Override
         public int getFieldLength(int fIdx) {
             int leftFieldCount = refLeft.getFieldCount();
-            if (fIdx < leftFieldCount)
+            if (fIdx < leftFieldCount) {
                 return refLeft.getFieldLength(fIdx);
-            else
+            } else {
                 return refRight.getFieldLength(fIdx - leftFieldCount);
+            }
         }
 
         @Override
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NestedTupleSourcePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NestedTupleSourcePOperator.java
index 7535c82..e8cc05f 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NestedTupleSourcePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NestedTupleSourcePOperator.java
@@ -89,7 +89,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return null;
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/OneToOneExchangePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/OneToOneExchangePOperator.java
index 27a5357..818e1ec 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/OneToOneExchangePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/OneToOneExchangePOperator.java
@@ -51,7 +51,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PreSortedDistinctByPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PreSortedDistinctByPOperator.java
index df65906..fe11f64 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PreSortedDistinctByPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/PreSortedDistinctByPOperator.java
@@ -78,7 +78,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1];
         List<ILocalStructuralProperty> localProps = new ArrayList<ILocalStructuralProperty>();
         List<OrderColumn> orderColumns = new ArrayList<OrderColumn>();
@@ -89,7 +89,8 @@
         IPartitioningProperty pp = null;
         AbstractLogicalOperator aop = (AbstractLogicalOperator) op;
         if (aop.getExecutionMode() == ExecutionMode.PARTITIONED) {
-            pp = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(columnList), null);
+            pp = new UnorderedPartitionedProperty(new ListSet<LogicalVariable>(columnList),
+                    context.getComputationNodeDomain());
         }
         pv[0] = new StructuralPropertiesVector(pp, localProps);
         return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION);
@@ -98,7 +99,7 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
 
         IOperatorDescriptorRegistry spec = builder.getJobSpec();
         int keys[] = JobGenHelper.variablesToFieldIndexes(columnList, inputSchemas[0]);
@@ -119,11 +120,11 @@
             keysAndDecs[i + keys.length] = fdColumns[i];
         }
 
-        IBinaryComparatorFactory[] comparatorFactories = JobGenHelper.variablesToAscBinaryComparatorFactories(
-                columnList, context.getTypeEnvironment(op), context);
+        IBinaryComparatorFactory[] comparatorFactories = JobGenHelper
+                .variablesToAscBinaryComparatorFactories(columnList, context.getTypeEnvironment(op), context);
         IAggregateEvaluatorFactory[] aggFactories = new IAggregateEvaluatorFactory[] {};
-        IAggregatorDescriptorFactory aggregatorFactory = new SimpleAlgebricksAccumulatingAggregatorFactory(
-                aggFactories, keysAndDecs);
+        IAggregatorDescriptorFactory aggregatorFactory = new SimpleAlgebricksAccumulatingAggregatorFactory(aggFactories,
+                keysAndDecs);
 
         RecordDescriptor recordDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema,
                 context);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomMergeExchangePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomMergeExchangePOperator.java
index bfe8b36..e11a64f 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomMergeExchangePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomMergeExchangePOperator.java
@@ -51,7 +51,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomPartitionPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomPartitionPOperator.java
index 42e6bcf..7237d24 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomPartitionPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RandomPartitionPOperator.java
@@ -47,9 +47,10 @@
         this.domain = domain;
     }
 
+    @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         Pair<IConnectorDescriptor, TargetConstraint> connPair = createConnectorDescriptor(builder.getJobSpec(), op,
                 opSchema, context);
         builder.contributeConnectorWithTargetConstraint(op, connPair.first, connPair.second);
@@ -62,9 +63,10 @@
         return false;
     }
 
+    @Override
     public Pair<IConnectorDescriptor, TargetConstraint> createConnectorDescriptor(IConnectorDescriptorRegistry spec,
             ILogicalOperator op, IOperatorSchema opSchema, JobGenContext context) throws AlgebricksException {
-        ITuplePartitionComputerFactory tpcf = new RandomPartitionComputerFactory(domain.cardinality());
+        ITuplePartitionComputerFactory tpcf = new RandomPartitionComputerFactory();
         MToNPartitioningConnectorDescriptor conn = new MToNPartitioningConnectorDescriptor(spec, tpcf);
         return new Pair<IConnectorDescriptor, TargetConstraint>(conn, null);
     }
@@ -77,13 +79,13 @@
     @Override
     public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) {
         AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue();
-        this.deliveredProperties = new StructuralPropertiesVector(new RandomPartitioningProperty(domain), op2
-                .getDeliveredPhysicalProperties().getLocalProperties());
+        this.deliveredProperties = new StructuralPropertiesVector(new RandomPartitioningProperty(domain),
+                op2.getDeliveredPhysicalProperties().getLocalProperties());
     }
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergePOperator.java
index d47c31f..1f70f2a 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionMergePOperator.java
@@ -105,7 +105,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<ILocalStructuralProperty> orderProps = new LinkedList<ILocalStructuralProperty>();
         List<OrderColumn> columns = new ArrayList<OrderColumn>();
         for (OrderColumn oc : partitioningFields) {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionPOperator.java
index dca3d97..9046ce2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RangePartitionPOperator.java
@@ -85,7 +85,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ReplicatePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ReplicatePOperator.java
index 19fb5d4..14a8f16 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ReplicatePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/ReplicatePOperator.java
@@ -50,7 +50,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RunningAggregatePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RunningAggregatePOperator.java
index 2c842e3..8e4ca18 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RunningAggregatePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/RunningAggregatePOperator.java
@@ -63,7 +63,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkPOperator.java
index 6246ad2..71acecf 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkPOperator.java
@@ -75,7 +75,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
       return emptyUnaryRequirements(op.getInputs().size());
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
index 0b100ee..35f9444 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SinkWritePOperator.java
@@ -67,7 +67,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         WriteOperator write = (WriteOperator) op;
         IDataSink sink = write.getDataSink();
         IPartitioningProperty pp = sink.getPartitioningProperty();
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortGroupByPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortGroupByPOperator.java
index 7465711..c08ff85 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortGroupByPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortGroupByPOperator.java
@@ -138,7 +138,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
index f264284..81f6e6b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
@@ -121,7 +121,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<ILocalStructuralProperty> localProps = new ArrayList<ILocalStructuralProperty>(sortColumns.length);
         localProps.add(new LocalOrderProperty(Arrays.asList(sortColumns)));
         StructuralPropertiesVector[] r = new StructuralPropertiesVector[] { new StructuralPropertiesVector(null,
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StableSortPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StableSortPOperator.java
index 164bc17..120c1c4 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StableSortPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StableSortPOperator.java
@@ -38,6 +38,7 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.sort.TopKSorterOperatorDescriptor;
 
 /**
  * This will always be attached to an {@link OrderOperator} logical operator.
@@ -46,10 +47,16 @@
 public class StableSortPOperator extends AbstractStableSortPOperator {
 
     private int maxNumberOfFrames;
+    private int topK;
 
     public StableSortPOperator(int maxNumberOfFrames) {
+        this(maxNumberOfFrames, -1);
+    }
+
+    public StableSortPOperator(int maxNumberOfFrames, int topK) {
         super();
         this.maxNumberOfFrames = maxNumberOfFrames;
+        this.topK = topK;
     }
 
     @Override
@@ -65,9 +72,10 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         IOperatorDescriptorRegistry spec = builder.getJobSpec();
-        RecordDescriptor recDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context);
+        RecordDescriptor recDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema,
+                context);
         int n = sortColumns.length;
         int[] sortFields = new int[n];
         IBinaryComparatorFactory[] comps = new IBinaryComparatorFactory[n];
@@ -90,10 +98,41 @@
             i++;
         }
 
-        ExternalSortOperatorDescriptor sortOpDesc = new ExternalSortOperatorDescriptor(spec, maxNumberOfFrames,
-                sortFields, nkcf, comps, recDescriptor);
-        contributeOpDesc(builder, (AbstractLogicalOperator) op, sortOpDesc);
-        ILogicalOperator src = op.getInputs().get(0).getValue();
-        builder.contributeGraphEdge(src, 0, op, 0);
+        // topK == -1 means that a topK value is not provided.
+        if (topK == -1) {
+            ExternalSortOperatorDescriptor sortOpDesc = new ExternalSortOperatorDescriptor(spec, maxNumberOfFrames,
+                    sortFields, nkcf, comps, recDescriptor);
+            contributeOpDesc(builder, (AbstractLogicalOperator) op, sortOpDesc);
+            ILogicalOperator src = op.getInputs().get(0).getValue();
+            builder.contributeGraphEdge(src, 0, op, 0);
+        } else {
+            // Since topK value is provided, topK optimization is possible.
+            // We call topKSorter instead of calling ExternalSortOperator.
+            TopKSorterOperatorDescriptor sortOpDesc = new TopKSorterOperatorDescriptor(spec, maxNumberOfFrames, topK,
+                    sortFields, nkcf, comps, recDescriptor);
+            contributeOpDesc(builder, (AbstractLogicalOperator) op, sortOpDesc);
+            ILogicalOperator src = op.getInputs().get(0).getValue();
+            builder.contributeGraphEdge(src, 0, op, 0);
+        }
     }
+
+    @Override
+    public String toString() {
+        if (orderProp == null) {
+            if (topK != -1) {
+                // A topK value is introduced.
+                return getOperatorTag().toString() + " [topK: " + topK + "]";
+            } else {
+                return getOperatorTag().toString();
+            }
+        } else {
+            if (topK != -1) {
+                // A topK value is introduced.
+                return getOperatorTag().toString() + " [topK: " + topK + "]" + " " + orderProp;
+            } else {
+                return getOperatorTag().toString() + " " + orderProp;
+            }
+        }
+    }
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamLimitPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamLimitPOperator.java
index f47e671..99be356 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamLimitPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamLimitPOperator.java
@@ -71,7 +71,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         AbstractLogicalOperator limitOp = (AbstractLogicalOperator) op;
         if (limitOp.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.UNPARTITIONED) {
             StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1];
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamProjectPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamProjectPOperator.java
index 326172f..184cbbc 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamProjectPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamProjectPOperator.java
@@ -49,7 +49,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamSelectPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamSelectPOperator.java
index 2c40b3b..9b35922 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamSelectPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StreamSelectPOperator.java
@@ -54,7 +54,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StringStreamingScriptPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StringStreamingScriptPOperator.java
index bd46230..1f5159d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StringStreamingScriptPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/StringStreamingScriptPOperator.java
@@ -49,7 +49,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SubplanPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SubplanPOperator.java
index ecb7186..9fc0dd4 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SubplanPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SubplanPOperator.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
 import org.apache.hyracks.algebricks.core.algebra.base.IHyracksJobBuilder;
@@ -78,14 +77,14 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         SubplanOperator subplan = (SubplanOperator) op;
         if (subplan.getNestedPlans().size() != 1) {
             throw new NotImplementedException("Subplan currently works only for one nested plan with one root.");
@@ -93,8 +92,8 @@
         AlgebricksPipeline[] subplans = compileSubplans(inputSchemas[0], subplan, opSchema, context);
         assert (subplans.length == 1);
         AlgebricksPipeline np = subplans[0];
-        RecordDescriptor inputRecordDesc = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op.getInputs().get(0).getValue()),
-                inputSchemas[0], context);
+        RecordDescriptor inputRecordDesc = JobGenHelper.mkRecordDescriptor(
+                context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context);
         INullWriterFactory[] nullWriterFactories = new INullWriterFactory[np.getOutputWidth()];
         for (int i = 0; i < nullWriterFactories.length; i++) {
             nullWriterFactories[i] = context.getNullWriterFactory();
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/TokenizePOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/TokenizePOperator.java
index e1983d2..557a657 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/TokenizePOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/TokenizePOperator.java
@@ -35,7 +35,7 @@
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.TokenizeOperator;
 import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
 import org.apache.hyracks.algebricks.core.algebra.properties.PhysicalRequirements;
@@ -66,7 +66,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         return emptyUnaryRequirements();
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/UnionAllPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/UnionAllPOperator.java
index 4d51bf0..e6517d0 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/UnionAllPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/UnionAllPOperator.java
@@ -64,7 +64,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         StructuralPropertiesVector pv0 = StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR;
         StructuralPropertiesVector pv1 = StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR;
         return new PhysicalRequirements(new StructuralPropertiesVector[] { pv0, pv1 },
@@ -75,18 +75,6 @@
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema)
             throws AlgebricksException {
-        UnionAllOperator unionOp = (UnionAllOperator) op;
-        int n = unionOp.getVariableMappings().size();
-        int[] leftColumns = new int[n];
-        int[] rightColumns = new int[n];
-        int i = 0;
-        for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> t : unionOp.getVariableMappings()) {
-            int posLeft = inputSchemas[0].findVariable(t.first);
-            leftColumns[i] = posLeft;
-            int posRight = inputSchemas[1].findVariable(t.second);
-            rightColumns[i] = posRight;
-            ++i;
-        }
 
         IOperatorDescriptorRegistry spec = builder.getJobSpec();
         RecordDescriptor recordDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context);
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/WriteResultPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/WriteResultPOperator.java
index 9c8ddc3..7ec1914 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/WriteResultPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/WriteResultPOperator.java
@@ -80,7 +80,7 @@
 
     @Override
     public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op,
-            IPhysicalPropertiesVector reqdByParent) {
+            IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>();
         scanVariables.addAll(keys);
         scanVariables.add(new LogicalVariable(-1));
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
index 75f6290..082c2ce 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
@@ -16,41 +16,56 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.core.algebra.plan;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-
-/*
- * Author: Guangqiang Li
- * Created on Jul 9, 2009 
- */
-public class ALogicalPlanImpl implements ILogicalPlan {
-    private List<Mutable<ILogicalOperator>> roots;
-
-    public ALogicalPlanImpl() {
-        this.roots = new ArrayList<Mutable<ILogicalOperator>>();
-    }
-
-    public ALogicalPlanImpl(List<Mutable<ILogicalOperator>> roots) {
-        this.roots = roots;
-    }
-
-    public ALogicalPlanImpl(Mutable<ILogicalOperator> root) {
-        roots = new ArrayList<Mutable<ILogicalOperator>>(1);
-        roots.add(root);
-    }
-
-    public List<Mutable<ILogicalOperator>> getRoots() {
-        return roots;
-    }
-
-    public void setRoots(List<Mutable<ILogicalOperator>> roots) {
-        this.roots = roots;
-    }
-}
+package org.apache.hyracks.algebricks.core.algebra.plan;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
+import org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
+
+public class ALogicalPlanImpl implements ILogicalPlan {
+    private List<Mutable<ILogicalOperator>> roots;
+
+    public ALogicalPlanImpl() {
+        this.roots = new ArrayList<Mutable<ILogicalOperator>>();
+    }
+
+    public ALogicalPlanImpl(List<Mutable<ILogicalOperator>> roots) {
+        this.roots = roots;
+    }
+
+    public ALogicalPlanImpl(Mutable<ILogicalOperator> root) {
+        roots = new ArrayList<Mutable<ILogicalOperator>>(1);
+        roots.add(root);
+    }
+
+    @Override
+    public List<Mutable<ILogicalOperator>> getRoots() {
+        return roots;
+    }
+
+    public void setRoots(List<Mutable<ILogicalOperator>> roots) {
+        this.roots = roots;
+    }
+
+    public static String prettyPrintPlan(ILogicalPlan plan) throws AlgebricksException {
+        LogicalOperatorPrettyPrintVisitor pvisitor = new LogicalOperatorPrettyPrintVisitor();
+        StringBuilder buffer = new StringBuilder();
+        PlanPrettyPrinter.printPlan(plan, buffer, pvisitor, 0);
+        return buffer.toString();
+    }
+
+    @Override
+    public String toString() {
+        try {
+            return ALogicalPlanImpl.prettyPrintPlan(this);
+        } catch (AlgebricksException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
index 8c5b35b..a7ea706 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
@@ -28,6 +28,7 @@
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
@@ -36,17 +37,19 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -150,6 +153,11 @@
         addIndent(buffer, indent).append("order ");
         for (Pair<OrderOperator.IOrder, Mutable<ILogicalExpression>> p : op.getOrderExpressions()) {
             String fst;
+
+            if (op.getTopK() != -1) {
+                buffer.append("(topK: " + op.getTopK() + ") ");
+            }
+
             switch (p.first.getKind()) {
                 case ASC: {
                     fst = "ASC";
@@ -164,6 +172,7 @@
                 }
             }
             buffer.append("(" + fst + ", " + p.second.getValue().accept(exprVisitor, indent) + ") ");
+
         }
         return buffer.toString();
     }
@@ -246,6 +255,36 @@
     }
 
     @Override
+    public String visitIntersectOperator(IntersectOperator op, Integer indent) throws AlgebricksException {
+        StringBuilder builder = new StringBuilder();
+        addIndent(builder, indent).append("intersect (");
+
+        builder.append('[');
+        for (int i = 0; i < op.getOutputVars().size(); i++) {
+            if (i > 0) {
+                builder.append(", ");
+            }
+            builder.append(op.getOutputVars().get(i));
+        }
+        builder.append("] <- [");
+        for (int i = 0; i < op.getNumInput(); i++) {
+            if (i > 0) {
+                builder.append(", ");
+            }
+            builder.append('[');
+            for (int j = 0; j < op.getInputVariables(i).size(); j++) {
+                if (j > 0) {
+                    builder.append(", ");
+                }
+                builder.append(op.getInputVariables(i).get(j));
+            }
+            builder.append(']');
+        }
+        builder.append("])");
+        return builder.toString();
+    }
+
+    @Override
     public String visitUnnestOperator(UnnestOperator op, Integer indent) throws AlgebricksException {
         StringBuilder buffer = new StringBuilder();
         addIndent(buffer, indent).append("unnest " + op.getVariable());
@@ -257,9 +296,31 @@
     }
 
     @Override
-    public String visitUnnestMapOperator(UnnestMapOperator op, Integer indent) throws AlgebricksException {
+    public String visitOuterUnnestOperator(OuterUnnestOperator op, Integer indent) throws AlgebricksException {
         StringBuilder buffer = new StringBuilder();
-        addIndent(buffer, indent).append("unnest-map " + op.getVariables() + " <- "
+        addIndent(buffer, indent).append("outer-unnest " + op.getVariable());
+        if (op.getPositionalVariable() != null) {
+            buffer.append(" at " + op.getPositionalVariable());
+        }
+        buffer.append(" <- " + op.getExpressionRef().getValue().accept(exprVisitor, indent));
+        return buffer.toString();
+    }
+
+    @Override
+    public String visitUnnestMapOperator(UnnestMapOperator op, Integer indent) throws AlgebricksException {
+        return printAbstractUnnestMapOperator(op, indent, "unnest-map");
+    }
+
+    @Override
+    public String visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Integer indent)
+            throws AlgebricksException {
+        return printAbstractUnnestMapOperator(op, indent, "left-outer-unnest-map");
+    }
+
+    private String printAbstractUnnestMapOperator(AbstractUnnestMapOperator op, Integer indent, String opSignature)
+            throws AlgebricksException {
+        StringBuilder buffer = new StringBuilder();
+        addIndent(buffer, indent).append(opSignature + " " + op.getVariables() + " <- "
                 + op.getExpressionRef().getValue().accept(exprVisitor, indent));
         return buffer.toString();
     }
@@ -313,18 +374,19 @@
     }
 
     @Override
-    public String visitInsertDeleteOperator(InsertDeleteOperator op, Integer indent) throws AlgebricksException {
+    public String visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, Integer indent)
+            throws AlgebricksException {
         StringBuilder buffer = new StringBuilder();
-        if (op.getOperation() == Kind.INSERT)
-            addIndent(buffer, indent).append("insert ")
-                    .append(op.getPayloadExpression().getValue().accept(exprVisitor, indent)).append(" into ");
-        else
-            addIndent(buffer, indent).append("delete from ");
-        buffer.append(op.getDataSource()).append(" partitioned by ");
+        String header = getIndexOpString(op.getOperation());
+        addIndent(buffer, indent).append(header).append(op.getDataSource()).append(" from ")
+                .append(op.getPayloadExpression().getValue().accept(exprVisitor, indent));
+        if (op.getAdditionalNonFilteringExpressions() != null) {
+            pprintExprList(op.getAdditionalNonFilteringExpressions(), buffer, indent);
+        }
+        buffer.append(" partitioned by ");
         pprintExprList(op.getPrimaryKeyExpressions(), buffer, indent);
-        if (op.getAdditionalFilteringExpressions() != null) {
-            buffer.append(" filtered by ");
-            pprintExprList(op.getAdditionalFilteringExpressions(), buffer, indent);
+        if (op.getOperation() == Kind.UPSERT) {
+            buffer.append(" out: ([record-before-upsert:" + op.getPrevRecordVar() + "]) ");
         }
         if (op.isBulkload()) {
             buffer.append(" [bulkload]");
@@ -333,20 +395,19 @@
     }
 
     @Override
-    public String visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, Integer indent)
+    public String visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, Integer indent)
             throws AlgebricksException {
         StringBuilder buffer = new StringBuilder();
-        addIndent(buffer, indent).append(op.getOperation() == Kind.INSERT ? "insert " : "delete ");
-        pprintExprList(op.getSecondaryKeyExpressions(), buffer, indent);
-        buffer.append(op.getOperation() == Kind.INSERT ? " into " : " from ").append(op.getIndexName()).append(" on ")
-                .append(op.getDataSourceIndex().getDataSource()).append(" partitioned by ");
-        pprintExprList(op.getPrimaryKeyExpressions(), buffer, indent);
-        if (op.getFilterExpression() != null || op.getAdditionalFilteringExpressions() != null) {
-            buffer.append(" filtered by ");
-            if (op.getFilterExpression() != null)
-                buffer.append(op.getFilterExpression().getValue().accept(exprVisitor, indent));
-            if (op.getAdditionalFilteringExpressions() != null)
-                pprintExprList(op.getAdditionalFilteringExpressions(), buffer, indent);
+        String header = getIndexOpString(op.getOperation());
+        addIndent(buffer, indent).append(header).append(op.getIndexName()).append(" on ")
+                .append(op.getDataSourceIndex().getDataSource()).append(" from ");
+        if (op.getOperation() == Kind.UPSERT) {
+            buffer.append(" replace:");
+            pprintExprList(op.getPrevSecondaryKeyExprs(), buffer, indent);
+            buffer.append(" with:");
+            pprintExprList(op.getSecondaryKeyExpressions(), buffer, indent);
+        } else {
+            pprintExprList(op.getSecondaryKeyExpressions(), buffer, indent);
         }
         if (op.isBulkload()) {
             buffer.append(" [bulkload]");
@@ -354,6 +415,18 @@
         return buffer.toString();
     }
 
+    public String getIndexOpString(Kind opKind) {
+        switch (opKind) {
+            case DELETE:
+                return "delete from ";
+            case INSERT:
+                return "insert into ";
+            case UPSERT:
+                return "upsert into ";
+        }
+        return null;
+    }
+
     @Override
     public String visitTokenizeOperator(TokenizeOperator op, Integer indent) throws AlgebricksException {
         StringBuilder buffer = new StringBuilder();
@@ -376,7 +449,7 @@
         return buffer.toString();
     }
 
-    protected static final StringBuilder addIndent(StringBuilder buffer, int level) {
+    protected static StringBuilder addIndent(StringBuilder buffer, int level) {
         for (int i = 0; i < level; ++i) {
             buffer.append(' ');
         }
@@ -437,14 +510,4 @@
         }
         sb.append("]");
     }
-
-    @Override
-    public String visitExternalDataLookupOperator(ExternalDataLookupOperator op, Integer indent)
-            throws AlgebricksException {
-        StringBuilder buffer = new StringBuilder();
-        addIndent(buffer, indent)
-                .append("external-instant-lookup " + op.getVariables() + " <- " + op.getExpressionRef().getValue());
-        return buffer.toString();
-    }
-
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/PlanPrettyPrinter.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/PlanPrettyPrinter.java
index 50e0a00..fcf53ec 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/PlanPrettyPrinter.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/PlanPrettyPrinter.java
@@ -16,79 +16,79 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.core.algebra.prettyprint;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-import org.apache.hyracks.algebricks.core.algebra.base.IPhysicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
-
-public class PlanPrettyPrinter {
-    public static void printPlan(ILogicalPlan plan, StringBuilder out, LogicalOperatorPrettyPrintVisitor pvisitor,
-            int indent) throws AlgebricksException {
-        for (Mutable<ILogicalOperator> root : plan.getRoots()) {
-            printOperator((AbstractLogicalOperator) root.getValue(), out, pvisitor, indent);
-        }
-    }
-
-    public static void printPhysicalOps(ILogicalPlan plan, StringBuilder out, int indent) {
-        for (Mutable<ILogicalOperator> root : plan.getRoots()) {
-            printPhysicalOperator((AbstractLogicalOperator) root.getValue(), indent, out);
-        }
-    }
-
-    public static void printOperator(AbstractLogicalOperator op, StringBuilder out,
-            LogicalOperatorPrettyPrintVisitor pvisitor, int indent) throws AlgebricksException {
-        out.append(op.accept(pvisitor, indent));
-        IPhysicalOperator pOp = op.getPhysicalOperator();
-
-        if (pOp != null) {
-            out.append("\n");
-            pad(out, indent);
-            appendln(out, "-- " + pOp.toString() + "  |" + op.getExecutionMode() + "|");
-        } else {
-            appendln(out, " -- |" + op.getExecutionMode() + "|");
-        }
-
-        for (Mutable<ILogicalOperator> i : op.getInputs()) {
-            printOperator((AbstractLogicalOperator) i.getValue(), out, pvisitor, indent + 2);
-        }
-
-    }
-
-    public static void printPhysicalOperator(AbstractLogicalOperator op, int indent, StringBuilder out) {
-        IPhysicalOperator pOp = op.getPhysicalOperator();
-        pad(out, indent);
-        appendln(out, "-- " + pOp.toString() + "  |" + op.getExecutionMode() + "|");
-        if (op.hasNestedPlans()) {
-            AbstractOperatorWithNestedPlans opNest = (AbstractOperatorWithNestedPlans) op;
-            for (ILogicalPlan p : opNest.getNestedPlans()) {
-                pad(out, indent + 8);
-                appendln(out, "{");
-                printPhysicalOps(p, out, indent + 10);
-                pad(out, indent + 8);
-                appendln(out, "}");
-            }
-        }
-
-        for (Mutable<ILogicalOperator> i : op.getInputs()) {
-            printPhysicalOperator((AbstractLogicalOperator) i.getValue(), indent + 2, out);
-        }
-
-    }
-
-    private static void appendln(StringBuilder buf, String s) {
-        buf.append(s);
-        buf.append("\n");
-    }
-
-    private static void pad(StringBuilder buf, int indent) {
-        for (int i = 0; i < indent; ++i) {
-            buf.append(' ');
-        }
-    }
-}
+package org.apache.hyracks.algebricks.core.algebra.prettyprint;
+
+import org.apache.commons.lang3.mutable.Mutable;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import org.apache.hyracks.algebricks.core.algebra.base.IPhysicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
+
+public class PlanPrettyPrinter {
+    public static void printPlan(ILogicalPlan plan, StringBuilder out, LogicalOperatorPrettyPrintVisitor pvisitor,
+            int indent) throws AlgebricksException {
+        for (Mutable<ILogicalOperator> root : plan.getRoots()) {
+            printOperator((AbstractLogicalOperator) root.getValue(), out, pvisitor, indent);
+        }
+    }
+
+    public static void printPhysicalOps(ILogicalPlan plan, StringBuilder out, int indent) {
+        for (Mutable<ILogicalOperator> root : plan.getRoots()) {
+            printPhysicalOperator((AbstractLogicalOperator) root.getValue(), indent, out);
+        }
+    }
+
+    public static void printOperator(AbstractLogicalOperator op, StringBuilder out,
+            LogicalOperatorPrettyPrintVisitor pvisitor, int indent) throws AlgebricksException {
+        out.append(op.accept(pvisitor, indent));
+        IPhysicalOperator pOp = op.getPhysicalOperator();
+
+        if (pOp != null) {
+            out.append("\n");
+            pad(out, indent);
+            appendln(out, "-- " + pOp.toString() + "  |" + op.getExecutionMode() + "|");
+        } else {
+            appendln(out, " -- |" + op.getExecutionMode() + "|");
+        }
+
+        for (Mutable<ILogicalOperator> i : op.getInputs()) {
+            printOperator((AbstractLogicalOperator) i.getValue(), out, pvisitor, indent + 2);
+        }
+
+    }
+
+    public static void printPhysicalOperator(AbstractLogicalOperator op, int indent, StringBuilder out) {
+        IPhysicalOperator pOp = op.getPhysicalOperator();
+        pad(out, indent);
+        appendln(out, "-- " + pOp.toString() + "  |" + op.getExecutionMode() + "|");
+        if (op.hasNestedPlans()) {
+            AbstractOperatorWithNestedPlans opNest = (AbstractOperatorWithNestedPlans) op;
+            for (ILogicalPlan p : opNest.getNestedPlans()) {
+                pad(out, indent + 8);
+                appendln(out, "{");
+                printPhysicalOps(p, out, indent + 10);
+                pad(out, indent + 8);
+                appendln(out, "}");
+            }
+        }
+
+        for (Mutable<ILogicalOperator> i : op.getInputs()) {
+            printPhysicalOperator((AbstractLogicalOperator) i.getValue(), indent + 2, out);
+        }
+
+    }
+
+    private static void appendln(StringBuilder buf, String s) {
+        buf.append(s);
+        buf.append("\n");
+    }
+
+    private static void pad(StringBuilder buf, int indent) {
+        for (int i = 0; i < indent; ++i) {
+            buf.append(' ');
+        }
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/BroadcastPartitioningProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/BroadcastPartitioningProperty.java
index 5926a20..9d76c1b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/BroadcastPartitioningProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/BroadcastPartitioningProperty.java
@@ -57,4 +57,8 @@
         this.domain = domain;
     }
 
-}
\ No newline at end of file
+    @Override
+    public void substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java
index 908dcc1..719c70e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java
@@ -18,26 +18,53 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.properties;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint.PartitionConstraintType;
+
 public class DefaultNodeGroupDomain implements INodeDomain {
 
-    private String groupName;
+    private List<String> nodes = new ArrayList<>();
 
-    public DefaultNodeGroupDomain(String groupName) {
-        this.groupName = groupName;
+    public DefaultNodeGroupDomain(List<String> nodes) {
+        this.nodes.addAll(nodes);
+    }
+
+    public DefaultNodeGroupDomain(DefaultNodeGroupDomain domain) {
+        this.nodes.addAll(domain.nodes);
+    }
+
+    public DefaultNodeGroupDomain(AlgebricksPartitionConstraint clusterLocations) {
+        if (clusterLocations.getPartitionConstraintType() == PartitionConstraintType.ABSOLUTE) {
+            AlgebricksAbsolutePartitionConstraint absPc = (AlgebricksAbsolutePartitionConstraint) clusterLocations;
+            String[] locations = absPc.getLocations();
+            for (String location : locations) {
+                nodes.add(location);
+            }
+        } else {
+            throw new IllegalStateException("A node domain can only take absolute location constraints.");
+        }
     }
 
     @Override
     public boolean sameAs(INodeDomain domain) {
-        return true;
+        if (!(domain instanceof DefaultNodeGroupDomain)) {
+            return false;
+        }
+        DefaultNodeGroupDomain nodeDomain = (DefaultNodeGroupDomain) domain;
+        return nodes.equals(nodeDomain.nodes);
     }
 
     @Override
     public String toString() {
-        return "AsterixDomain(" + groupName + ")";
+        return nodes.toString();
     }
 
     @Override
     public Integer cardinality() {
-        return null;
+        return nodes.size();
     }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java
index ea9769a..af29994 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java
@@ -36,7 +36,7 @@
      * Returns the retained property regarding to a collection of variables,
      * e.g., some variables used in the property may not exist in the input
      * collection and hence the data property changes.
-     * 
+     *
      * @param vars
      *            , an input collection of variables
      * @return the retained data property.
@@ -45,7 +45,7 @@
 
     /**
      * Returns the additional data property within each group, which is dictated by the group keys.
-     * 
+     *
      * @param vars
      *            , group keys.
      * @return the additional data property within each group.
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java
index 3142d10..89ac374 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningProperty.java
@@ -26,11 +26,11 @@
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 
 public interface IPartitioningProperty extends IStructuralProperty {
-    public enum PartitioningType {
+    enum PartitioningType {
         UNPARTITIONED, RANDOM, BROADCAST, UNORDERED_PARTITIONED, ORDERED_PARTITIONED
     }
 
-    static final INodeDomain DOMAIN_FOR_UNPARTITIONED_DATA = new INodeDomain() {
+    INodeDomain DOMAIN_FOR_UNPARTITIONED_DATA = new INodeDomain() {
         @Override
         public boolean sameAs(INodeDomain domain) {
             return domain == this;
@@ -42,7 +42,7 @@
         }
     };
 
-    public static final IPartitioningProperty UNPARTITIONED = new IPartitioningProperty() {
+    IPartitioningProperty UNPARTITIONED = new IPartitioningProperty() {
 
         @Override
         public PartitioningType getPartitioningType() {
@@ -72,14 +72,20 @@
         public void setNodeDomain(INodeDomain domain) {
             throw new IllegalStateException();
         }
+
+        @Override
+        public void substituteColumnVars(Map<LogicalVariable, LogicalVariable> variableMap) {
+        }
     };
 
-    public abstract PartitioningType getPartitioningType();
+    PartitioningType getPartitioningType();
 
-    public abstract void normalize(Map<LogicalVariable, EquivalenceClass> equivalenceClasses,
+    void normalize(Map<LogicalVariable, EquivalenceClass> equivalenceClasses,
             List<FunctionalDependency> fds);
 
-    public abstract INodeDomain getNodeDomain();
+    INodeDomain getNodeDomain();
 
-    public abstract void setNodeDomain(INodeDomain domain);
+    void setNodeDomain(INodeDomain domain);
+
+    void substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap);
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java
index bca500a..e298691 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java
@@ -31,7 +31,6 @@
     public List<ILocalStructuralProperty> getLocalProperties();
 
     /**
-     * 
      * @param reqd
      *            vector of required properties
      * @param equivalenceClasses
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java
index 1097dff..6b39a8d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java
@@ -84,13 +84,17 @@
 
     @Override
     public boolean equals(Object object) {
-        LocalOrderProperty lop = (LocalOrderProperty) object;
-        return orderColumns.equals(lop.orderColumns);
+        if (object instanceof LocalOrderProperty) {
+            LocalOrderProperty lop = (LocalOrderProperty) object;
+            return orderColumns.equals(lop.orderColumns);
+        } else {
+            return false;
+        }
     }
 
     /**
      * Whether current property implies the required property
-     * 
+     *
      * @param required
      *            , a required property
      * @return true if the current property satisfies the required property; otherwise false.
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java
index f28bc56..44df740 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/OrderedPartitionedProperty.java
@@ -81,4 +81,13 @@
         this.domain = domain;
     }
 
+    @Override
+    public void substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
+        for (OrderColumn orderColumn : orderColumns) {
+            if (varMap.containsKey(orderColumn.getColumn())) {
+                orderColumn.setColumn(varMap.get(orderColumn.getColumn()));
+            }
+        }
+    }
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
index af40f67..0b8d759 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
@@ -55,9 +55,8 @@
         return k;
     }
 
-    public static boolean matchLocalProperties(List<ILocalStructuralProperty> reqd,
-            List<ILocalStructuralProperty> dlvd, Map<LogicalVariable, EquivalenceClass> equivalenceClasses,
-            List<FunctionalDependency> fds) {
+    public static boolean matchLocalProperties(List<ILocalStructuralProperty> reqd, List<ILocalStructuralProperty> dlvd,
+            Map<LogicalVariable, EquivalenceClass> equivalenceClasses, List<FunctionalDependency> fds) {
         if (reqd == null) {
             return true;
         }
@@ -118,7 +117,7 @@
             boolean mayExpandProperties) {
         INodeDomain dom1 = reqd.getNodeDomain();
         INodeDomain dom2 = dlvd.getNodeDomain();
-        if (dom1 != null && dom2 != null && !dom1.sameAs(dom2)) {
+        if (!dom1.sameAs(dom2)) {
             return false;
         }
 
@@ -133,9 +132,9 @@
                         UnorderedPartitionedProperty ur = (UnorderedPartitionedProperty) reqd;
                         UnorderedPartitionedProperty ud = (UnorderedPartitionedProperty) dlvd;
                         if (mayExpandProperties) {
-                            return isPrefixOf(ud.getColumnSet().iterator(), ur.getColumnSet().iterator());
+                            return (!ud.getColumnSet().isEmpty() && ur.getColumnSet().containsAll(ud.getColumnSet()));
                         } else {
-                            return ur.getColumnSet().equals(ud.getColumnSet());
+                            return (ud.getColumnSet().equals(ur.getColumnSet()));
                         }
                     }
                     case ORDERED_PARTITIONED: {
@@ -178,7 +177,7 @@
 
     /**
      * Converts a list of OrderColumns to a list of LogicalVariables.
-     * 
+     *
      * @param orderColumns
      *            , a list of OrderColumns
      * @return the list of LogicalVariables
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/RandomPartitioningProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/RandomPartitioningProperty.java
index 24fe8e72..fb3f044 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/RandomPartitioningProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/RandomPartitioningProperty.java
@@ -62,4 +62,8 @@
         this.domain = domain;
     }
 
-}
\ No newline at end of file
+    @Override
+    public void substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
+    }
+
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java
index 97363b5..2cad1cb 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java
@@ -33,7 +33,8 @@
     public static final StructuralPropertiesVector EMPTY_PROPERTIES_VECTOR = new StructuralPropertiesVector(null,
             new ArrayList<ILocalStructuralProperty>());
 
-    public StructuralPropertiesVector(IPartitioningProperty propPartitioning, List<ILocalStructuralProperty> propsLocal) {
+    public StructuralPropertiesVector(IPartitioningProperty propPartitioning,
+            List<ILocalStructuralProperty> propsLocal) {
         this.propPartitioning = propPartitioning;
         this.propsLocal = propsLocal;
     }
@@ -63,7 +64,6 @@
     }
 
     /**
-     * 
      * @param reqd
      *            vector of required properties
      * @return a vector of properties from pvector that are not delivered by the
@@ -102,4 +102,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/TypePropagationPolicy.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/TypePropagationPolicy.java
index 612dce2..e011a7f 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/TypePropagationPolicy.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/TypePropagationPolicy.java
@@ -36,7 +36,8 @@
             for (ITypeEnvPointer p : typeEnvs) {
                 IVariableTypeEnvironment env = p.getTypeEnv();
                 if (env == null) {
-                    throw new AlgebricksException("Null environment for pointer " + p + " in getVarType for var=" + var);
+                    throw new AlgebricksException(
+                            "Null environment for pointer " + p + " in getVarType for var=" + var);
                 }
                 Object t = env.getVarType(var, nonNullVariableList, correlatedNullableVariableLists);
                 if (t != null) {
@@ -69,9 +70,9 @@
                 Object t = typeEnvs[i].getTypeEnv().getVarType(var, nonNullVariableList,
                         correlatedNullableVariableLists);
                 if (t != null) {
-                    if (i == 0) { // inner branch
+                    if (i == 0) { // outer branch
                         return t;
-                    } else { // outer branch
+                    } else { // inner branch
                         boolean nonNullVarIsProduced = false;
                         for (LogicalVariable v : nonNullVariableList) {
                             if (v == var) {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/UnorderedPartitionedProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/UnorderedPartitionedProperty.java
index de3b102..d6a364a 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/UnorderedPartitionedProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/UnorderedPartitionedProperty.java
@@ -65,4 +65,13 @@
         this.domain = domain;
     }
 
+    @Override
+    public void substituteColumnVars(Map<LogicalVariable, LogicalVariable> varMap) {
+        for (Map.Entry<LogicalVariable, LogicalVariable> var : varMap.entrySet()) {
+            if (columnSet.remove(var.getKey())) {
+                columnSet.add(var.getValue());
+            }
+        }
+    }
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java
index 8885b5d..d78684b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java
@@ -43,8 +43,8 @@
     /**
      * Adds, from each source, only variables that do not already appear in the
      * target.
-     * 
-     * 
+     *
+     *
      */
     public static final VariablePropagationPolicy ADDNEWVARIABLES = new VariablePropagationPolicy() {
         @Override
@@ -79,4 +79,4 @@
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/AbstractTypeEnvironment.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/AbstractTypeEnvironment.java
index c4ff55b..60d0740 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/AbstractTypeEnvironment.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/AbstractTypeEnvironment.java
@@ -42,7 +42,12 @@
 
     @Override
     public Object getType(ILogicalExpression expr) throws AlgebricksException {
-        return expressionTypeComputer.getType(expr, metadataProvider, this);
+        try {
+            return expressionTypeComputer.getType(expr, metadataProvider, this);
+        } catch (Exception e) {
+            throw new AlgebricksException("Could not resolve type for " + expr.toString() + ","
+                    + "please check whether the used variables has been defined!", e);
+        }
     }
 
     @Override
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/ITypingContext.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/ITypingContext.java
index 5f3ee3a..4d85111 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/ITypingContext.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/typing/ITypingContext.java
@@ -18,6 +18,7 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.typing;
 
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
 import org.apache.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer;
@@ -25,13 +26,18 @@
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 
 public interface ITypingContext {
-    public abstract IVariableTypeEnvironment getOutputTypeEnvironment(ILogicalOperator op);
+    public IVariableTypeEnvironment getOutputTypeEnvironment(ILogicalOperator op);
 
-    public abstract void setOutputTypeEnvironment(ILogicalOperator op, IVariableTypeEnvironment env);
+    public void setOutputTypeEnvironment(ILogicalOperator op, IVariableTypeEnvironment env);
 
-    public abstract IExpressionTypeComputer getExpressionTypeComputer();
+    public IExpressionTypeComputer getExpressionTypeComputer();
 
-    public abstract INullableTypeComputer getNullableTypeComputer();
+    public INullableTypeComputer getNullableTypeComputer();
 
-    public abstract IMetadataProvider<?, ?> getMetadataProvider();
+    public IMetadataProvider<?, ?> getMetadataProvider();
+
+    public void invalidateTypeEnvironmentForOperator(ILogicalOperator op);
+
+    public void computeAndSetTypeEnvironmentForOperator(ILogicalOperator op) throws AlgebricksException;
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
index 61a191f..4089268 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
@@ -20,10 +20,10 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
@@ -129,8 +129,9 @@
                     AbstractLogicalOperator inputOp = (AbstractLogicalOperator) i.getValue();
                     switch (inputOp.getExecutionMode()) {
                         case PARTITIONED: {
-                            if (forceUnpartitioned)
+                            if (forceUnpartitioned) {
                                 break;
+                            }
                             op.setExecutionMode(AbstractLogicalOperator.ExecutionMode.PARTITIONED);
                             change = true;
                             exit = true;
@@ -216,8 +217,9 @@
     public static ILogicalOperator bottomUpCopyOperators(ILogicalOperator op) throws AlgebricksException {
         ILogicalOperator newOp = deepCopy(op);
         newOp.getInputs().clear();
-        for (Mutable<ILogicalOperator> child : op.getInputs())
+        for (Mutable<ILogicalOperator> child : op.getInputs()) {
             newOp.getInputs().add(new MutableObject<ILogicalOperator>(bottomUpCopyOperators(child.getValue())));
+        }
         return newOp;
     }
 
@@ -226,4 +228,55 @@
         return op.accept(visitor, null);
     }
 
+    public static ILogicalOperator deepCopyWithExcutionMode(ILogicalOperator op) throws AlgebricksException {
+        OperatorDeepCopyVisitor visitor = new OperatorDeepCopyVisitor();
+        AbstractLogicalOperator newOp = (AbstractLogicalOperator) op.accept(visitor, null);
+        newOp.setExecutionMode(op.getExecutionMode());
+        return newOp;
+    }
+    /**
+     * Compute type environment of a newly generated operator {@code op} and its input.
+     *
+     * @param op,
+     *            the logical operator.
+     * @param context,the
+     *            optimization context.
+     * @throws AlgebricksException
+     */
+    public static void computeTypeEnvironmentBottomUp(ILogicalOperator op, ITypingContext context)
+            throws AlgebricksException {
+        for (Mutable<ILogicalOperator> children : op.getInputs()) {
+            computeTypeEnvironmentBottomUp(children.getValue(), context);
+        }
+        AbstractLogicalOperator abstractOp = (AbstractLogicalOperator) op;
+        if (abstractOp.hasNestedPlans()) {
+            for (ILogicalPlan p : ((AbstractOperatorWithNestedPlans) op).getNestedPlans()) {
+                for (Mutable<ILogicalOperator> rootRef : p.getRoots()) {
+                    computeTypeEnvironmentBottomUp(rootRef.getValue(), context);
+                }
+            }
+        }
+        context.computeAndSetTypeEnvironmentForOperator(op);
+    }
+
+    /***
+     * Is the operator <code>>op</code> an ancestor of any operators with tags in the set <code>tags</code>?
+     *
+     * @param op
+     * @param tags
+     * @return True if yes; false other wise.
+     */
+    public static boolean ancestorOfOperators(ILogicalOperator op, Set<LogicalOperatorTag> tags) {
+        LogicalOperatorTag opTag = op.getOperatorTag();
+        if (tags.contains(opTag)) {
+            return true;
+        }
+        for (Mutable<ILogicalOperator> children : op.getInputs()) {
+            if (ancestorOfOperators(children.getValue(), tags)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
index 827c075..e78db9b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
@@ -23,7 +23,6 @@
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -39,10 +38,13 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.CardinalityInferenceVisitor;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
 
 public class OperatorPropertiesUtil {
 
+    private static final String MOVABLE = "isMovable";
+
     public static <T> boolean disjoint(Collection<T> c1, Collection<T> c2) {
         for (T m : c1) {
             if (c2.contains(m)) {
@@ -66,7 +68,7 @@
     /**
      * Adds the free variables of the plan rooted at that operator to the
      * collection provided.
-     * 
+     *
      * @param op
      * @param vars
      *            - The collection to which the free variables will be added.
@@ -82,22 +84,11 @@
         HashSet<LogicalVariable> used = new HashSet<LogicalVariable>();
         VariableUtilities.getUsedVariables(op, used);
         for (LogicalVariable v : used) {
-            if (!freeVars.contains(v)) {
-                freeVars.add(v);
-            }
+            freeVars.add(v);
         }
-
         if (op.hasNestedPlans()) {
             AbstractOperatorWithNestedPlans s = (AbstractOperatorWithNestedPlans) op;
-            for (ILogicalPlan p : s.getNestedPlans()) {
-                for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                    getFreeVariablesInSelfOrDesc((AbstractLogicalOperator) r.getValue(), freeVars);
-                }
-            }
-            s.getUsedVariablesExceptNestedPlans(freeVars);
-            HashSet<LogicalVariable> produced2 = new HashSet<LogicalVariable>();
-            s.getProducedVariablesExceptNestedPlans(produced2);
-            freeVars.removeAll(produced);
+            getFreeVariablesInSubplans(s, freeVars);
         }
         for (Mutable<ILogicalOperator> i : op.getInputs()) {
             getFreeVariablesInSelfOrDesc((AbstractLogicalOperator) i.getValue(), freeVars);
@@ -107,7 +98,7 @@
     /**
      * Adds the free variables of the operator path from
      * op to dest, where dest is a direct/indirect input operator of op in the query plan.
-     * 
+     *
      * @param op
      *            , the start operator.
      * @param dest
@@ -140,55 +131,25 @@
         if (op == dest) {
             return true;
         }
-        boolean onPath = false;
         if (((AbstractLogicalOperator) op).hasNestedPlans()) {
             AbstractOperatorWithNestedPlans a = (AbstractOperatorWithNestedPlans) op;
             for (ILogicalPlan p : a.getNestedPlans()) {
                 for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                    if (isDestInNestedPath((AbstractLogicalOperator) r.getValue(), dest)) {
-                        onPath = true;
+                    if (collectUsedAndProducedVariablesInPath(r.getValue(), dest, usedVars, producedVars)) {
+                        VariableUtilities.getUsedVariables(r.getValue(), usedVars);
+                        VariableUtilities.getProducedVariables(r.getValue(), producedVars);
+                        return true;
                     }
                 }
             }
         }
         for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
             if (collectUsedAndProducedVariablesInPath(childRef.getValue(), dest, usedVars, producedVars)) {
-                onPath = true;
-            }
-        }
-        if (onPath) {
-            VariableUtilities.getUsedVariables(op, usedVars);
-            VariableUtilities.getProducedVariables(op, producedVars);
-        }
-        return onPath;
-    }
-
-    /***
-     * Recursively checks if the dest operator is in the path of a nested plan
-     * 
-     * @param op
-     * @param dest
-     * @return
-     */
-    private static boolean isDestInNestedPath(AbstractLogicalOperator op, ILogicalOperator dest) {
-        if (op == dest) {
-            return true;
-        }
-        for (Mutable<ILogicalOperator> i : op.getInputs()) {
-            if (isDestInNestedPath((AbstractLogicalOperator) i.getValue(), dest)) {
+                VariableUtilities.getUsedVariables(op, usedVars);
+                VariableUtilities.getProducedVariables(op, producedVars);
                 return true;
             }
         }
-        if (op.hasNestedPlans()) {
-            AbstractOperatorWithNestedPlans a = (AbstractOperatorWithNestedPlans) op;
-            for (ILogicalPlan p : a.getNestedPlans()) {
-                for (Mutable<ILogicalOperator> r : p.getRoots()) {
-                    if (isDestInNestedPath((AbstractLogicalOperator) r.getValue(), dest)) {
-                        return true;
-                    }
-                }
-            }
-        }
         return false;
     }
 
@@ -301,4 +262,39 @@
         }
         return false;
     }
+
+    public static boolean isCardinalityOne(ILogicalOperator operator) throws AlgebricksException {
+        CardinalityInferenceVisitor visitor = new CardinalityInferenceVisitor();
+        return operator.accept(visitor, null) == 1L;
+    }
+
+    /**
+     * Whether an operator can be moved around in the query plan.
+     *
+     * @param op
+     *            the operator to consider.
+     * @return true if the operator can be moved, false if the operator cannot be moved.
+     * @throws AlgebricksException
+     */
+    public static boolean isMovable(ILogicalOperator op) {
+        Object annotation = op.getAnnotations().get(MOVABLE);
+        if (annotation == null) {
+            // By default, it is movable.
+            return true;
+        }
+        Boolean movable = (Boolean) annotation;
+        return movable;
+    }
+
+    /**
+     * Mark an operator to be either movable or not.
+     *
+     * @param op
+     *            the operator to consider.
+     * @param movable
+     *            true means it is movable, false means it is not movable.
+     */
+    public static void markMovable(ILogicalOperator op, boolean movable) {
+        op.getAnnotations().put(MOVABLE, movable);
+    }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalExpressionVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalExpressionVisitor.java
index 1342b2d..519e482 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalExpressionVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalExpressionVisitor.java
@@ -16,28 +16,28 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.core.algebra.visitors;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
-import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
-
-public interface ILogicalExpressionVisitor<R, T> {
-    public R visitConstantExpression(ConstantExpression expr, T arg) throws AlgebricksException;
-
-    public R visitVariableReferenceExpression(VariableReferenceExpression expr, T arg) throws AlgebricksException;
-
-    public R visitAggregateFunctionCallExpression(AggregateFunctionCallExpression expr, T arg)
-            throws AlgebricksException;
-
-    public R visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr, T arg) throws AlgebricksException;
-
-    public R visitStatefulFunctionCallExpression(StatefulFunctionCallExpression expr, T arg) throws AlgebricksException;
-
-    public R visitUnnestingFunctionCallExpression(UnnestingFunctionCallExpression expr, T arg)
-            throws AlgebricksException;
-}
+package org.apache.hyracks.algebricks.core.algebra.visitors;
+
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AggregateFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.StatefulFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.UnnestingFunctionCallExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
+
+public interface ILogicalExpressionVisitor<R, T> {
+    public R visitConstantExpression(ConstantExpression expr, T arg) throws AlgebricksException;
+
+    public R visitVariableReferenceExpression(VariableReferenceExpression expr, T arg) throws AlgebricksException;
+
+    public R visitAggregateFunctionCallExpression(AggregateFunctionCallExpression expr, T arg)
+            throws AlgebricksException;
+
+    public R visitScalarFunctionCallExpression(ScalarFunctionCallExpression expr, T arg) throws AlgebricksException;
+
+    public R visitStatefulFunctionCallExpression(StatefulFunctionCallExpression expr, T arg) throws AlgebricksException;
+
+    public R visitUnnestingFunctionCallExpression(UnnestingFunctionCallExpression expr, T arg)
+            throws AlgebricksException;
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalOperatorVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalOperatorVisitor.java
index 423a0a4..298daf9 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalOperatorVisitor.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/ILogicalOperatorVisitor.java
@@ -27,16 +27,18 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExternalDataLookupOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -94,10 +96,16 @@
 
     public R visitUnionOperator(UnionAllOperator op, T arg) throws AlgebricksException;
 
+    public R visitIntersectOperator(IntersectOperator op, T arg) throws AlgebricksException;
+
     public R visitUnnestOperator(UnnestOperator op, T arg) throws AlgebricksException;
 
+    public R visitOuterUnnestOperator(OuterUnnestOperator op, T arg) throws AlgebricksException;
+
     public R visitUnnestMapOperator(UnnestMapOperator op, T arg) throws AlgebricksException;
 
+    public R visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, T arg) throws AlgebricksException;
+
     public R visitDataScanOperator(DataSourceScanOperator op, T arg) throws AlgebricksException;
 
     public R visitDistinctOperator(DistinctOperator op, T arg) throws AlgebricksException;
@@ -110,11 +118,9 @@
 
     public R visitWriteResultOperator(WriteResultOperator op, T arg) throws AlgebricksException;
 
-    public R visitInsertDeleteOperator(InsertDeleteOperator op, T tag) throws AlgebricksException;
+    public R visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, T tag) throws AlgebricksException;
 
-    public R visitIndexInsertDeleteOperator(IndexInsertDeleteOperator op, T tag) throws AlgebricksException;
-
-    public R visitExternalDataLookupOperator(ExternalDataLookupOperator op, T arg) throws AlgebricksException;
+    public R visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, T tag) throws AlgebricksException;
 
     public R visitTokenizeOperator(TokenizeOperator op, T arg) throws AlgebricksException;
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/IQueryOperatorVisitor.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/IQueryOperatorVisitor.java
new file mode 100644
index 0000000..73628c1
--- /dev/null
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/visitors/IQueryOperatorVisitor.java
@@ -0,0 +1,59 @@
+/*
+ * 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.hyracks.algebricks.core.algebra.visitors;
+
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistributeResultOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SinkOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.WriteResultOperator;
+
+public interface IQueryOperatorVisitor<R, T> extends ILogicalOperatorVisitor<R, T> {
+
+    @Override
+    public default R visitWriteOperator(WriteOperator op, T arg) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public default R visitDistributeResultOperator(DistributeResultOperator op, T arg) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public default R visitWriteResultOperator(WriteResultOperator op, T arg) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public default R visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op, T arg) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public default R visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator op, T arg) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public default R visitSinkOperator(SinkOperator op, T arg) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/SysoutFormatter.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/SysoutFormatter.java
index dd70e39..259c9b2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/SysoutFormatter.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/SysoutFormatter.java
@@ -36,4 +36,4 @@
     public String getTail(Handler h) {
         return "";
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobBuilder.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobBuilder.java
index 8e254f0..4671a71 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobBuilder.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobBuilder.java
@@ -98,7 +98,8 @@
     }
 
     @Override
-    public void contributeGraphEdge(ILogicalOperator src, int srcOutputIndex, ILogicalOperator dest, int destInputIndex) {
+    public void contributeGraphEdge(ILogicalOperator src, int srcOutputIndex, ILogicalOperator dest,
+            int destInputIndex) {
         ArrayList<ILogicalOperator> outputs = outEdges.get(src);
         if (outputs == null) {
             outputs = new ArrayList<ILogicalOperator>();
@@ -144,7 +145,13 @@
         List<OperatorDescriptorId> roots = jobSpec.getRoots();
         setSpecifiedPartitionConstraints();
         for (OperatorDescriptorId rootId : roots) {
-            setPartitionConstraintsDFS(rootId, tgtConstraints, null);
+            setPartitionConstraintsBottomup(rootId, tgtConstraints, null, false);
+        }
+        for (OperatorDescriptorId rootId : roots) {
+            setPartitionConstraintsTopdown(rootId, tgtConstraints, null);
+        }
+        for (OperatorDescriptorId rootId : roots) {
+            setPartitionConstraintsBottomup(rootId, tgtConstraints, null, true);
         }
     }
 
@@ -161,7 +168,7 @@
         }
     }
 
-    private void setPartitionConstraintsDFS(OperatorDescriptorId opId,
+    private void setPartitionConstraintsTopdown(OperatorDescriptorId opId,
             Map<IConnectorDescriptor, TargetConstraint> tgtConstraints, IOperatorDescriptor parentOp) {
         List<IConnectorDescriptor> opInputs = jobSpec.getOperatorInputMap().get(opId);
         AlgebricksPartitionConstraint opConstraint = null;
@@ -172,9 +179,39 @@
                 org.apache.commons.lang3.tuple.Pair<org.apache.commons.lang3.tuple.Pair<IOperatorDescriptor, Integer>, org.apache.commons.lang3.tuple.Pair<IOperatorDescriptor, Integer>> p = jobSpec
                         .getConnectorOperatorMap().get(cid);
                 IOperatorDescriptor src = p.getLeft().getLeft();
-                // DFS
-                setPartitionConstraintsDFS(src.getOperatorId(), tgtConstraints, opDesc);
+                TargetConstraint constraint = tgtConstraints.get(conn);
+                if (constraint != null) {
+                    if (constraint == TargetConstraint.SAME_COUNT) {
+                        opConstraint = partitionConstraintMap.get(opDesc);
+                        if (partitionConstraintMap.get(src) == null) {
+                            if (opConstraint != null) {
+                                partitionConstraintMap.put(src, opConstraint);
+                                AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(jobSpec, src,
+                                        opConstraint);
+                            }
+                        }
+                    }
+                }
+                // Post Order DFS
+                setPartitionConstraintsTopdown(src.getOperatorId(), tgtConstraints, opDesc);
+            }
+        }
+    }
 
+    private void setPartitionConstraintsBottomup(OperatorDescriptorId opId,
+            Map<IConnectorDescriptor, TargetConstraint> tgtConstraints, IOperatorDescriptor parentOp,
+            boolean finalPass) {
+        List<IConnectorDescriptor> opInputs = jobSpec.getOperatorInputMap().get(opId);
+        AlgebricksPartitionConstraint opConstraint = null;
+        IOperatorDescriptor opDesc = jobSpec.getOperatorMap().get(opId);
+        if (opInputs != null) {
+            for (IConnectorDescriptor conn : opInputs) {
+                ConnectorDescriptorId cid = conn.getConnectorId();
+                org.apache.commons.lang3.tuple.Pair<org.apache.commons.lang3.tuple.Pair<IOperatorDescriptor, Integer>, org.apache.commons.lang3.tuple.Pair<IOperatorDescriptor, Integer>> p = jobSpec
+                        .getConnectorOperatorMap().get(cid);
+                IOperatorDescriptor src = p.getLeft().getLeft();
+                // Pre-order DFS
+                setPartitionConstraintsBottomup(src.getOperatorId(), tgtConstraints, opDesc, finalPass);
                 TargetConstraint constraint = tgtConstraints.get(conn);
                 if (constraint != null) {
                     switch (constraint) {
@@ -191,21 +228,17 @@
             }
         }
         if (partitionConstraintMap.get(opDesc) == null) {
-            if (opConstraint == null) {
-                if (parentOp != null) {
-                    AlgebricksPartitionConstraint pc = partitionConstraintMap.get(parentOp);
-                    if (pc != null) {
-                        opConstraint = pc;
-                    } else if (opInputs == null || opInputs.size() == 0) {
-                        opConstraint = new AlgebricksCountPartitionConstraint(1);
-                    }
-                }
-                if (opConstraint == null) {
-                    opConstraint = clusterLocations;
-                }
+            if (finalPass && opConstraint == null && (opInputs == null || opInputs.size() == 0)) {
+                opConstraint = new AlgebricksCountPartitionConstraint(1);
             }
-            partitionConstraintMap.put(opDesc, opConstraint);
-            AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(jobSpec, opDesc, opConstraint);
+            if (finalPass && opConstraint == null) {
+                opConstraint = clusterLocations;
+            }
+            // Sets up the location constraint.
+            if (opConstraint != null) {
+                partitionConstraintMap.put(opDesc, opConstraint);
+                AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(jobSpec, opDesc, opConstraint);
+            }
         }
     }
 
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
index 6ee5145..2c2708b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenHelper.java
@@ -41,6 +41,7 @@
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public final class JobGenHelper {
 
@@ -70,12 +71,16 @@
             JobGenContext context, int[] printColumns) throws AlgebricksException {
         IPrinterFactory[] pf = new IPrinterFactory[printColumns.length];
         IPrinterFactoryProvider pff = context.getPrinterFactoryProvider();
-        for (int i = 0; i < pf.length; i++) {
-            LogicalVariable v = opSchema.getVariable(printColumns[i]);
-            Object t = env.getVarType(v);
-            pf[i] = pff.getPrinterFactory(t);
+        try {
+            for (int i = 0; i < pf.length; i++) {
+                LogicalVariable v = opSchema.getVariable(printColumns[i]);
+                Object t = env.getVarType(v);
+                pf[i] = pff.getPrinterFactory(t);
+            }
+            return pf;
+        } catch (HyracksDataException e) {
+            throw new AlgebricksException(e);
         }
-        return pf;
     }
 
     public static int[] variablesToFieldIndexes(Collection<LogicalVariable> varLogical, IOperatorSchema opSchema) {
@@ -90,7 +95,7 @@
 
     public static IBinaryHashFunctionFactory[] variablesToBinaryHashFunctionFactories(
             Collection<LogicalVariable> varLogical, IVariableTypeEnvironment env, JobGenContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         IBinaryHashFunctionFactory[] funFactories = new IBinaryHashFunctionFactory[varLogical.size()];
         int i = 0;
         IBinaryHashFunctionFactoryProvider bhffProvider = context.getBinaryHashFunctionFactoryProvider();
@@ -103,7 +108,7 @@
 
     public static IBinaryHashFunctionFamily[] variablesToBinaryHashFunctionFamilies(
             Collection<LogicalVariable> varLogical, IVariableTypeEnvironment env, JobGenContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         IBinaryHashFunctionFamily[] funFamilies = new IBinaryHashFunctionFamily[varLogical.size()];
         int i = 0;
         IBinaryHashFunctionFamilyProvider bhffProvider = context.getBinaryHashFunctionFamilyProvider();
@@ -116,7 +121,7 @@
 
     public static IBinaryComparatorFactory[] variablesToAscBinaryComparatorFactories(
             Collection<LogicalVariable> varLogical, IVariableTypeEnvironment env, JobGenContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         IBinaryComparatorFactory[] compFactories = new IBinaryComparatorFactory[varLogical.size()];
         IBinaryComparatorFactoryProvider bcfProvider = context.getBinaryComparatorFactoryProvider();
         int i = 0;
@@ -140,7 +145,7 @@
 
     public static INormalizedKeyComputerFactory variablesToAscNormalizedKeyComputerFactory(
             Collection<LogicalVariable> varLogical, IVariableTypeEnvironment env, JobGenContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         INormalizedKeyComputerFactoryProvider nkcfProvider = context.getNormalizedKeyComputerFactoryProvider();
         if (nkcfProvider == null)
             return null;
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java
index 91e82ce..9bb620b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/OperatorSchemaImpl.java
@@ -97,4 +97,4 @@
     public String toString() {
         return varMap.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/PlanCompiler.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/PlanCompiler.java
index 186ac6f..1a61f2e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/PlanCompiler.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/PlanCompiler.java
@@ -76,18 +76,18 @@
         int n = op.getInputs().size();
         IOperatorSchema[] schemas = new IOperatorSchema[n];
         int i = 0;
-        for (Mutable<ILogicalOperator> opRef2 : op.getInputs()) {
-            List<Mutable<ILogicalOperator>> parents = operatorVisitedToParents.get(opRef2);
+        for (Mutable<ILogicalOperator> opChild : op.getInputs()) {
+            List<Mutable<ILogicalOperator>> parents = operatorVisitedToParents.get(opChild);
             if (parents == null) {
                 parents = new ArrayList<Mutable<ILogicalOperator>>();
-                operatorVisitedToParents.put(opRef2, parents);
+                operatorVisitedToParents.put(opChild, parents);
                 parents.add(opRef);
-                compileOpRef(opRef2, spec, builder, outerPlanSchema);
-                schemas[i++] = context.getSchema(opRef2.getValue());
+                compileOpRef(opChild, spec, builder, outerPlanSchema);
+                schemas[i++] = context.getSchema(opChild.getValue());
             } else {
                 if (!parents.contains(opRef))
                     parents.add(opRef);
-                schemas[i++] = context.getSchema(opRef2.getValue());
+                schemas[i++] = context.getSchema(opChild.getValue());
                 continue;
             }
         }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java
index e3695fd..5adb566 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AbstractRuleController.java
@@ -22,7 +22,6 @@
 import java.util.logging.Level;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
@@ -46,7 +45,7 @@
 
     /**
      * Each rewriting strategy may differ in the
-     * 
+     *
      * @param root
      * @param ruleClasses
      * @return true iff one of the rules in the collection fired
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java
index 16c4855..154f4a1 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/AlgebricksOptimizationContext.java
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.EquivalenceClass;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -37,9 +38,12 @@
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 import org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
+import org.apache.hyracks.algebricks.core.algebra.properties.DefaultNodeGroupDomain;
 import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
 import org.apache.hyracks.algebricks.core.algebra.properties.ILogicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
 
+@SuppressWarnings({ "unchecked", "rawtypes" })
 public class AlgebricksOptimizationContext implements IOptimizationContext {
 
     private int varCounter;
@@ -65,9 +69,8 @@
 
     private Map<ILogicalOperator, HashSet<ILogicalOperator>> alreadyCompared = new HashMap<ILogicalOperator, HashSet<ILogicalOperator>>();
     private Map<IAlgebraicRewriteRule, HashSet<ILogicalOperator>> dontApply = new HashMap<IAlgebraicRewriteRule, HashSet<ILogicalOperator>>();
-    private Map<LogicalVariable, FunctionalDependency> recordToPrimaryKey = new HashMap<LogicalVariable, FunctionalDependency>();
+    private Map<LogicalVariable, FunctionalDependency> varToPrimaryKey = new HashMap<LogicalVariable, FunctionalDependency>();
 
-    @SuppressWarnings("unchecked")
     private IMetadataProvider metadataProvider;
     private HashSet<LogicalVariable> notToBeInlinedVars = new HashSet<LogicalVariable>();
 
@@ -77,52 +80,61 @@
     protected final Map<ILogicalOperator, ILogicalPropertiesVector> logicalProps = new HashMap<ILogicalOperator, ILogicalPropertiesVector>();
     private final IExpressionTypeComputer expressionTypeComputer;
     private final INullableTypeComputer nullableTypeComputer;
+    private final INodeDomain defaultNodeDomain;
     private final LogicalOperatorPrettyPrintVisitor prettyPrintVisitor;
 
     public AlgebricksOptimizationContext(int varCounter, IExpressionEvalSizeComputer expressionEvalSizeComputer,
             IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
             IExpressionTypeComputer expressionTypeComputer, INullableTypeComputer nullableTypeComputer,
-            PhysicalOptimizationConfig physicalOptimizationConfig) {
+            PhysicalOptimizationConfig physicalOptimizationConfig, AlgebricksPartitionConstraint clusterLocations) {
         this(varCounter, expressionEvalSizeComputer, mergeAggregationExpressionFactory, expressionTypeComputer,
-                nullableTypeComputer, physicalOptimizationConfig, new LogicalOperatorPrettyPrintVisitor());
+                nullableTypeComputer, physicalOptimizationConfig, clusterLocations,
+                new LogicalOperatorPrettyPrintVisitor());
     }
 
     public AlgebricksOptimizationContext(int varCounter, IExpressionEvalSizeComputer expressionEvalSizeComputer,
             IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
             IExpressionTypeComputer expressionTypeComputer, INullableTypeComputer nullableTypeComputer,
-            PhysicalOptimizationConfig physicalOptimizationConfig, LogicalOperatorPrettyPrintVisitor prettyPrintVisitor) {
+            PhysicalOptimizationConfig physicalOptimizationConfig, AlgebricksPartitionConstraint clusterLocations,
+            LogicalOperatorPrettyPrintVisitor prettyPrintVisitor) {
         this.varCounter = varCounter;
         this.expressionEvalSizeComputer = expressionEvalSizeComputer;
         this.mergeAggregationExpressionFactory = mergeAggregationExpressionFactory;
         this.expressionTypeComputer = expressionTypeComputer;
         this.nullableTypeComputer = nullableTypeComputer;
         this.physicalOptimizationConfig = physicalOptimizationConfig;
+        this.defaultNodeDomain = new DefaultNodeGroupDomain(clusterLocations);
         this.prettyPrintVisitor = prettyPrintVisitor;
     }
 
+    @Override
     public int getVarCounter() {
         return varCounter;
     }
 
+    @Override
     public void setVarCounter(int varCounter) {
         this.varCounter = varCounter;
     }
 
+    @Override
     public LogicalVariable newVar() {
         varCounter++;
         LogicalVariable var = new LogicalVariable(varCounter);
         return var;
     }
 
-    @SuppressWarnings("unchecked")
+    @Override
     public IMetadataProvider getMetadataProvider() {
         return metadataProvider;
     }
 
+    @Override
     public void setMetadataDeclarations(IMetadataProvider<?, ?> metadataProvider) {
         this.metadataProvider = metadataProvider;
     }
 
+    @Override
     public boolean checkIfInDontApplySet(IAlgebraicRewriteRule rule, ILogicalOperator op) {
         HashSet<ILogicalOperator> operators = dontApply.get(rule);
         if (operators == null) {
@@ -132,6 +144,7 @@
         }
     }
 
+    @Override
     public void addToDontApplySet(IAlgebraicRewriteRule rule, ILogicalOperator op) {
         HashSet<ILogicalOperator> operators = dontApply.get(rule);
         if (operators == null) {
@@ -164,32 +177,36 @@
             }
         }
     }
-    
+
     @Override
     public void removeFromAlreadyCompared(ILogicalOperator op1) {
         alreadyCompared.remove(op1);
     }
 
+    @Override
     public void addNotToBeInlinedVar(LogicalVariable var) {
         notToBeInlinedVars.add(var);
     }
 
+    @Override
     public boolean shouldNotBeInlined(LogicalVariable var) {
         return notToBeInlinedVars.contains(var);
     }
 
+    @Override
     public void addPrimaryKey(FunctionalDependency pk) {
-        assert (pk.getTail().size() == 1);
-        LogicalVariable recordVar = pk.getTail().get(0);
-        recordToPrimaryKey.put(recordVar, pk);
+        for (LogicalVariable var : pk.getTail()) {
+            varToPrimaryKey.put(var, pk);
+        }
     }
 
+    @Override
     public List<LogicalVariable> findPrimaryKey(LogicalVariable recordVar) {
-        FunctionalDependency fd = recordToPrimaryKey.get(recordVar);
+        FunctionalDependency fd = varToPrimaryKey.get(recordVar);
         if (fd == null) {
             return null;
         }
-        return fd.getHead();
+        return new ArrayList<LogicalVariable>(fd.getHead());
     }
 
     @Override
@@ -213,6 +230,12 @@
     }
 
     @Override
+    public void clearAllFDAndEquivalenceClasses() {
+        eqClassGlobalMap.clear();
+        fdGlobalMap.clear();
+    }
+
+    @Override
     public ILogicalPropertiesVector getLogicalPropertiesVector(ILogicalOperator op) {
         return logicalProps.get(op);
     }
@@ -232,10 +255,12 @@
         return varEvalSizeEnv;
     }
 
+    @Override
     public IMergeAggregationExpressionFactory getMergeAggregationExpressionFactory() {
         return mergeAggregationExpressionFactory;
     }
 
+    @Override
     public PhysicalOptimizationConfig getPhysicalOptimizationConfig() {
         return physicalOptimizationConfig;
     }
@@ -272,7 +297,7 @@
 
     @Override
     public void updatePrimaryKeys(Map<LogicalVariable, LogicalVariable> mappedVars) {
-        for (Map.Entry<LogicalVariable, FunctionalDependency> me : recordToPrimaryKey.entrySet()) {
+        for (Map.Entry<LogicalVariable, FunctionalDependency> me : varToPrimaryKey.entrySet()) {
             FunctionalDependency fd = me.getValue();
             List<LogicalVariable> hd = new ArrayList<LogicalVariable>();
             for (LogicalVariable v : fd.getHead()) {
@@ -295,9 +320,14 @@
             me.setValue(new FunctionalDependency(hd, tl));
         }
     }
-    
+
+    @Override
+    public INodeDomain getComputationNodeDomain() {
+        return defaultNodeDomain;
+    }
+
     @Override
     public LogicalOperatorPrettyPrintVisitor getPrettyPrintVisitor() {
         return prettyPrintVisitor;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
index 7b04bd5..2a28d2e 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
@@ -35,7 +35,7 @@
 
 public class HeuristicOptimizer {
 
-    public static PhysicalOperatorTag[] hyraxOperators = new PhysicalOperatorTag[] {
+    public static PhysicalOperatorTag[] hyracksOperators = new PhysicalOperatorTag[] {
             PhysicalOperatorTag.DATASOURCE_SCAN, PhysicalOperatorTag.BTREE_SEARCH,
             PhysicalOperatorTag.EXTERNAL_GROUP_BY, PhysicalOperatorTag.HASH_GROUP_BY, PhysicalOperatorTag.HDFS_READER,
             PhysicalOperatorTag.HYBRID_HASH_JOIN, PhysicalOperatorTag.IN_MEMORY_HASH_JOIN,
@@ -44,8 +44,8 @@
             PhysicalOperatorTag.UNION_ALL };
     public static PhysicalOperatorTag[] hyraxOperatorsBelowWhichJobGenIsDisabled = new PhysicalOperatorTag[] {};
 
-    public static boolean isHyraxOp(PhysicalOperatorTag opTag) {
-        for (PhysicalOperatorTag t : hyraxOperators) {
+    public static boolean isHyracksOp(PhysicalOperatorTag opTag) {
+        for (PhysicalOperatorTag t : hyracksOperators) {
             if (t == opTag) {
                 return true;
             }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IAlgebraicRewriteRule.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IAlgebraicRewriteRule.java
index ad68348..128c372 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IAlgebraicRewriteRule.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IAlgebraicRewriteRule.java
@@ -19,14 +19,39 @@
 package org.apache.hyracks.algebricks.core.rewriter.base;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
 
 public interface IAlgebraicRewriteRule {
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException;
 
-    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
-            throws AlgebricksException;
+    /**
+     * This method is invoked in pre-order traversal of a query plan.
+     *
+     * @param opRef,
+     *            the reference of the current operator to look at,
+     * @param context
+     *            the optimization context
+     * @return true if any change is introduced to the query plan; false otherwise.
+     * @throws AlgebricksException
+     */
+    public default boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        return false;
+    }
+
+    /**
+     * This method is invoked in the post-order traversal of a query plan.
+     *
+     * @param opRef,
+     *            the reference of the current operator to look at,
+     * @param context
+     *            the optimization context
+     * @return true if any change is introduced to the query plan; false otherwise.
+     * @throws AlgebricksException
+     */
+    public default boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        return false;
+    }
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IOptimizationContextFactory.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IOptimizationContextFactory.java
index 996b988..ce77942 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IOptimizationContextFactory.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/IOptimizationContextFactory.java
@@ -18,6 +18,7 @@
  */
 package org.apache.hyracks.algebricks.core.rewriter.base;
 
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionEvalSizeComputer;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
@@ -29,5 +30,5 @@
             IExpressionEvalSizeComputer expressionEvalSizeComputer,
             IMergeAggregationExpressionFactory mergeAggregationExpressionFactory,
             IExpressionTypeComputer expressionTypeComputer, INullableTypeComputer nullableTypeComputer,
-            PhysicalOptimizationConfig physicalOptimizationConfig);
+            PhysicalOptimizationConfig physicalOptimizationConfig, AlgebricksPartitionConstraint clusterLocations);
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
index 03f721c..f0f858d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
@@ -22,7 +22,7 @@
 
 public class PhysicalOptimizationConfig {
     private static final int MB = 1048576;
-    
+
     private static final String FRAMESIZE = "FRAMESIZE";
     private static final String MAX_FRAMES_EXTERNAL_SORT = "MAX_FRAMES_EXTERNAL_SORT";
     private static final String MAX_FRAMES_EXTERNAL_GROUP_BY = "MAX_FRAMES_EXTERNAL_GROUP_BY";
@@ -30,7 +30,7 @@
     private static final String MAX_FRAMES_HYBRID_HASH = "MAX_FRAMES_HYBRID_HASH";
     private static final String FUDGE_FACTOR = "FUDGE_FACTOR";
     private static final String MAX_RECORDS_PER_FRAME = "MAX_RECORDS_PER_FRAME";
-    
+
     private static final String DEFAULT_HASH_GROUP_TABLE_SIZE = "DEFAULT_HASH_GROUP_TABLE_SIZE";
     private static final String DEFAULT_EXTERNAL_GROUP_TABLE_SIZE = "DEFAULT_EXTERNAL_GROUP_TABLE_SIZE";
     private static final String DEFAULT_IN_MEM_HASH_JOIN_TABLE_SIZE = "DEFAULT_IN_MEM_HASH_JOIN_TABLE_SIZE";
@@ -56,7 +56,7 @@
     public void setFrameSize(int frameSize) {
         setInt(FRAMESIZE, frameSize);
     }
-    
+
     public double getFudgeFactor() {
         return getDouble(FUDGE_FACTOR, 1.3);
     }
@@ -64,7 +64,7 @@
     public void setFudgeFactor(double fudgeFactor) {
         setDouble(FUDGE_FACTOR, fudgeFactor);
     }
-    
+
     public int getMaxRecordsPerFrame() {
         return getInt(MAX_RECORDS_PER_FRAME, 512);
     }
@@ -81,7 +81,7 @@
     public void setMaxFramesLeftInputHybridHash(int frameLimit) {
         setInt(MAX_FRAMES_LEFT_INPUT_HYBRID_HASH, frameLimit);
     }
-    
+
     public int getMaxFramesHybridHash() {
         int frameSize = getFrameSize();
         return getInt(MAX_FRAMES_HYBRID_HASH, (int) (64L * MB / frameSize));
@@ -99,7 +99,7 @@
     public void setMaxFramesExternalGroupBy(int frameLimit) {
         setInt(MAX_FRAMES_EXTERNAL_GROUP_BY, frameLimit);
     }
-    
+
     public int getMaxFramesExternalSort() {
         int frameSize = getFrameSize();
         return getInt(MAX_FRAMES_EXTERNAL_SORT, (int) (((long) 32 * MB) / frameSize));
@@ -144,7 +144,7 @@
         else
             return Integer.parseInt(value);
     }
-    
+
     private void setDouble(String property, double value) {
         properties.setProperty(property, Double.toString(value));
     }
diff --git a/algebricks/algebricks-data/pom.xml b/algebricks/algebricks-data/pom.xml
index b820801..2f08ec9 100644
--- a/algebricks/algebricks-data/pom.xml
+++ b/algebricks/algebricks-data/pom.xml
@@ -41,20 +41,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   <dependency>
   	<groupId>org.apache.hyracks</groupId>
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IAWriter.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IAWriter.java
index cd83d1f..72626ca 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IAWriter.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IAWriter.java
@@ -18,12 +18,12 @@
  */
 package org.apache.hyracks.algebricks.data;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IAWriter {
 
-    public void init() throws AlgebricksException;
+    void init() throws HyracksDataException;
 
-    public void printTuple(IFrameTupleAccessor tAccess, int tIdx) throws AlgebricksException;
+    void printTuple(IFrameTupleAccessor tAccess, int tIdx) throws HyracksDataException;
 }
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspector.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspector.java
index 14b3469..24a5e21 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspector.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspector.java
@@ -20,4 +20,4 @@
 
 public interface IBinaryBooleanInspector {
     public boolean getBooleanValue(byte[] bytes, int offset, int length);
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspectorFactory.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspectorFactory.java
index 0444e1b..aff49f3 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspectorFactory.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryBooleanInspectorFactory.java
@@ -24,4 +24,4 @@
 
 public interface IBinaryBooleanInspectorFactory extends Serializable {
     public IBinaryBooleanInspector createBinaryBooleanInspector(IHyracksTaskContext ctx);
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryComparatorFactoryProvider.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryComparatorFactoryProvider.java
index e1866dd..bdeb018 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryComparatorFactoryProvider.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryComparatorFactoryProvider.java
@@ -24,4 +24,4 @@
 public interface IBinaryComparatorFactoryProvider {
     public IBinaryComparatorFactory getBinaryComparatorFactory(Object type, boolean ascending)
             throws AlgebricksException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryIntegerInspectorFactory.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryIntegerInspectorFactory.java
index 8fa9a5b..425fd21 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryIntegerInspectorFactory.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IBinaryIntegerInspectorFactory.java
@@ -24,4 +24,4 @@
 
 public interface IBinaryIntegerInspectorFactory extends Serializable {
     public IBinaryIntegerInspector createBinaryIntegerInspector(IHyracksTaskContext ctx);
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinter.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinter.java
index 348f7ae..99161eb 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinter.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinter.java
@@ -20,10 +20,10 @@
 
 import java.io.PrintStream;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IPrinter {
-    public void init() throws AlgebricksException;
+    void init() throws HyracksDataException;
 
-    public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException;
+    void print(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException;
 }
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinterFactoryProvider.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinterFactoryProvider.java
index 624423e..d428bb0 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinterFactoryProvider.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IPrinterFactoryProvider.java
@@ -18,8 +18,8 @@
  */
 package org.apache.hyracks.algebricks.data;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IPrinterFactoryProvider {
-    public IPrinterFactory getPrinterFactory(Object type) throws AlgebricksException;
+    IPrinterFactory getPrinterFactory(Object type) throws HyracksDataException;
 }
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java
index 8749e25..7525180 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java
@@ -25,7 +25,7 @@
 public interface IResultSerializerFactoryProvider extends Serializable {
     /**
      * Returns a result serializer factory
-     * 
+     *
      * @param fields
      *            - A position of the fields in the order it should be written in the output.
      * @param printerFactories
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryBooleanInspectorImpl.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryBooleanInspectorImpl.java
index 1d138d6..65768dd 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryBooleanInspectorImpl.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryBooleanInspectorImpl.java
@@ -39,4 +39,4 @@
     public boolean getBooleanValue(byte[] bytes, int offset, int length) {
         return bytes[offset] == 1;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryIntegerInspectorImpl.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryIntegerInspectorImpl.java
index 729ded9..b63a574 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryIntegerInspectorImpl.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/BinaryIntegerInspectorImpl.java
@@ -40,4 +40,4 @@
     public int getIntegerValue(byte[] bytes, int offset, int length) {
         return IntegerPointable.getInteger(bytes, offset);
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java
index bdab09d..9c49516 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/IntegerPrinterFactory.java
@@ -25,6 +25,7 @@
 import org.apache.hyracks.algebricks.data.IPrinter;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
 import org.apache.hyracks.algebricks.data.utils.WriteValueTools;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 
 public class IntegerPrinterFactory implements IPrinterFactory {
@@ -40,17 +41,17 @@
         return new IPrinter() {
 
             @Override
-            public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
+            public void print(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException {
                 int d = IntegerPointable.getInteger(b, s);
                 try {
                     WriteValueTools.writeInt(d, ps);
                 } catch (IOException e) {
-                    throw new AlgebricksException(e);
+                    throw new HyracksDataException(e);
                 }
             }
 
             @Override
-            public void init() throws AlgebricksException {
+            public void init() {
             }
         };
     }
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java
index 8aa646e..78f10d1 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/impl/UTF8StringPrinterFactory.java
@@ -18,12 +18,13 @@
  */
 package org.apache.hyracks.algebricks.data.impl;
 
+import java.io.IOException;
 import java.io.PrintStream;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IPrinter;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class UTF8StringPrinterFactory implements IPrinterFactory {
 
@@ -39,27 +40,16 @@
         return new IPrinter() {
 
             @Override
-            public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
-                int strlen = UTF8StringPointable.getUTFLength(b, s);
-                int pos = s + 2;
-                int maxPos = pos + strlen;
-                ps.print("\"");
-                while (pos < maxPos) {
-                    char c = UTF8StringPointable.charAt(b, pos);
-                    switch (c) {
-                        case '\\':
-                        case '"':
-                            ps.print('\\');
-                            break;
-                    }
-                    ps.print(c);
-                    pos += UTF8StringPointable.charSize(b, pos);
+            public void print(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException {
+                try {
+                    UTF8StringUtil.printUTF8StringWithQuotes(b, s, l, ps);
+                } catch (IOException e) {
+                    throw new HyracksDataException(e);
                 }
-                ps.print("\"");
             }
 
             @Override
-            public void init() throws AlgebricksException {
+            public void init() throws HyracksDataException {
             }
         };
     }
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/utils/WriteValueTools.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/utils/WriteValueTools.java
index 8a96ea6..97e7d95 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/utils/WriteValueTools.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/utils/WriteValueTools.java
@@ -20,14 +20,16 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.PrintStream;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public final class WriteValueTools {
 
     private final static int[] INT_INTERVALS = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999,
             Integer.MAX_VALUE };
-    private final static int[] INT_DIVIDERS = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
+    private final static int[] INT_DIVIDERS = { 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000,
+            1000000000 };
     private final static int[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
 
     public static void writeInt(int i, OutputStream os) throws IOException {
@@ -75,50 +77,11 @@
         os.write(DIGITS[(int) (d % 10)]);
     }
 
-    public static void writeUTF8String(byte[] b, int s, int l, OutputStream os) throws IOException {
-        int stringLength = UTF8StringPointable.getUTFLength(b, s);
-        int position = s + 2;
-        int maxPosition = position + stringLength;
-        os.write('\"');
-        while (position < maxPosition) {
-            char c = UTF8StringPointable.charAt(b, position);
-            switch (c) {
-            // escape
-                case '\\':
-                case '"':
-                    os.write('\\');
-                    break;
-            }
-            int sz = UTF8StringPointable.charSize(b, position);
-            while (sz > 0) {
-                os.write(b[position]);
-                position++;
-                sz--;
-            }
-        }
-        os.write('\"');
+    public static void writeUTF8StringWithQuotes(String string, OutputStream ps) throws IOException {
+        UTF8StringUtil.printUTF8StringWithQuotes(string, ps);
     }
 
-    public static void writeUTF8StringNoQuotes(byte[] b, int s, int l, OutputStream os) throws IOException {
-        int stringLength = UTF8StringPointable.getUTFLength(b, s);
-        int position = s + 2;
-        int maxPosition = position + stringLength;
-        while (position < maxPosition) {
-            char c = UTF8StringPointable.charAt(b, position);
-            switch (c) {
-            // escape
-                case '\\':
-                case '"':
-                    os.write('\\');
-                    break;
-            }
-            int sz = UTF8StringPointable.charSize(b, position);
-            while (sz > 0) {
-                os.write(b[position]);
-                position++;
-                sz--;
-            }
-        }
+    public static void writeUTF8StringNoQuotes(String string, OutputStream ps) throws IOException {
+        UTF8StringUtil.printUTF8StringNoQuotes(string, ps);
     }
-
 }
diff --git a/algebricks/algebricks-examples/piglet-example/pom.xml b/algebricks/algebricks-examples/piglet-example/pom.xml
index 6d41868..d87c17e 100644
--- a/algebricks/algebricks-examples/piglet-example/pom.xml
+++ b/algebricks/algebricks-examples/piglet-example/pom.xml
@@ -34,16 +34,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>javacc-maven-plugin</artifactId>
         <version>2.6</version>
@@ -62,6 +52,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.10</version>
         <executions>
           <execution>
             <id>add-source</id>
@@ -125,5 +116,10 @@
       <artifactId>algebricks-compiler</artifactId>
       <version>0.2.18-SNAPSHOT</version>
     </dependency>
+      <dependency>
+          <groupId>org.apache.hyracks</groupId>
+          <artifactId>hyracks-util</artifactId>
+          <version>0.2.18-SNAPSHOT</version>
+      </dependency>
   </dependencies>
 </project>
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ASTNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ASTNode.java
index 9e39ae4..c303e99 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ASTNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ASTNode.java
@@ -31,4 +31,4 @@
     }
 
     public abstract Tag getTag();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/AssignmentNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/AssignmentNode.java
index d3d50c7..8a99cb8 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/AssignmentNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/AssignmentNode.java
@@ -40,4 +40,4 @@
     public RelationNode getRelation() {
         return relation;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/DumpNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/DumpNode.java
index ca0632d..66a229c 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/DumpNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/DumpNode.java
@@ -39,4 +39,4 @@
     public String getAlias() {
         return alias;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ExpressionNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ExpressionNode.java
index 0f52628..4470cd9 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ExpressionNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ExpressionNode.java
@@ -19,4 +19,4 @@
 package org.apache.hyracks.algebricks.examples.piglet.ast;
 
 public abstract class ExpressionNode extends ASTNode {
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FieldAccessExpressionNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FieldAccessExpressionNode.java
index d7f4d7f..cfd9bdd 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FieldAccessExpressionNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FieldAccessExpressionNode.java
@@ -40,4 +40,4 @@
     public String getFieldName() {
         return fieldName;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FilterNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FilterNode.java
index 6b685d2..b77a6a9 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FilterNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FilterNode.java
@@ -40,4 +40,4 @@
     public ExpressionNode getExpression() {
         return expression;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FunctionTag.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FunctionTag.java
index 6b7ef1c..b63af9c 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FunctionTag.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/FunctionTag.java
@@ -35,4 +35,4 @@
     MULTIPLY,
     DIVIDE,
     MOD,
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LiteralExpressionNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LiteralExpressionNode.java
index 91e0c82..d039145 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LiteralExpressionNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LiteralExpressionNode.java
@@ -42,4 +42,4 @@
     public Type getType() {
         return type;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java
index 7b7740d..6be1d9f 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java
@@ -29,7 +29,7 @@
         this.dataFile = dataFile;
         this.schema = schema;
     }
-    
+
     @Override
     public Tag getTag() {
         return Tag.LOAD;
@@ -42,4 +42,4 @@
     public Schema getSchema() {
         return schema;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/RelationNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/RelationNode.java
index 792f07e..f36da51 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/RelationNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/RelationNode.java
@@ -19,4 +19,4 @@
 package org.apache.hyracks.algebricks.examples.piglet.ast;
 
 public abstract class RelationNode extends ASTNode {
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ScalarFunctionExpressionNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ScalarFunctionExpressionNode.java
index e50b597..e1dea89 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ScalarFunctionExpressionNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/ScalarFunctionExpressionNode.java
@@ -49,4 +49,4 @@
     public List<ASTNode> getArguments() {
         return arguments;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletCompiler.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletCompiler.java
index f863b10..b5751fa 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletCompiler.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletCompiler.java
@@ -29,7 +29,7 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder;
@@ -145,13 +145,14 @@
             }
         });
         builder.setTypeTraitProvider(new ITypeTraitProvider() {
+            @Override
             public ITypeTraits getTypeTrait(Object type) {
                 return null;
             }
         });
         builder.setPrinterProvider(PigletPrinterFactoryProvider.INSTANCE);
-        builder.setExpressionRuntimeProvider(new LogicalExpressionJobGenToExpressionRuntimeProviderAdapter(
-                new PigletExpressionJobGen()));
+        builder.setExpressionRuntimeProvider(
+                new LogicalExpressionJobGenToExpressionRuntimeProviderAdapter(new PigletExpressionJobGen()));
         builder.setExpressionTypeComputer(new IExpressionTypeComputer() {
             @Override
             public Object getType(ILogicalExpression expr, IMetadataProvider<?, ?> metadataProvider,
@@ -159,6 +160,7 @@
                 return null;
             }
         });
+        builder.setClusterLocations(new AlgebricksAbsolutePartitionConstraint(new String[] { "nc1", "nc2" }));
         cFactory = builder.create();
         metadataProvider = new PigletMetadataProvider();
     }
@@ -237,9 +239,8 @@
                 }
                 PigletFileDataSource ds = new PigletFileDataSource(file, types.toArray());
                 rel.op = new DataSourceScanOperator(variables, ds);
-                rel.op.getInputs().add(
-                        new MutableObject<ILogicalOperator>(previousOp == null ? new EmptyTupleSourceOperator()
-                                : previousOp));
+                rel.op.getInputs().add(new MutableObject<ILogicalOperator>(
+                        previousOp == null ? new EmptyTupleSourceOperator() : previousOp));
                 return rel;
             }
 
@@ -250,8 +251,9 @@
                 Relation inputRel = findInputRelation(alias, symMap);
                 Pair<Relation, LogicalVariable> tempInput = translateScalarExpression(inputRel, conditionNode);
                 Relation rel = new Relation();
-                rel.op = new SelectOperator(new MutableObject<ILogicalExpression>(new VariableReferenceExpression(
-                        tempInput.second)), false, null);
+                rel.op = new SelectOperator(
+                        new MutableObject<ILogicalExpression>(new VariableReferenceExpression(tempInput.second)), false,
+                        null);
                 rel.op.getInputs().add(new MutableObject<ILogicalOperator>(tempInput.first.op));
                 rel.schema.putAll(tempInput.first.schema);
                 return rel;
@@ -298,7 +300,8 @@
                 for (ASTNode a : arguments) {
                     Pair<Relation, LogicalVariable> argPair = translateScalarExpression(rel, (ExpressionNode) a);
                     rel = argPair.first;
-                    argExprs.add(new MutableObject<ILogicalExpression>(new VariableReferenceExpression(argPair.second)));
+                    argExprs.add(
+                            new MutableObject<ILogicalExpression>(new VariableReferenceExpression(argPair.second)));
                 }
                 Relation outRel = new Relation();
                 outRel.schema.putAll(rel.schema);
@@ -377,4 +380,4 @@
         PlanPrettyPrinter.printPlan(plan, buffer, v, 0);
         return buffer.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletPrinterFactoryProvider.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletPrinterFactoryProvider.java
index 6d64741..135a9a7 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletPrinterFactoryProvider.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/compiler/PigletPrinterFactoryProvider.java
@@ -26,10 +26,10 @@
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
 import org.apache.hyracks.algebricks.data.IPrinterFactoryProvider;
 import org.apache.hyracks.algebricks.data.impl.IntegerPrinterFactory;
-import org.apache.hyracks.algebricks.data.utils.WriteValueTools;
 import org.apache.hyracks.algebricks.examples.piglet.types.Type;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.primitive.FloatPointable;
-import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class PigletPrinterFactoryProvider implements IPrinterFactoryProvider {
 
@@ -39,7 +39,7 @@
     }
 
     @Override
-    public IPrinterFactory getPrinterFactory(Object type) throws AlgebricksException {
+    public IPrinterFactory getPrinterFactory(Object type) {
         Type t = (Type) type;
         switch (t.getTag()) {
             case INTEGER:
@@ -67,15 +67,15 @@
         public IPrinter createPrinter() {
             return new IPrinter() {
                 @Override
-                public void init() throws AlgebricksException {
+                public void init() {
                 }
 
                 @Override
-                public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
+                public void print(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException {
                     try {
-                        WriteValueTools.writeUTF8String(b, s, l, ps);
+                        UTF8StringUtil.printUTF8StringWithQuotes(b, s, l, ps);
                     } catch (IOException e) {
-                        throw new AlgebricksException(e);
+                        throw new HyracksDataException(e);
                     }
                 }
             };
@@ -95,11 +95,11 @@
         public IPrinter createPrinter() {
             return new IPrinter() {
                 @Override
-                public void init() throws AlgebricksException {
+                public void init() throws HyracksDataException {
                 }
 
                 @Override
-                public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
+                public void print(byte[] b, int s, int l, PrintStream ps) throws HyracksDataException {
                     ps.print(FloatPointable.getFloat(b, s));
                 }
             };
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/exceptions/PigletException.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/exceptions/PigletException.java
index dc8dfa0..67f9d5b 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/exceptions/PigletException.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/exceptions/PigletException.java
@@ -24,4 +24,4 @@
     public PigletException(String message) {
         super(message);
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/FileSplitUtils.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/FileSplitUtils.java
index 0bb00bb..fe3e1d5 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/FileSplitUtils.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/FileSplitUtils.java
@@ -37,4 +37,4 @@
         }
         return fSplits;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSink.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSink.java
index 224f9e2..d159f60 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSink.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSink.java
@@ -55,4 +55,4 @@
     public IPartitioningProperty getPartitioningProperty() {
         return partProp;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSource.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSource.java
index 2b04a2a..d395f3c 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSource.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFileDataSource.java
@@ -77,4 +77,4 @@
     @Override
     public void computeFDs(List<LogicalVariable> scanVariables, List<FunctionalDependency> fdList) {
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java
index 488b864..55e99e8 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletFunction.java
@@ -35,4 +35,4 @@
     public FunctionIdentifier getFunctionIdentifier() {
         return fid;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
index 7d9b3db..f586af7 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
@@ -78,13 +78,12 @@
         return null;
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getScannerRuntime(IDataSource<String> dataSource,
             List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOperatorSchema opSchema,
             IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         PigletFileDataSource ds = (PigletFileDataSource) dataSource;
 
         FileSplit[] fileSplits = ds.getFileSplits();
@@ -110,7 +109,7 @@
 
                 case CHAR_ARRAY:
                     vpf = UTF8StringParserFactory.INSTANCE;
-                    serDeser = UTF8StringSerializerDeserializer.INSTANCE;
+                    serDeser = new UTF8StringSerializerDeserializer();
                     break;
 
                 case FLOAT:
@@ -141,15 +140,15 @@
     @Override
     public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink,
             int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         PigletFileDataSink ds = (PigletFileDataSink) sink;
         FileSplit[] fileSplits = ds.getFileSplits();
         String[] locations = new String[fileSplits.length];
         for (int i = 0; i < fileSplits.length; ++i) {
             locations[i] = fileSplits[i].getNodeName();
         }
-        IPushRuntimeFactory prf = new SinkWriterRuntimeFactory(printColumns, printerFactories, fileSplits[0]
-                .getLocalFile().getFile(), PrinterBasedWriterFactory.INSTANCE, inputDesc);
+        IPushRuntimeFactory prf = new SinkWriterRuntimeFactory(printColumns, printerFactories,
+                fileSplits[0].getLocalFile().getFile(), PrinterBasedWriterFactory.INSTANCE, inputDesc);
         AlgebricksAbsolutePartitionConstraint constraint = new AlgebricksAbsolutePartitionConstraint(locations);
         return new Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint>(prf, constraint);
     }
@@ -178,15 +177,11 @@
 
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexInsertRuntime(
-            IDataSourceIndex<String, String> dataSource,
-            IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
-            IVariableTypeEnvironment typeEnv,
-            List<LogicalVariable> primaryKeys,
-            List<LogicalVariable> secondaryKeys,
-            List<LogicalVariable> additionalNonKeyFields,
-            ILogicalExpression filterExpr,
-            RecordDescriptor recordDesc, JobGenContext context,
-            JobSpecification spec, boolean bulkload) throws AlgebricksException {
+            IDataSourceIndex<String, String> dataSource, IOperatorSchema propagatedSchema,
+            IOperatorSchema[] inputSchemas, IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys,
+            List<LogicalVariable> secondaryKeys, List<LogicalVariable> additionalNonKeyFields,
+            ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec,
+            boolean bulkload) throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -197,16 +192,16 @@
             IOperatorSchema[] inputSchemas, IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys,
             List<LogicalVariable> secondaryKeys, List<LogicalVariable> additionalNonKeyFields,
             ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getTokenizerRuntime(
-            IDataSourceIndex<String, String> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas,
-            IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys,
-            ILogicalExpression filterExpr, RecordDescriptor recordDesc,
+            IDataSourceIndex<String, String> dataSource, IOperatorSchema propagatedSchema,
+            IOperatorSchema[] inputSchemas, IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys,
+            List<LogicalVariable> secondaryKeys, ILogicalExpression filterExpr, RecordDescriptor recordDesc,
             JobGenContext context, JobSpecification spec, boolean bulkload) throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
@@ -220,8 +215,9 @@
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getInsertRuntime(IDataSource<String> dataSource,
             IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys,
-            LogicalVariable payLoadVar, List<LogicalVariable> additionalNonKeyFields, RecordDescriptor recordDesc,
-            JobGenContext context, JobSpecification jobSpec, boolean bulkload) throws AlgebricksException {
+            LogicalVariable payLoadVar, List<LogicalVariable> additionalFilterKeyFields,
+            List<LogicalVariable> additionalNonFilteringFields, RecordDescriptor recordDesc, JobGenContext context,
+            JobSpecification jobSpec, boolean bulkload) throws AlgebricksException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -235,4 +231,25 @@
         return null;
     }
 
+    @Override
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getUpsertRuntime(IDataSource<String> dataSource,
+            IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys,
+            LogicalVariable payLoadVar, List<LogicalVariable> additionalFilterFields,
+            List<LogicalVariable> additionalNonFilteringFields, RecordDescriptor recordDesc, JobGenContext context,
+            JobSpecification jobSpec) throws AlgebricksException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexUpsertRuntime(
+            IDataSourceIndex<String, String> dataSourceIndex, IOperatorSchema propagatedSchema,
+            IOperatorSchema[] inputSchemas, IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys,
+            List<LogicalVariable> secondaryKeys, List<LogicalVariable> additionalFilteringKeys,
+            ILogicalExpression filterExpr, List<LogicalVariable> prevSecondaryKeys,
+            LogicalVariable prevAdditionalFilteringFields, RecordDescriptor inputDesc, JobGenContext context,
+            JobSpecification spec) throws AlgebricksException {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/rewriter/PigletRewriteRuleset.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/rewriter/PigletRewriteRuleset.java
index 6ff1477..407700f 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/rewriter/PigletRewriteRuleset.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/rewriter/PigletRewriteRuleset.java
@@ -27,7 +27,6 @@
 import org.apache.hyracks.algebricks.rewriter.rules.ComplexJoinInferenceRule;
 import org.apache.hyracks.algebricks.rewriter.rules.ConsolidateAssignsRule;
 import org.apache.hyracks.algebricks.rewriter.rules.ConsolidateSelectsRule;
-import org.apache.hyracks.algebricks.rewriter.rules.EliminateSubplanRule;
 import org.apache.hyracks.algebricks.rewriter.rules.EnforceStructuralPropertiesRule;
 import org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonOperatorsRule;
 import org.apache.hyracks.algebricks.rewriter.rules.ExtractGbyExpressionsRule;
@@ -45,6 +44,7 @@
 import org.apache.hyracks.algebricks.rewriter.rules.RemoveUnusedAssignAndAggregateRule;
 import org.apache.hyracks.algebricks.rewriter.rules.SetAlgebricksPhysicalOperatorsRule;
 import org.apache.hyracks.algebricks.rewriter.rules.SetExecutionModeRule;
+import org.apache.hyracks.algebricks.rewriter.rules.subplan.EliminateSubplanRule;
 
 public class PigletRewriteRuleset {
 
@@ -132,4 +132,4 @@
         return prepareForJobGenRewrites;
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/PigletExpressionJobGen.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/PigletExpressionJobGen.java
index 6c173b2..a19247a 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/PigletExpressionJobGen.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/PigletExpressionJobGen.java
@@ -41,11 +41,11 @@
 import org.apache.hyracks.algebricks.examples.piglet.exceptions.PigletException;
 import org.apache.hyracks.algebricks.examples.piglet.runtime.functions.PigletFunctionRegistry;
 import org.apache.hyracks.algebricks.examples.piglet.types.Type;
-import org.apache.hyracks.algebricks.runtime.base.ICopyAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyRunningAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
-import org.apache.hyracks.algebricks.runtime.base.ICopyUnnestingFunctionFactory;
+import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.evaluators.ColumnAccessEvalFactory;
 import org.apache.hyracks.algebricks.runtime.evaluators.ConstantEvalFactory;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -53,8 +53,10 @@
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
 
 public class PigletExpressionJobGen implements ILogicalExpressionJobGen {
+    private final UTF8StringSerializerDeserializer utf8SerDer = new UTF8StringSerializerDeserializer();
+
     @Override
-    public ICopyEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
+    public IScalarEvaluatorFactory createEvaluatorFactory(ILogicalExpression expr, IVariableTypeEnvironment env,
             IOperatorSchema[] inputSchemas, JobGenContext context) throws AlgebricksException {
         switch (expr.getExpressionTag()) {
             case CONSTANT: {
@@ -74,7 +76,7 @@
 
                     case CHAR_ARRAY:
                         try {
-                            UTF8StringSerializerDeserializer.INSTANCE.serialize(image, dos);
+                            utf8SerDer.serialize(image, dos);
                         } catch (Exception e) {
                             throw new AlgebricksException(e);
                         }
@@ -90,12 +92,12 @@
                 ScalarFunctionCallExpression sfce = (ScalarFunctionCallExpression) expr;
 
                 List<Mutable<ILogicalExpression>> argExprs = sfce.getArguments();
-                ICopyEvaluatorFactory argEvalFactories[] = new ICopyEvaluatorFactory[argExprs.size()];
+                IScalarEvaluatorFactory argEvalFactories[] = new IScalarEvaluatorFactory[argExprs.size()];
                 for (int i = 0; i < argEvalFactories.length; ++i) {
                     Mutable<ILogicalExpression> er = argExprs.get(i);
                     argEvalFactories[i] = createEvaluatorFactory(er.getValue(), env, inputSchemas, context);
                 }
-                ICopyEvaluatorFactory funcEvalFactory;
+                IScalarEvaluatorFactory funcEvalFactory;
                 try {
                     funcEvalFactory = PigletFunctionRegistry.createFunctionEvaluatorFactory(
                             sfce.getFunctionIdentifier(), argEvalFactories);
@@ -115,30 +117,30 @@
     }
 
     @Override
-    public ICopyAggregateFunctionFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
+    public IAggregateEvaluatorFactory createAggregateFunctionFactory(AggregateFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public ICopySerializableAggregateFunctionFactory createSerializableAggregateFunctionFactory(
+    public ISerializedAggregateEvaluatorFactory createSerializableAggregateFunctionFactory(
             AggregateFunctionCallExpression expr, IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas,
             JobGenContext context) throws AlgebricksException {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public ICopyRunningAggregateFunctionFactory createRunningAggregateFunctionFactory(StatefulFunctionCallExpression expr,
+    public IRunningAggregateEvaluatorFactory createRunningAggregateFunctionFactory(StatefulFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public ICopyUnnestingFunctionFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
+    public IUnnestingEvaluatorFactory createUnnestingFunctionFactory(UnnestingFunctionCallExpression expr,
             IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
             throws AlgebricksException {
         throw new UnsupportedOperationException();
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IPigletFunctionEvaluatorFactoryBuilder.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IPigletFunctionEvaluatorFactoryBuilder.java
index c6624eb..4c0328b 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IPigletFunctionEvaluatorFactoryBuilder.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IPigletFunctionEvaluatorFactoryBuilder.java
@@ -19,8 +19,8 @@
 package org.apache.hyracks.algebricks.examples.piglet.runtime.functions;
 
 import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 
 public interface IPigletFunctionEvaluatorFactoryBuilder {
-    public ICopyEvaluatorFactory buildEvaluatorFactory(FunctionIdentifier fid, ICopyEvaluatorFactory[] arguments);
-}
\ No newline at end of file
+    public IScalarEvaluatorFactory buildEvaluatorFactory(FunctionIdentifier fid, IScalarEvaluatorFactory[] arguments);
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IntegerEqFunctionEvaluatorFactory.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IntegerEqFunctionEvaluatorFactory.java
index 534fc33..a88b16b 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IntegerEqFunctionEvaluatorFactory.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/IntegerEqFunctionEvaluatorFactory.java
@@ -18,54 +18,46 @@
  */
 package org.apache.hyracks.algebricks.examples.piglet.runtime.functions;
 
-import java.io.DataOutput;
-import java.io.IOException;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
-public class IntegerEqFunctionEvaluatorFactory implements ICopyEvaluatorFactory {
+public class IntegerEqFunctionEvaluatorFactory implements IScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
-    private final ICopyEvaluatorFactory arg1Factory;
+    private final IScalarEvaluatorFactory arg1Factory;
 
-    private final ICopyEvaluatorFactory arg2Factory;
+    private final IScalarEvaluatorFactory arg2Factory;
 
-    public IntegerEqFunctionEvaluatorFactory(ICopyEvaluatorFactory arg1Factory, ICopyEvaluatorFactory arg2Factory) {
+    public IntegerEqFunctionEvaluatorFactory(IScalarEvaluatorFactory arg1Factory, IScalarEvaluatorFactory arg2Factory) {
         this.arg1Factory = arg1Factory;
         this.arg2Factory = arg2Factory;
     }
 
     @Override
-    public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-        return new ICopyEvaluator() {
-            private DataOutput dataout = output.getDataOutput();
-            private ArrayBackedValueStorage out1 = new ArrayBackedValueStorage();
-            private ArrayBackedValueStorage out2 = new ArrayBackedValueStorage();
-            private ICopyEvaluator eval1 = arg1Factory.createEvaluator(out1);
-            private ICopyEvaluator eval2 = arg2Factory.createEvaluator(out2);
+    public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws AlgebricksException {
+        return new IScalarEvaluator() {
+            private IPointable out1 = new VoidPointable();
+            private IPointable out2 = new VoidPointable();
+            private IScalarEvaluator eval1 = arg1Factory.createScalarEvaluator(ctx);
+            private IScalarEvaluator eval2 = arg2Factory.createScalarEvaluator(ctx);
+            private byte[] resultData = new byte[1];
 
             @Override
-            public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-                out1.reset();
-                eval1.evaluate(tuple);
-                out2.reset();
-                eval2.evaluate(tuple);
-                int v1 = IntegerPointable.getInteger(out1.getByteArray(), 0);
-                int v2 = IntegerPointable.getInteger(out2.getByteArray(), 0);
+            public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+                eval1.evaluate(tuple, out1);
+                eval2.evaluate(tuple, out2);
+                int v1 = IntegerPointable.getInteger(out1.getByteArray(), out1.getStartOffset());
+                int v2 = IntegerPointable.getInteger(out2.getByteArray(), out2.getStartOffset());
                 boolean r = v1 == v2;
-                try {
-                    dataout.writeBoolean(r);
-                } catch (IOException ioe) {
-                    throw new AlgebricksException(ioe);
-                }
+                resultData[0] = r ? (byte) 1 : (byte) 0;
+                result.set(resultData, 0, 1);
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/PigletFunctionRegistry.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/PigletFunctionRegistry.java
index 1ebe9cf..366f238 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/PigletFunctionRegistry.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/runtime/functions/PigletFunctionRegistry.java
@@ -25,7 +25,7 @@
 import org.apache.hyracks.algebricks.core.algebra.functions.AlgebricksBuiltinFunctions;
 import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
 import org.apache.hyracks.algebricks.examples.piglet.exceptions.PigletException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 
 public class PigletFunctionRegistry {
     private static final Map<FunctionIdentifier, IPigletFunctionEvaluatorFactoryBuilder> builderMap;
@@ -35,7 +35,7 @@
 
         temp.put(AlgebricksBuiltinFunctions.EQ, new IPigletFunctionEvaluatorFactoryBuilder() {
             @Override
-            public ICopyEvaluatorFactory buildEvaluatorFactory(FunctionIdentifier fid, ICopyEvaluatorFactory[] arguments) {
+            public IScalarEvaluatorFactory buildEvaluatorFactory(FunctionIdentifier fid, IScalarEvaluatorFactory[] arguments) {
                 return new IntegerEqFunctionEvaluatorFactory(arguments[0], arguments[1]);
             }
         });
@@ -43,7 +43,7 @@
         builderMap = Collections.unmodifiableMap(temp);
     }
 
-    public static ICopyEvaluatorFactory createFunctionEvaluatorFactory(FunctionIdentifier fid, ICopyEvaluatorFactory[] args)
+    public static IScalarEvaluatorFactory createFunctionEvaluatorFactory(FunctionIdentifier fid, IScalarEvaluatorFactory[] args)
             throws PigletException {
         IPigletFunctionEvaluatorFactoryBuilder builder = builderMap.get(fid);
         if (builder == null) {
@@ -51,4 +51,4 @@
         }
         return builder.buildEvaluatorFactory(fid, args);
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/BagType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/BagType.java
index fd3735f..551663b 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/BagType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/BagType.java
@@ -23,4 +23,4 @@
     public Tag getTag() {
         return Tag.BAG;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/CharArrayType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/CharArrayType.java
index e1f64bc..03bb154 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/CharArrayType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/CharArrayType.java
@@ -28,4 +28,4 @@
     public Tag getTag() {
         return Tag.CHAR_ARRAY;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/DoubleType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/DoubleType.java
index eb79c0f..2db0edd 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/DoubleType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/DoubleType.java
@@ -28,4 +28,4 @@
     public Tag getTag() {
         return Tag.DOUBLE;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/FloatType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/FloatType.java
index c71564e..35fe797 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/FloatType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/FloatType.java
@@ -28,4 +28,4 @@
     public Tag getTag() {
         return Tag.FLOAT;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/IntegerType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/IntegerType.java
index f9bdd30..57caa1b 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/IntegerType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/IntegerType.java
@@ -28,4 +28,4 @@
     public Tag getTag() {
         return Tag.INTEGER;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/LongType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/LongType.java
index cc820c3..c8f0738 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/LongType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/LongType.java
@@ -28,4 +28,4 @@
     public Tag getTag() {
         return Tag.LONG;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/MapType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/MapType.java
index c9763dd..ae57255 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/MapType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/MapType.java
@@ -23,4 +23,4 @@
     public Tag getTag() {
         return Tag.MAP;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Schema.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Schema.java
index 9c71e58..4b7f767 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Schema.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Schema.java
@@ -32,4 +32,4 @@
     public List<Pair<String, Type>> getSchema() {
         return schema;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/TupleType.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/TupleType.java
index 7b36a04..713b846 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/TupleType.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/TupleType.java
@@ -23,4 +23,4 @@
     public Tag getTag() {
         return Tag.TUPLE;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java
index f91be1e..f8ffe93 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java
@@ -29,6 +29,6 @@
         BAG,
         MAP
     }
-    
+
     public abstract Tag getTag();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/pom.xml b/algebricks/algebricks-examples/pom.xml
index 466b85d..5a1cd27 100644
--- a/algebricks/algebricks-examples/pom.xml
+++ b/algebricks/algebricks-examples/pom.xml
@@ -22,8 +22,15 @@
   <artifactId>algebricks-examples</artifactId>
   <packaging>pom</packaging>
   <name>algebricks-examples</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>algebricks-core</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
 
-  <parent>
+    <parent>
     <groupId>org.apache.hyracks</groupId>
     <artifactId>algebricks</artifactId>
     <version>0.2.18-SNAPSHOT</version>
diff --git a/algebricks/algebricks-rewriter/pom.xml b/algebricks/algebricks-rewriter/pom.xml
index 24def19..f1333a5 100644
--- a/algebricks/algebricks-rewriter/pom.xml
+++ b/algebricks/algebricks-rewriter/pom.xml
@@ -41,20 +41,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java
index 9aaa3a7..2d2619e 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/AbstractIntroduceGroupByCombinerRule.java
@@ -28,7 +28,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -45,6 +44,7 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.IsomorphismUtilities;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
 import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
@@ -186,7 +186,7 @@
 
     private Pair<Boolean, ILogicalPlan> tryToPushSubplan(ILogicalPlan nestedPlan, GroupByOperator oldGbyOp,
             GroupByOperator newGbyOp, BookkeepingInfo bi, List<LogicalVariable> gbyVars, IOptimizationContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         List<Mutable<ILogicalOperator>> pushedRoots = new ArrayList<Mutable<ILogicalOperator>>();
         Set<SimilarAggregatesInfo> toReplaceSet = new HashSet<SimilarAggregatesInfo>();
         for (Mutable<ILogicalOperator> r : nestedPlan.getRoots()) {
@@ -215,7 +215,7 @@
                     VariableUtilities.getProducedVariables(rootRef.getValue(), newVars);
                 }
 
-                // Replaces variable exprs referring to the variables produced by newPlan by 
+                // Replaces variable exprs referring to the variables produced by newPlan by
                 // those produced by plan.
                 Iterator<LogicalVariable> originalVarIter = originalVars.iterator();
                 Iterator<LogicalVariable> newVarIter = newVars.iterator();
@@ -246,7 +246,7 @@
     private boolean tryToPushRoot(Mutable<ILogicalOperator> root, GroupByOperator oldGbyOp, GroupByOperator newGbyOp,
             BookkeepingInfo bi, List<LogicalVariable> gbyVars, IOptimizationContext context,
             List<Mutable<ILogicalOperator>> toPushAccumulate, Set<SimilarAggregatesInfo> toReplaceSet)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         AbstractLogicalOperator op1 = (AbstractLogicalOperator) root.getValue();
         if (op1.getOperatorTag() != LogicalOperatorTag.AGGREGATE) {
             return false;
@@ -273,6 +273,11 @@
         } else {
             GroupByOperator nestedGby = (GroupByOperator) op3;
             List<LogicalVariable> gbyVars2 = nestedGby.getGbyVarList();
+            Set<LogicalVariable> freeVars = new HashSet<>();
+            // Removes non-free variables defined in the nested plan.
+            OperatorPropertiesUtil.getFreeVariablesInSelfOrDesc(nestedGby, freeVars);
+            gbyVars2.retainAll(freeVars);
+
             List<LogicalVariable> concatGbyVars = new ArrayList<LogicalVariable>(gbyVars);
             concatGbyVars.addAll(gbyVars2);
             for (ILogicalPlan p : nestedGby.getNestedPlans()) {
@@ -288,50 +293,99 @@
              * Push the nested pipeline which provides the input to the nested group operator into newGbyOp (the combined gby op).
              * The change is to fix asterixdb issue 782.
              */
-            Mutable<ILogicalOperator> nestedGbyInputRef = nestedGby.getInputs().get(0);
-            Mutable<ILogicalOperator> startOfPipelineRef = nestedGbyInputRef;
-            if (startOfPipelineRef.getValue().getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) {
+            // Finds the reference of the bottom-most operator in the pipeline that
+            // should not be pushed to the combiner group-by.
+            Mutable<ILogicalOperator> currentOpRef = new MutableObject<ILogicalOperator>(nestedGby);
+            Mutable<ILogicalOperator> bottomOpRef = findBottomOpRefStayInOldGby(currentOpRef);
+
+            // Adds the used variables in the pipeline from <code>currentOpRef</code> to <code>bottomOpRef</code>
+            // into the group-by keys for the introduced combiner group-by operator.
+            Set<LogicalVariable> usedVars = collectUsedFreeVariables(currentOpRef, bottomOpRef);
+            for (LogicalVariable usedVar : usedVars) {
+                if (!concatGbyVars.contains(usedVar)) {
+                    concatGbyVars.add(usedVar);
+                }
+            }
+
+            // Retains the nested pipeline above the identified operator in the old group-by operator.
+            // Pushes the nested pipeline under the select operator into the new group-by operator.
+            Mutable<ILogicalOperator> oldNtsRef = findNtsRef(currentOpRef);
+            ILogicalOperator opToCombiner = bottomOpRef.getValue().getInputs().get(0).getValue();
+            if (opToCombiner.getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) {
+                // No pipeline other than the aggregate operator needs to push to combiner.
                 return true;
             }
-
-            // move down the nested pipeline to find the start of the pipeline right upon the nested-tuple-source
-            boolean hasIsNullFunction = OperatorPropertiesUtil.isNullTest((AbstractLogicalOperator) startOfPipelineRef
-                    .getValue());
-            while (startOfPipelineRef.getValue().getInputs().get(0).getValue().getOperatorTag() != LogicalOperatorTag.NESTEDTUPLESOURCE) {
-                startOfPipelineRef = startOfPipelineRef.getValue().getInputs().get(0);
-                hasIsNullFunction = OperatorPropertiesUtil.isNullTest((AbstractLogicalOperator) startOfPipelineRef
-                        .getValue());
-            }
-            //keep the old nested-tuple-source
-            Mutable<ILogicalOperator> oldNts = startOfPipelineRef.getValue().getInputs().get(0);
-
-            //move down the nested op in the new gby operator
-            Mutable<ILogicalOperator> newGbyNestedOpRef = toPushAccumulate.get(0);
-            while (newGbyNestedOpRef.getValue().getInputs().get(0).getValue().getOperatorTag() != LogicalOperatorTag.NESTEDTUPLESOURCE) {
-                newGbyNestedOpRef = newGbyNestedOpRef.getValue().getInputs().get(0);
-            }
-
-            //insert the pipeline before nested gby into the new (combiner) gby's nested plan on top of the nested-tuple-source
-            startOfPipelineRef.getValue().getInputs().set(0, newGbyNestedOpRef.getValue().getInputs().get(0));
-            newGbyNestedOpRef.getValue().getInputs().set(0, nestedGbyInputRef);
-
-            //in the old gby operator, remove the nested pipeline since it is already pushed to the combiner gby
-            nestedGby.getInputs().set(0, oldNts);
-            List<LogicalVariable> aggProducedVars = new ArrayList<LogicalVariable>();
-            VariableUtilities.getProducedVariables(toPushAccumulate.get(0).getValue(), aggProducedVars);
-
-            if (hasIsNullFunction && aggProducedVars.size() != 0) {
-                // if the old nested pipeline contains a not-null-check, we need to convert it to a not-system-null-check in the non-local gby
-                processNullTest(context, nestedGby, aggProducedVars);
-            }
-
+            bottomOpRef.getValue().getInputs().set(0, new MutableObject<ILogicalOperator>(oldNtsRef.getValue()));
+            Mutable<ILogicalOperator> newGbyNestedOpRef = findNtsRef(toPushAccumulate.get(0));
+            NestedTupleSourceOperator newNts = (NestedTupleSourceOperator) newGbyNestedOpRef.getValue();
+            newGbyNestedOpRef.setValue(opToCombiner);
+            oldNtsRef.setValue(newNts);
             return true;
         }
     }
 
     /**
+     * Find the set of used free variables along the pipeline from <code>topOpRef</code> (exclusive)
+     * to <code>bottomOpRef</code> (inclusive).
+     *
+     * @param topOpRef,
+     *            the top root of the pipeline.
+     * @param bottomOpRef,
+     *            the bottom of the pipeline.
+     * @return the set of used variables.
+     * @throws AlgebricksException
+     */
+    private Set<LogicalVariable> collectUsedFreeVariables(Mutable<ILogicalOperator> topOpRef,
+            Mutable<ILogicalOperator> bottomOpRef) throws AlgebricksException {
+        Set<LogicalVariable> usedVars = new HashSet<>();
+        Mutable<ILogicalOperator> currentOpRef = topOpRef;
+        while (currentOpRef != bottomOpRef) {
+            currentOpRef = currentOpRef.getValue().getInputs().get(0);
+            VariableUtilities.getUsedVariables(currentOpRef.getValue(), usedVars);
+        }
+        Set<LogicalVariable> freeVars = new HashSet<>();
+        OperatorPropertiesUtil.getFreeVariablesInSelfOrDesc((AbstractLogicalOperator) topOpRef.getValue(), freeVars);
+        usedVars.retainAll(freeVars);
+        return usedVars;
+    }
+
+    /**
+     * Find the reference of a nested tuple source operator in the query pipeline rooted at <code>currentOpRef</code>
+     *
+     * @param currentOpRef
+     * @return the reference of a nested tuple source operator
+     */
+    private Mutable<ILogicalOperator> findNtsRef(Mutable<ILogicalOperator> currentOpRef) {
+        while (currentOpRef.getValue().getInputs().size() > 0) {
+            currentOpRef = currentOpRef.getValue().getInputs().get(0);
+        }
+        return currentOpRef;
+    }
+
+    /**
+     * Find the bottom-most nested operator reference in the query pipeline rooted at <code>currentOpRef</code>
+     * that cannot be pushed into the combiner group-by operator.
+     *
+     * @param currentOpRef
+     * @return the bottom-most reference of a select operator
+     */
+    private Mutable<ILogicalOperator> findBottomOpRefStayInOldGby(Mutable<ILogicalOperator> currentOpRef)
+            throws AlgebricksException {
+        Mutable<ILogicalOperator> bottomOpRef = currentOpRef;
+        while (currentOpRef.getValue().getInputs().size() > 0) {
+            Set<LogicalVariable> producedVars = new HashSet<>();
+            VariableUtilities.getProducedVariables(currentOpRef.getValue(), producedVars);
+            if (currentOpRef.getValue().getOperatorTag() == LogicalOperatorTag.SELECT || !producedVars.isEmpty()) {
+                bottomOpRef = currentOpRef;
+            }
+            currentOpRef = currentOpRef.getValue().getInputs().get(0);
+        }
+        return bottomOpRef;
+    }
+
+    /**
      * Deal with the case where the nested plan in the combiner gby operator has a null-test before invoking aggregation functions.
-     * 
+     *
      * @param context
      *            The optimization context.
      * @param nestedGby
@@ -341,4 +395,4 @@
      */
     protected abstract void processNullTest(IOptimizationContext context, GroupByOperator nestedGby,
             List<LogicalVariable> aggregateVarsProducedByCombiner);
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java
index eb39332..270d8e4 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java
@@ -24,7 +24,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -264,15 +263,17 @@
                             break;
                         }
                     }
-                    // TODO: For now we bail here, but we could remember such ops and determine their target partition at a later point.
-                    if (targetUsedVars == null) {
-                        return false;
-                    }
                 } else if (innerMatches != 0 && outerMatches != 0) {
                     // The current operator produces variables that are used by both partitions, so the inner and outer are not independent and, therefore, we cannot create a join.
                     // TODO: We may still be able to split the operator to create a viable partitioning.
                     return false;
                 }
+
+                // TODO: For now we bail here, but we could remember such ops and determine their target partition at a later point.
+                if (targetUsedVars == null) {
+                    return false;
+                }
+
                 // Update used variables of partition that op belongs to.
                 if (op.hasNestedPlans() && op.getOperatorTag() != LogicalOperatorTag.SUBPLAN) {
                     AbstractOperatorWithNestedPlans opWithNestedPlans = (AbstractOperatorWithNestedPlans) op;
@@ -298,7 +299,7 @@
 
     /**
      * check whether the operator is inside a sub-plan
-     * 
+     *
      * @param nestedRootRef
      * @return true-if it is; false otherwise.
      */
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java
index 165530a..ae52c35 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java
@@ -20,7 +20,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -32,15 +31,14 @@
 import org.apache.hyracks.algebricks.core.algebra.functions.IFunctionInfo;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 /**
  * Matches the following operator pattern:
  * (select) <-- ((assign)* <-- (select)*)+
- * 
  * Consolidates the selects to:
  * (select) <-- (assign)*
- *
  */
 public class ConsolidateSelectsRule implements IAlgebraicRewriteRule {
 
@@ -50,8 +48,9 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
-    	AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.SELECT) {
             return false;
         }
@@ -59,30 +58,31 @@
 
         IFunctionInfo andFn = context.getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.AND);
         // New conjuncts for consolidated select.
-        AbstractFunctionCallExpression conj = null;        
+        AbstractFunctionCallExpression conj = null;
         AbstractLogicalOperator topMostOp = null;
         AbstractLogicalOperator selectParent = null;
         AbstractLogicalOperator nextSelect = firstSelect;
-		do {
-        	// Skip through assigns.
+        do {
+            // Skip through assigns.
             do {
-            	selectParent = nextSelect;
-            	nextSelect = (AbstractLogicalOperator) selectParent.getInputs().get(0).getValue();
-            } while (nextSelect.getOperatorTag() == LogicalOperatorTag.ASSIGN);
+                selectParent = nextSelect;
+                nextSelect = (AbstractLogicalOperator) selectParent.getInputs().get(0).getValue();
+            } while (nextSelect.getOperatorTag() == LogicalOperatorTag.ASSIGN && OperatorPropertiesUtil
+                    .isMovable(nextSelect) /* Select cannot be pushed through un-movable operators.*/);
             // Stop if the child op is not a select.
             if (nextSelect.getOperatorTag() != LogicalOperatorTag.SELECT) {
-        		break;
-        	}
+                break;
+            }
             // Remember the top-most op that we are not removing.
             topMostOp = selectParent;
-            
+
             // Initialize the new conjuncts, if necessary.
             if (conj == null) {
-            	conj = new ScalarFunctionCallExpression(andFn);
-            	// Add the first select's condition.
-            	conj.getArguments().add(new MutableObject<ILogicalExpression>(firstSelect.getCondition().getValue()));
+                conj = new ScalarFunctionCallExpression(andFn);
+                // Add the first select's condition.
+                conj.getArguments().add(new MutableObject<ILogicalExpression>(firstSelect.getCondition().getValue()));
             }
-            
+
             // Consolidate all following selects.
             do {
                 // Add the condition nextSelect to the new list of conjuncts.
@@ -90,21 +90,21 @@
                 selectParent = nextSelect;
                 nextSelect = (AbstractLogicalOperator) nextSelect.getInputs().get(0).getValue();
             } while (nextSelect.getOperatorTag() == LogicalOperatorTag.SELECT);
-            
+
             // Hook up the input of the top-most remaining op if necessary.
             if (topMostOp.getOperatorTag() == LogicalOperatorTag.ASSIGN || topMostOp == firstSelect) {
-            	topMostOp.getInputs().set(0, selectParent.getInputs().get(0));
+                topMostOp.getInputs().set(0, selectParent.getInputs().get(0));
             }
-            
+
             // Prepare for next iteration.
             nextSelect = selectParent;
         } while (true);
-		
-		// Did we consolidate any selects?
+
+        // Did we consolidate any selects?
         if (conj == null) {
-        	return false;
+            return false;
         }
-        
+
         // Set the new conjuncts.
         firstSelect.getCondition().setValue(conj);
         context.computeAndSetTypeEnvironmentForOperator(firstSelect);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/CopyLimitDownRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/CopyLimitDownRule.java
index 0783f0c..a68ed6c 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/CopyLimitDownRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/CopyLimitDownRule.java
@@ -23,7 +23,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -48,7 +47,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.LIMIT) {
             return false;
@@ -71,6 +71,7 @@
             LogicalOperatorTag candidateOpTag = candidateOp.getOperatorTag();
             if (candidateOp.getInputs().size() > 1 || !candidateOp.isMap()
                     || candidateOpTag == LogicalOperatorTag.SELECT || candidateOpTag == LogicalOperatorTag.LIMIT
+                    || candidateOpTag == LogicalOperatorTag.UNNEST_MAP
                     || !OperatorPropertiesUtil.disjoint(limitUsedVars, candidateProducedVars)) {
                 break;
             }
@@ -87,10 +88,14 @@
             if (limitOp.getOffset().getValue() == null) {
                 limitCloneOp = new LimitOperator(limitOp.getMaxObjects().getValue(), false);
             } else {
-                IFunctionInfo finfoAdd = context.getMetadataProvider().lookupFunction(
-                        AlgebricksBuiltinFunctions.NUMERIC_ADD);
+                // Need to add an offset to the given limit value
+                // since the original topmost limit will use the offset value.
+                // We can't apply the offset multiple times.
+                IFunctionInfo finfoAdd = context.getMetadataProvider()
+                        .lookupFunction(AlgebricksBuiltinFunctions.NUMERIC_ADD);
                 List<Mutable<ILogicalExpression>> addArgs = new ArrayList<>();
-                addArgs.add(new MutableObject<ILogicalExpression>(limitOp.getMaxObjects().getValue().cloneExpression()));
+                addArgs.add(
+                        new MutableObject<ILogicalExpression>(limitOp.getMaxObjects().getValue().cloneExpression()));
                 addArgs.add(new MutableObject<ILogicalExpression>(limitOp.getOffset().getValue().cloneExpression()));
                 ScalarFunctionCallExpression maxPlusOffset = new ScalarFunctionCallExpression(finfoAdd, addArgs);
                 limitCloneOp = new LimitOperator(maxPlusOffset, false);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java
index d1fedf2..aab6ce1 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java
@@ -35,7 +35,7 @@
 /**
  * This rule lift out the aggregate operator out from a group-by operator
  * if the gby operator groups-by on empty key, e.g., the group-by variables are empty.
- * 
+ *
  * @author yingyib
  */
 public class EliminateGroupByEmptyKeyRule implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java
index ee7f6a5..fcec50a 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java
@@ -43,7 +43,7 @@
  * If there is any ordering property before the subplan operator, the ordering should
  * be kept after the subplan.
  * This rule adds a redundant order operator after those cases, to guarantee the correctness.
- * 
+ *
  * @author yingyib
  */
 public class EnforceOrderByAfterSubplan implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java
index 4df9db7..53f7dbf 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceStructuralPropertiesRule.java
@@ -27,7 +27,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -67,7 +66,6 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.StableSortPOperator;
 import org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
 import org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
-import org.apache.hyracks.algebricks.core.algebra.properties.DefaultNodeGroupDomain;
 import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
 import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
 import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty.PropertyType;
@@ -94,8 +92,6 @@
 
 public class EnforceStructuralPropertiesRule implements IAlgebraicRewriteRule {
 
-    private static final INodeDomain DEFAULT_DOMAIN = new DefaultNodeGroupDomain("__DEFAULT");
-
     private PhysicalOptimizationConfig physicalOptimizationConfig;
 
     @Override
@@ -105,7 +101,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         // wait for the physical operators to be set first
         if (op.getPhysicalOperator() == null) {
@@ -127,7 +124,8 @@
 
         PhysicalOptimizationsUtil.computeFDsAndEquivalenceClasses(op, context);
 
-        StructuralPropertiesVector pvector = new StructuralPropertiesVector(new RandomPartitioningProperty(null),
+        StructuralPropertiesVector pvector = new StructuralPropertiesVector(
+                new RandomPartitioningProperty(context.getComputationNodeDomain()),
                 new LinkedList<ILocalStructuralProperty>());
         boolean changed = physOptimizeOp(opRef, pvector, false, context);
         op.computeDeliveredPhysicalProperties(context);
@@ -154,13 +152,49 @@
         return changed;
     }
 
+    // Gets the index of a child to start top-down data property enforcement.
+    // If there is a partitioning-compatible child with the operator in opRef, start from this child;
+    // otherwise, start from child zero.
+    private int getStartChildIndex(AbstractLogicalOperator op, PhysicalRequirements pr, boolean nestedPlan,
+            IOptimizationContext context) throws AlgebricksException {
+        IPhysicalPropertiesVector[] reqdProperties = null;
+        if (pr != null) {
+            reqdProperties = pr.getRequiredProperties();
+        }
+
+        List<IPartitioningProperty> deliveredPartitioningPropertiesFromChildren = new ArrayList<IPartitioningProperty>();
+        for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
+            AbstractLogicalOperator child = (AbstractLogicalOperator) childRef.getValue();
+            deliveredPartitioningPropertiesFromChildren
+                    .add(child.getDeliveredPhysicalProperties().getPartitioningProperty());
+        }
+        int partitioningCompatibleChild = 0;
+        for (int i = 0; i < op.getInputs().size(); i++) {
+            IPartitioningProperty deliveredPropertyFromChild = deliveredPartitioningPropertiesFromChildren.get(i);
+            if (reqdProperties == null || reqdProperties[i] == null
+                    || reqdProperties[i].getPartitioningProperty() == null || deliveredPropertyFromChild == null
+                    || reqdProperties[i].getPartitioningProperty()
+                            .getPartitioningType() != deliveredPartitioningPropertiesFromChildren.get(i)
+                                    .getPartitioningType()) {
+                continue;
+            }
+            IPartitioningProperty requiredPropertyForChild = reqdProperties[i].getPartitioningProperty();
+            // If child i's delivered partitioning property already satisfies the required property, stop and return the child index.
+            if (PropertiesUtil.matchPartitioningProps(requiredPropertyForChild, deliveredPropertyFromChild, true)) {
+                partitioningCompatibleChild = i;
+                break;
+            }
+        }
+        return partitioningCompatibleChild;
+    }
+
     private boolean physOptimizeOp(Mutable<ILogicalOperator> opRef, IPhysicalPropertiesVector required,
             boolean nestedPlan, IOptimizationContext context) throws AlgebricksException {
 
         boolean changed = false;
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         optimizeUsingConstraintsAndEquivClasses(op);
-        PhysicalRequirements pr = op.getRequiredPhysicalPropertiesForChildren(required);
+        PhysicalRequirements pr = op.getRequiredPhysicalPropertiesForChildren(required, context);
         IPhysicalPropertiesVector[] reqdProperties = null;
         if (pr != null) {
             reqdProperties = pr.getRequiredProperties();
@@ -184,7 +218,7 @@
                 } else {
                     INodeDomain dom2 = delivered.getPartitioningProperty().getNodeDomain();
                     if (!childrenDomain.sameAs(dom2)) {
-                        childrenDomain = DEFAULT_DOMAIN;
+                        childrenDomain = context.getComputationNodeDomain();
                     }
                 }
                 j++;
@@ -201,23 +235,31 @@
             }
         }
 
+        // The child index of the child operator to optimize first.
+        int startChildIndex = getStartChildIndex(op, pr, nestedPlan, context);
         IPartitioningProperty firstDeliveredPartitioning = null;
-        int i = 0;
-        for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
-            AbstractLogicalOperator child = (AbstractLogicalOperator) childRef.getValue();
+        // Enforce data properties in a top-down manner.
+        for (int j = 0; j < op.getInputs().size(); j++) {
+            // Starts from a partitioning-compatible child if any to loop over all children.
+            int childIndex = (j + startChildIndex) % op.getInputs().size();
+            IPhysicalPropertiesVector requiredProperty = reqdProperties[childIndex];
+            AbstractLogicalOperator child = (AbstractLogicalOperator) op.getInputs().get(childIndex).getValue();
             IPhysicalPropertiesVector delivered = child.getDeliveredPhysicalProperties();
 
-            AlgebricksConfig.ALGEBRICKS_LOGGER.finest(">>>> Properties delivered by " + child.getPhysicalOperator()
-                    + ": " + delivered + "\n");
+            AlgebricksConfig.ALGEBRICKS_LOGGER
+                    .finest(">>>> Properties delivered by " + child.getPhysicalOperator() + ": " + delivered + "\n");
             IPartitioningRequirementsCoordinator prc = pr.getPartitioningCoordinator();
+            // Coordinates requirements by looking at the firstDeliveredPartitioning.
             Pair<Boolean, IPartitioningProperty> pbpp = prc.coordinateRequirements(
-                    reqdProperties[i].getPartitioningProperty(), firstDeliveredPartitioning, op, context);
+                    requiredProperty.getPartitioningProperty(), firstDeliveredPartitioning, op, context);
             boolean mayExpandPartitioningProperties = pbpp.first;
             IPhysicalPropertiesVector rqd = new StructuralPropertiesVector(pbpp.second,
-                    reqdProperties[i].getLocalProperties());
+                    requiredProperty.getLocalProperties());
 
-            AlgebricksConfig.ALGEBRICKS_LOGGER.finest(">>>> Required properties for " + child.getPhysicalOperator()
-                    + ": " + rqd + "\n");
+            AlgebricksConfig.ALGEBRICKS_LOGGER
+                    .finest(">>>> Required properties for " + child.getPhysicalOperator() + ": " + rqd + "\n");
+            // The partitioning property of reqdProperties[childIndex] could be updated here because
+            // rqd.getPartitioningProperty() is the same object instance as requiredProperty.getPartitioningProperty().
             IPhysicalPropertiesVector diff = delivered.getUnsatisfiedPropertiesFrom(rqd,
                     mayExpandPartitioningProperties, context.getEquivalenceClassMap(child), context.getFDList(child));
 
@@ -227,9 +269,10 @@
 
             if (diff != null) {
                 changed = true;
-                addEnforcers(op, i, diff, rqd, delivered, childrenDomain, nestedPlan, context);
+                addEnforcers(op, childIndex, diff, rqd, delivered, childrenDomain, nestedPlan, context);
 
-                AbstractLogicalOperator newChild = ((AbstractLogicalOperator) op.getInputs().get(i).getValue());
+                AbstractLogicalOperator newChild = ((AbstractLogicalOperator) op.getInputs().get(childIndex)
+                        .getValue());
 
                 if (newChild != child) {
                     delivered = newChild.getDeliveredPhysicalProperties();
@@ -242,8 +285,8 @@
                         break;
                     }
                 }
-
             }
+
             if (firstDeliveredPartitioning == null) {
                 IPartitioningProperty dpp = delivered.getPartitioningProperty();
                 if (dpp.getPartitioningType() == PartitioningType.ORDERED_PARTITIONED
@@ -251,8 +294,6 @@
                     firstDeliveredPartitioning = dpp;
                 }
             }
-
-            i++;
         }
 
         if (op.hasNestedPlans()) {
@@ -266,8 +307,8 @@
 
         if (opIsRedundantSort) {
             if (AlgebricksConfig.DEBUG) {
-                AlgebricksConfig.ALGEBRICKS_LOGGER.fine(">>>> Removing redundant SORT operator "
-                        + op.getPhysicalOperator() + "\n");
+                AlgebricksConfig.ALGEBRICKS_LOGGER
+                        .fine(">>>> Removing redundant SORT operator " + op.getPhysicalOperator() + "\n");
                 printOp(op);
             }
             changed = true;
@@ -279,7 +320,6 @@
             // Now, transfer annotations from the original sort op. to this one.
             AbstractLogicalOperator transferTo = nextOp;
             if (transferTo.getOperatorTag() == LogicalOperatorTag.EXCHANGE) {
-                //
                 // remove duplicate exchange operator
                 transferTo = (AbstractLogicalOperator) transferTo.getInputs().get(0).getValue();
             }
@@ -291,7 +331,7 @@
 
     private IPhysicalPropertiesVector newPropertiesDiff(AbstractLogicalOperator newChild,
             IPhysicalPropertiesVector required, boolean mayExpandPartitioningProperties, IOptimizationContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         IPhysicalPropertiesVector newDelivered = newChild.getDeliveredPhysicalProperties();
 
         Map<LogicalVariable, EquivalenceClass> newChildEqClasses = context.getEquivalenceClassMap(newChild);
@@ -302,8 +342,8 @@
             newChildEqClasses = context.getEquivalenceClassMap(newChild);
             newChildFDs = context.getFDList(newChild);
         }
-        AlgebricksConfig.ALGEBRICKS_LOGGER.finest(">>>> Required properties for new op. "
-                + newChild.getPhysicalOperator() + ": " + required + "\n");
+        AlgebricksConfig.ALGEBRICKS_LOGGER.finest(
+                ">>>> Required properties for new op. " + newChild.getPhysicalOperator() + ": " + required + "\n");
 
         return newDelivered.getUnsatisfiedPropertiesFrom(required, mayExpandPartitioningProperties, newChildEqClasses,
                 newChildFDs);
@@ -377,16 +417,16 @@
             IPhysicalPropertiesVector diffOfProperties, IOptimizationContext context) {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.ORDER
-                || (op.getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.STABLE_SORT && op
-                        .getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.IN_MEMORY_STABLE_SORT)
+                || (op.getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.STABLE_SORT
+                        && op.getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.IN_MEMORY_STABLE_SORT)
                 || delivered.getLocalProperties() == null) {
             return false;
         }
         AbstractStableSortPOperator sortOp = (AbstractStableSortPOperator) op.getPhysicalOperator();
         sortOp.computeLocalProperties(op);
         ILocalStructuralProperty orderProp = sortOp.getOrderProperty();
-        return PropertiesUtil.matchLocalProperties(Collections.singletonList(orderProp),
-                delivered.getLocalProperties(), context.getEquivalenceClassMap(op), context.getFDList(op));
+        return PropertiesUtil.matchLocalProperties(Collections.singletonList(orderProp), delivered.getLocalProperties(),
+                context.getEquivalenceClassMap(op), context.getFDList(op));
     }
 
     private void addEnforcers(AbstractLogicalOperator op, int childIndex,
@@ -401,7 +441,7 @@
                     .getDeliveredPhysicalProperties();
             addPartitioningEnforcers(op, childIndex, pp, required, deliveredByNewChild, domain, context);
         } else {
-            addPartitioningEnforcers(op, childIndex, pp, required, deliveredByChild, domain, context);
+            addPartitioningEnforcers(op, childIndex, pp, required, deliveredByChild, pp.getNodeDomain(), context);
             AbstractLogicalOperator newChild = (AbstractLogicalOperator) op.getInputs().get(childIndex).getValue();
             IPhysicalPropertiesVector newDiff = newPropertiesDiff(newChild, required, true, context);
             AlgebricksConfig.ALGEBRICKS_LOGGER.finest(">>>> New properties diff: " + newDiff + "\n");
@@ -414,8 +454,8 @@
     private void addLocalEnforcers(AbstractLogicalOperator op, int i, List<ILocalStructuralProperty> localProperties,
             boolean nestedPlan, IOptimizationContext context) throws AlgebricksException {
         if (AlgebricksConfig.DEBUG) {
-            AlgebricksConfig.ALGEBRICKS_LOGGER.fine(">>>> Adding local enforcers for local props = " + localProperties
-                    + "\n");
+            AlgebricksConfig.ALGEBRICKS_LOGGER
+                    .fine(">>>> Adding local enforcers for local props = " + localProperties + "\n");
         }
 
         if (localProperties == null || localProperties.isEmpty()) {
@@ -434,8 +474,8 @@
                 }
                 case LOCAL_GROUPING_PROPERTY: {
                     LocalGroupingProperty g = (LocalGroupingProperty) prop;
-                    Collection<LogicalVariable> vars = (g.getPreferredOrderEnforcer() != null) ? g
-                            .getPreferredOrderEnforcer() : g.getColumnSet();
+                    Collection<LogicalVariable> vars = (g.getPreferredOrderEnforcer() != null)
+                            ? g.getPreferredOrderEnforcer() : g.getColumnSet();
                     List<OrderColumn> orderColumns = new ArrayList<OrderColumn>();
                     for (LogicalVariable v : vars) {
                         OrderColumn oc = new OrderColumn(v, OrderKind.ASC);
@@ -461,7 +501,7 @@
 
     private Mutable<ILogicalOperator> enforceOrderProperties(List<LocalOrderProperty> oList,
             Mutable<ILogicalOperator> topOp, boolean isMicroOp, IOptimizationContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         List<Pair<IOrder, Mutable<ILogicalExpression>>> oe = new LinkedList<Pair<IOrder, Mutable<ILogicalExpression>>>();
         for (LocalOrderProperty orderProperty : oList) {
             for (OrderColumn oc : orderProperty.getOrderColumns()) {
@@ -498,8 +538,8 @@
                         pop = new RandomMergeExchangePOperator();
                     } else {
                         if (op.getAnnotations().containsKey(OperatorAnnotations.USE_RANGE_CONNECTOR)) {
-                            IRangeMap rangeMap = (IRangeMap) op.getAnnotations().get(
-                                    OperatorAnnotations.USE_RANGE_CONNECTOR);
+                            IRangeMap rangeMap = (IRangeMap) op.getAnnotations()
+                                    .get(OperatorAnnotations.USE_RANGE_CONNECTOR);
                             pop = new RangePartitionMergePOperator(ordCols, domain, rangeMap);
                         } else {
                             OrderColumn[] sortColumns = new OrderColumn[ordCols.size()];
@@ -533,7 +573,8 @@
                     break;
                 }
                 case ORDERED_PARTITIONED: {
-                    pop = new RangePartitionPOperator(((OrderedPartitionedProperty) pp).getOrderColumns(), domain, null);
+                    pop = new RangePartitionPOperator(((OrderedPartitionedProperty) pp).getOrderColumns(), domain,
+                            null);
                     break;
                 }
                 case BROADCAST: {
@@ -559,8 +600,8 @@
             OperatorPropertiesUtil.computeSchemaAndPropertiesRecIfNull(exchg, context);
             context.computeAndSetTypeEnvironmentForOperator(exchg);
             if (AlgebricksConfig.DEBUG) {
-                AlgebricksConfig.ALGEBRICKS_LOGGER.fine(">>>> Added partitioning enforcer "
-                        + exchg.getPhysicalOperator() + ".\n");
+                AlgebricksConfig.ALGEBRICKS_LOGGER
+                        .fine(">>>> Added partitioning enforcer " + exchg.getPhysicalOperator() + ".\n");
                 printOp((AbstractLogicalOperator) op);
             }
         }
@@ -598,7 +639,6 @@
             }
             return ordCols;
         }
-
     }
 
     private void setNewOp(Mutable<ILogicalOperator> opRef, AbstractLogicalOperator newOp, IOptimizationContext context)
@@ -609,8 +649,8 @@
         newOp.recomputeSchema();
         newOp.computeDeliveredPhysicalProperties(context);
         context.computeAndSetTypeEnvironmentForOperator(newOp);
-        AlgebricksConfig.ALGEBRICKS_LOGGER.finest(">>>> Structural properties for " + newOp.getPhysicalOperator()
-                + ": " + newOp.getDeliveredPhysicalProperties() + "\n");
+        AlgebricksConfig.ALGEBRICKS_LOGGER.finest(">>>> Structural properties for " + newOp.getPhysicalOperator() + ": "
+                + newOp.getDeliveredPhysicalProperties() + "\n");
 
         PhysicalOptimizationsUtil.computeFDsAndEquivalenceClasses(newOp, context);
     }
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
index 232a78b..11ff4be 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
@@ -28,7 +28,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -93,7 +92,8 @@
     private final Map<ILogicalExpression, ExprEquivalenceClass> exprEqClassMap = new HashMap<ILogicalExpression, ExprEquivalenceClass>();
 
     // Set of operators for which common subexpression elimination should not be performed.
-    private static final Set<LogicalOperatorTag> ignoreOps = new HashSet<LogicalOperatorTag>();
+    private static final Set<LogicalOperatorTag> ignoreOps = new HashSet<LogicalOperatorTag>(6);
+
     static {
         ignoreOps.add(LogicalOperatorTag.UNNEST);
         ignoreOps.add(LogicalOperatorTag.UNNEST_MAP);
@@ -110,7 +110,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         exprEqClassMap.clear();
         substVisitor.setContext(context);
         boolean modified = removeCommonExpressions(opRef, context);
@@ -196,7 +197,7 @@
         }
 
         // TODO: For now do not perform replacement in nested plans
-        // due to the complication of figuring out whether the firstOp in an equivalence class is within a subplan, 
+        // due to the complication of figuring out whether the firstOp in an equivalence class is within a subplan,
         // and the resulting variable will not be visible to the outside.
         // Since subplans should be eliminated in most cases, this behavior is acceptable for now.
         /*
@@ -238,7 +239,7 @@
             boolean modified = false;
             ExprEquivalenceClass exprEqClass = exprEqClassMap.get(expr);
             if (exprEqClass != null) {
-                // Replace common subexpression with existing variable. 
+                // Replace common subexpression with existing variable.
                 if (exprEqClass.variableIsSet()) {
                     Set<LogicalVariable> liveVars = new HashSet<LogicalVariable>();
                     List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
@@ -310,14 +311,14 @@
                 selectOp.getInputs().add(new MutableObject<ILogicalOperator>(op.getInputs().get(0).getValue()));
                 op.getInputs().get(0).setValue(selectOp);
                 // Set firstOp to be the select below op, since we want to assign the common subexpr there.
-                firstOp = (AbstractLogicalOperator) selectOp;
+                firstOp = selectOp;
             } else if (firstOp.getInputs().size() > 1) {
                 // Bail for any non-join operator with multiple inputs.
                 return false;
             }
             LogicalVariable newVar = context.newVar();
-            AssignOperator newAssign = new AssignOperator(newVar, new MutableObject<ILogicalExpression>(firstExprRef
-                    .getValue().cloneExpression()));
+            AssignOperator newAssign = new AssignOperator(newVar,
+                    new MutableObject<ILogicalExpression>(firstExprRef.getValue().cloneExpression()));
             // Place assign below firstOp.
             newAssign.getInputs().add(new MutableObject<ILogicalOperator>(firstOp.getInputs().get(0).getValue()));
             newAssign.setExecutionMode(firstOp.getExecutionMode());
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
index 92a3691..3b31f6d 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
@@ -28,7 +28,6 @@
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableInt;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -38,7 +37,6 @@
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.ExecutionMode;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
@@ -49,6 +47,7 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.ReplicatePOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.StreamProjectPOperator;
+import org.apache.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 public class ExtractCommonOperatorsRule implements IAlgebraicRewriteRule {
@@ -62,14 +61,16 @@
     private int lastUsedClusterId = 0;
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.WRITE && op.getOperatorTag() != LogicalOperatorTag.WRITE_RESULT
                 && op.getOperatorTag() != LogicalOperatorTag.DISTRIBUTE_RESULT) {
             return false;
         }
-        if (!roots.contains(op))
+        if (!roots.contains(op)) {
             roots.add(new MutableObject<ILogicalOperator>(op));
+        }
         return false;
     }
 
@@ -90,10 +91,12 @@
                 topDownMaterialization(roots);
                 genCandidates(context);
                 removeTrivialShare();
-                if (equivalenceClasses.size() > 0)
+                if (equivalenceClasses.size() > 0) {
                     changed = rewrite(context);
-                if (!rewritten)
+                }
+                if (!rewritten) {
                     rewritten = changed;
+                }
                 equivalenceClasses.clear();
                 childrenToParents.clear();
                 opToCandidateInputs.clear();
@@ -111,22 +114,27 @@
             for (int i = candidates.size() - 1; i >= 0; i--) {
                 Mutable<ILogicalOperator> opRef = candidates.get(i);
                 AbstractLogicalOperator aop = (AbstractLogicalOperator) opRef.getValue();
-                if (aop.getOperatorTag() == LogicalOperatorTag.EXCHANGE)
+                if (aop.getOperatorTag() == LogicalOperatorTag.EXCHANGE) {
                     aop = (AbstractLogicalOperator) aop.getInputs().get(0).getValue();
-                if (aop.getOperatorTag() == LogicalOperatorTag.EMPTYTUPLESOURCE)
+                }
+                if (aop.getOperatorTag() == LogicalOperatorTag.EMPTYTUPLESOURCE) {
                     candidates.remove(i);
+                }
             }
         }
-        for (int i = equivalenceClasses.size() - 1; i >= 0; i--)
-            if (equivalenceClasses.get(i).size() < 2)
+        for (int i = equivalenceClasses.size() - 1; i >= 0; i--) {
+            if (equivalenceClasses.get(i).size() < 2) {
                 equivalenceClasses.remove(i);
+            }
+        }
     }
 
     private boolean rewrite(IOptimizationContext context) throws AlgebricksException {
         boolean changed = false;
         for (List<Mutable<ILogicalOperator>> members : equivalenceClasses) {
-            if (rewriteForOneEquivalentClass(members, context))
+            if (rewriteForOneEquivalentClass(members, context)) {
                 changed = true;
+            }
         }
         return changed;
     }
@@ -153,16 +161,17 @@
             candidate = group.get(0);
             ReplicateOperator rop = new ReplicateOperator(group.size(), materializationFlags);
             rop.setPhysicalOperator(new ReplicatePOperator());
-            rop.setExecutionMode(ExecutionMode.PARTITIONED);
             Mutable<ILogicalOperator> ropRef = new MutableObject<ILogicalOperator>(rop);
             AbstractLogicalOperator aopCandidate = (AbstractLogicalOperator) candidate.getValue();
             List<Mutable<ILogicalOperator>> originalCandidateParents = childrenToParents.get(candidate);
 
+            rop.setExecutionMode(((AbstractLogicalOperator) candidate.getValue()).getExecutionMode());
             if (aopCandidate.getOperatorTag() == LogicalOperatorTag.EXCHANGE) {
                 rop.getInputs().add(candidate);
             } else {
                 AbstractLogicalOperator beforeExchange = new ExchangeOperator();
                 beforeExchange.setPhysicalOperator(new OneToOneExchangePOperator());
+                beforeExchange.setExecutionMode(rop.getExecutionMode());
                 Mutable<ILogicalOperator> beforeExchangeRef = new MutableObject<ILogicalOperator>(beforeExchange);
                 beforeExchange.getInputs().add(candidate);
                 context.computeAndSetTypeEnvironmentForOperator(beforeExchange);
@@ -179,6 +188,7 @@
                 } else {
                     AbstractLogicalOperator exchange = new ExchangeOperator();
                     exchange.setPhysicalOperator(new OneToOneExchangePOperator());
+                    exchange.setExecutionMode(rop.getExecutionMode());
                     MutableObject<ILogicalOperator> exchangeRef = new MutableObject<ILogicalOperator>(exchange);
                     exchange.getInputs().add(ropRef);
                     rop.getOutputs().add(exchangeRef);
@@ -190,11 +200,13 @@
             List<LogicalVariable> liveVarsNew = new ArrayList<LogicalVariable>();
             VariableUtilities.getLiveVariables(candidate.getValue(), liveVarsNew);
             ArrayList<Mutable<ILogicalExpression>> assignExprs = new ArrayList<Mutable<ILogicalExpression>>();
-            for (LogicalVariable liveVar : liveVarsNew)
+            for (LogicalVariable liveVar : liveVarsNew) {
                 assignExprs.add(new MutableObject<ILogicalExpression>(new VariableReferenceExpression(liveVar)));
+            }
             for (Mutable<ILogicalOperator> ref : group) {
-                if (ref.equals(candidate))
+                if (ref.equals(candidate)) {
                     continue;
+                }
                 ArrayList<LogicalVariable> liveVars = new ArrayList<LogicalVariable>();
                 Map<LogicalVariable, LogicalVariable> variableMappingBack = new HashMap<LogicalVariable, LogicalVariable>();
                 IsomorphismUtilities.mapVariablesTopDown(ref.getValue(), candidate.getValue(), variableMappingBack);
@@ -203,11 +215,14 @@
                 }
 
                 AbstractLogicalOperator assignOperator = new AssignOperator(liveVars, assignExprs);
+                assignOperator.setExecutionMode(rop.getExecutionMode());
                 assignOperator.setPhysicalOperator(new AssignPOperator());
                 AbstractLogicalOperator projectOperator = new ProjectOperator(liveVars);
                 projectOperator.setPhysicalOperator(new StreamProjectPOperator());
+                projectOperator.setExecutionMode(rop.getExecutionMode());
                 AbstractLogicalOperator exchOp = new ExchangeOperator();
                 exchOp.setPhysicalOperator(new OneToOneExchangePOperator());
+                exchOp.setExecutionMode(rop.getExecutionMode());
                 exchOp.getInputs().add(ropRef);
                 MutableObject<ILogicalOperator> exchOpRef = new MutableObject<ILogicalOperator>(exchOp);
                 rop.getOutputs().add(exchOpRef);
@@ -223,22 +238,16 @@
                 for (Mutable<ILogicalOperator> parentOpRef : parentOpList) {
                     AbstractLogicalOperator parentOp = (AbstractLogicalOperator) parentOpRef.getValue();
                     int index = parentOp.getInputs().indexOf(ref);
-                    if (parentOp.getOperatorTag() == LogicalOperatorTag.EXCHANGE) {
-                        AbstractLogicalOperator parentOpNext = (AbstractLogicalOperator) childrenToParents
-                                .get(parentOpRef).get(0).getValue();
-                        if (parentOpNext.isMap()) {
-                            index = parentOpNext.getInputs().indexOf(parentOpRef);
-                            parentOp = parentOpNext;
-                        }
-                    }
-
                     ILogicalOperator childOp = parentOp.getOperatorTag() == LogicalOperatorTag.PROJECT ? assignOperator
                             : projectOperator;
-                    if (parentOp.isMap()) {
+                    if (!HeuristicOptimizer.isHyracksOp(parentOp.getPhysicalOperator().getOperatorTag())) {
                         parentOp.getInputs().set(index, new MutableObject<ILogicalOperator>(childOp));
                     } else {
+                        // If the parent operator is a hyracks operator,
+                        // an extra one-to-one exchange is needed.
                         AbstractLogicalOperator exchg = new ExchangeOperator();
                         exchg.setPhysicalOperator(new OneToOneExchangePOperator());
+                        exchg.setExecutionMode(childOp.getExecutionMode());
                         exchg.getInputs().add(new MutableObject<ILogicalOperator>(childOp));
                         parentOp.getInputs().set(index, new MutableObject<ILogicalOperator>(exchg));
                         context.computeAndSetTypeEnvironmentForOperator(exchg);
@@ -265,16 +274,19 @@
                 if (candidates.size() > 0) {
                     for (Mutable<ILogicalOperator> opRef : candidates) {
                         List<Mutable<ILogicalOperator>> refs = childrenToParents.get(opRef);
-                        if (refs != null)
+                        if (refs != null) {
                             currentLevelOpRefs.addAll(refs);
+                        }
                     }
                 }
-                if (currentLevelOpRefs.size() == 0)
+                if (currentLevelOpRefs.size() == 0) {
                     continue;
+                }
                 candidatesGrow(currentLevelOpRefs, candidates);
             }
-            if (currentLevelOpRefs.size() == 0)
+            if (currentLevelOpRefs.size() == 0) {
                 break;
+            }
             prune(context);
         }
         if (equivalenceClasses.size() < 1 && previousEquivalenceClasses.size() > 0) {
@@ -296,8 +308,9 @@
                 }
                 opRefList.add(op);
             }
-            if (op.getValue().getInputs().size() == 0)
+            if (op.getValue().getInputs().size() == 0) {
                 candidates.add(op);
+            }
         }
         if (equivalenceClasses.size() > 0) {
             equivalenceClasses.get(0).addAll(candidates);
@@ -339,10 +352,12 @@
                     }
                 }
             }
-            if (!validCandidate)
+            if (!validCandidate) {
                 continue;
-            if (!candidates.contains(op))
+            }
+            if (!candidates.contains(op)) {
                 candidates.add(op);
+            }
         }
     }
 
@@ -356,8 +371,9 @@
         equivalenceClasses.clear();
         for (List<Mutable<ILogicalOperator>> candidates : previousEquivalenceClasses) {
             boolean[] reserved = new boolean[candidates.size()];
-            for (int i = 0; i < reserved.length; i++)
+            for (int i = 0; i < reserved.length; i++) {
                 reserved[i] = false;
+            }
             for (int i = candidates.size() - 1; i >= 0; i--) {
                 if (reserved[i] == false) {
                     List<Mutable<ILogicalOperator>> equivalentClass = new ArrayList<Mutable<ILogicalOperator>>();
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java
index 8604cae..71a00bf 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java
@@ -50,11 +50,11 @@
  *
  * <pre>
  * Before plan:
- * 
+ *
  *   join ( eq( funcX($$1), funcX($$2) ) )
- * 
+ *
  * After plan:
- * 
+ *
  *   join (eq($$3,$$4))
  *   assign [$$4] <- [funcY($$2)]
  *   assign [$$3] <- [funcX($$1)]
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java
index bfa3bfd..71fde61 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java
@@ -32,17 +32,17 @@
 
 /**
  * Inlines variables that are referenced exactly once.
- * 
+ *
  * Preconditions/Assumptions:
  * Assumes no projects are in the plan.
- * 
+ *
  * Example assuming variable $$3 is referenced exactly once.
- * 
+ *
  * Before plan:
  * select (funcA($$3))
  *   ...
  *     assign [$$3] <- [field-access($$0, 1)]
- * 
+ *
  * After plan:
  * select (funcA(field-access($$0, 1))
  *   ...
@@ -53,14 +53,14 @@
     // Maps from variable to a list of operators using that variable.
     protected Map<LogicalVariable, List<ILogicalOperator>> usedVarsMap = new HashMap<LogicalVariable, List<ILogicalOperator>>();
     protected List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
-    
+
     @Override
     protected void prepare(IOptimizationContext context) {
         super.prepare(context);
         usedVarsMap.clear();
         usedVars.clear();
     }
-    
+
     @Override
     protected boolean performFinalAction() throws AlgebricksException {
         boolean modified = false;
@@ -75,7 +75,7 @@
                         modified = true;
                     }
                     inlineVisitor.setTargetVariable(null);
-                }         
+                }
             }
         }
         return modified;
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineVariablesRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineVariablesRule.java
index 512e7d3..e7cf912 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineVariablesRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineVariablesRule.java
@@ -26,10 +26,10 @@
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
@@ -42,7 +42,6 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
-import org.apache.hyracks.algebricks.core.algebra.plan.ALogicalPlanImpl;
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionReferenceTransform;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
@@ -86,7 +85,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         if (hasRun) {
             return false;
         }
@@ -120,6 +120,21 @@
         return false;
     }
 
+    /* An expression will be constant at runtime if it has:
+     * 1. A type
+     * 2. No free variables
+     */
+    public static boolean functionIsConstantAtRuntime(AbstractLogicalOperator op,
+            AbstractFunctionCallExpression funcExpr, IOptimizationContext context) throws AlgebricksException {
+        //make sure that there are no variables in the expression
+        Set<LogicalVariable> usedVariables = new HashSet<LogicalVariable>();
+        funcExpr.getUsedVariables(usedVariables);
+        if (usedVariables.size() > 0) {
+            return false;
+        }
+        return true;
+    }
+
     protected boolean inlineVariables(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
             throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
@@ -131,10 +146,11 @@
             List<Mutable<ILogicalExpression>> exprs = assignOp.getExpressions();
             for (int i = 0; i < vars.size(); i++) {
                 ILogicalExpression expr = exprs.get(i).getValue();
-                // Ignore functions that are either in the doNotInline set or are non-functional               
+                // Ignore functions that are either in the doNotInline set or are non-functional
                 if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
                     AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr;
-                    if (doNotInlineFuncs.contains(funcExpr.getFunctionIdentifier()) || !funcExpr.isFunctional()) {
+                    if (doNotInlineFuncs.contains(funcExpr.getFunctionIdentifier())
+                            || (!funcExpr.isFunctional() && !functionIsConstantAtRuntime(op, funcExpr, context))) {
                         continue;
                     }
                 }
@@ -152,13 +168,29 @@
 
         // Descend into subplan
         if (op.getOperatorTag() == LogicalOperatorTag.SUBPLAN) {
-            ALogicalPlanImpl subPlan = (ALogicalPlanImpl) ((SubplanOperator) op).getNestedPlans().get(0);
-            Mutable<ILogicalOperator> subPlanRootOpRef = subPlan.getRoots().get(0);
-            if (inlineVariables(subPlanRootOpRef, context)) {
-                modified = true;
+            SubplanOperator subplanOp = (SubplanOperator) op;
+            for (ILogicalPlan nestedPlan : subplanOp.getNestedPlans()) {
+                for (Mutable<ILogicalOperator> root : nestedPlan.getRoots()) {
+                    if (inlineVariables(root, context)) {
+                        modified = true;
+                    }
+                    // Variables produced by a nested subplan cannot be inlined
+                    // in operators above the subplan.
+                    Set<LogicalVariable> producedVars = new HashSet<LogicalVariable>();
+                    VariableUtilities.getProducedVariables(root.getValue(), producedVars);
+                    varAssignRhs.keySet().removeAll(producedVars);
+                }
             }
         }
 
+        // References to variables generated in the right branch of a left-outer-join cannot be inlined
+        // in operators above the left-outer-join.
+        if (op.getOperatorTag() == LogicalOperatorTag.LEFTOUTERJOIN) {
+            Set<LogicalVariable> rightLiveVars = new HashSet<LogicalVariable>();
+            VariableUtilities.getLiveVariables(op.getInputs().get(1).getValue(), rightLiveVars);
+            varAssignRhs.keySet().removeAll(rightLiveVars);
+        }
+
         if (performBottomUpAction(op)) {
             modified = true;
         }
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroHashPartitionMergeExchange.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroHashPartitionMergeExchange.java
deleted file mode 100644
index 959f887..0000000
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroHashPartitionMergeExchange.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 org.apache.hyracks.algebricks.rewriter.rules;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
-import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionExchangePOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionMergeExchangePOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.physical.SortMergeExchangePOperator;
-import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
-import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
-
-public class IntroHashPartitionMergeExchange 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 op1 = (AbstractLogicalOperator) opRef.getValue();
-        if (op1.getPhysicalOperator() == null
-                || (op1.getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.HASH_PARTITION_EXCHANGE && op1
-                        .getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.HASH_PARTITION_MERGE_EXCHANGE)) {
-            return false;
-        }
-        AbstractLogicalOperator op2 = (AbstractLogicalOperator) op1.getInputs().get(0).getValue();
-        if (op2.getPhysicalOperator() == null
-                || op2.getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.SORT_MERGE_EXCHANGE) {
-            return false;
-        }
-        if (op1.getPhysicalOperator().getOperatorTag() == PhysicalOperatorTag.HASH_PARTITION_MERGE_EXCHANGE) {
-            // if it is a hash_partition_merge_exchange, the sort_merge_exchange can be simply removed
-            op1.getInputs().get(0).setValue(op2.getInputs().get(0).getValue());
-            op1.computeDeliveredPhysicalProperties(context);
-            return true;
-        }
-        HashPartitionExchangePOperator hpe = (HashPartitionExchangePOperator) op1.getPhysicalOperator();
-        SortMergeExchangePOperator sme = (SortMergeExchangePOperator) op2.getPhysicalOperator();
-        List<OrderColumn> ocList = new ArrayList<OrderColumn>();
-        for (OrderColumn oc : sme.getSortColumns()) {
-            ocList.add(oc);
-        }
-        HashPartitionMergeExchangePOperator hpme = new HashPartitionMergeExchangePOperator(ocList, hpe.getHashFields(),
-                hpe.getDomain());
-        op1.setPhysicalOperator(hpme);
-        op1.getInputs().get(0).setValue(op2.getInputs().get(0).getValue());
-        op1.computeDeliveredPhysicalProperties(context);
-        return true;
-    }
-
-}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByCombinerRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByCombinerRule.java
index 467090f..f4fdc5a 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByCombinerRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByCombinerRule.java
@@ -32,4 +32,4 @@
         /** The default introduce group-by combiner rule ignores null test, however a language implementor can decide their own semantics. */
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
index f8b36dd..6bc129e 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
@@ -82,7 +82,7 @@
         parentsUsedVars.addAll(parentUsedVars);
         parentsUsedVars.addAll(usedVars);
 
-        // Descend into children.        
+        // Descend into children.
         for (int i = 0; i < op.getInputs().size(); i++) {
             Mutable<ILogicalOperator> inputOpRef = op.getInputs().get(i);
             if (introduceProjects(op, i, inputOpRef, parentsUsedVars, context)) {
@@ -152,7 +152,7 @@
         }
         return modified;
     }
-    
+
     private boolean canEliminateProjectBelowUnion(UnionAllOperator unionOp, ProjectOperator projectOp,
             int unionInputIndex) throws AlgebricksException {
         List<LogicalVariable> orderedLiveVars = new ArrayList<LogicalVariable>();
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java
index 3e44173..bbb01dd 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushAssignBelowUnionAllRule.java
@@ -25,7 +25,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Triple;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -66,7 +65,8 @@
 public class PushAssignBelowUnionAllRule implements IAlgebraicRewriteRule {
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         return false;
     }
 
@@ -127,11 +127,10 @@
 
     private AssignOperator createAssignBelowUnionAllBranch(UnionAllOperator unionOp, int inputIndex,
             AssignOperator originalAssignOp, Set<LogicalVariable> assignUsedVars, IOptimizationContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         AssignOperator newAssignOp = cloneAssignOperator(originalAssignOp, context);
         newAssignOp.getInputs()
                 .add(new MutableObject<ILogicalOperator>(unionOp.getInputs().get(inputIndex).getValue()));
-        context.computeAndSetTypeEnvironmentForOperator(newAssignOp);
         unionOp.getInputs().get(inputIndex).setValue(newAssignOp);
         int numVarMappings = unionOp.getVariableMappings().size();
         for (int i = 0; i < numVarMappings; i++) {
@@ -146,6 +145,7 @@
                 VariableUtilities.substituteVariables(newAssignOp, varMapping.third, replacementVar, context);
             }
         }
+        context.computeAndSetTypeEnvironmentForOperator(newAssignOp);
         return newAssignOp;
     }
 
@@ -159,8 +159,8 @@
         int numVars = assignOp.getVariables().size();
         for (int i = 0; i < numVars; i++) {
             vars.add(context.newVar());
-            exprs.add(new MutableObject<ILogicalExpression>(assignOp.getExpressions().get(i).getValue()
-                    .cloneExpression()));
+            exprs.add(new MutableObject<ILogicalExpression>(
+                    assignOp.getExpressions().get(i).getValue().cloneExpression()));
         }
         AssignOperator assignCloneOp = new AssignOperator(vars, exprs);
         assignCloneOp.setExecutionMode(assignOp.getExecutionMode());
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java
index 59da252..c04a9d5 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java
@@ -52,20 +52,20 @@
  * a join (which may blow up the cardinality).
  * Also, this rule may help to enable other rules such as common subexpression elimination, again to reduce
  * the number of calls to expensive functions.
- * 
+ *
  * Example: (we are pushing pushMeFunc)
- * 
+ *
  * Before plan:
  * assign [$$10] <- [funcA(funcB(pushMeFunc($$3, $$4)))]
- *   join (some condition) 
+ *   join (some condition)
  *     join_branch_0 where $$3 and $$4 are not live
  *       ...
  *     join_branch_1 where $$3 and $$4 are live
  *       ...
- * 
+ *
  * After plan:
  * assign [$$10] <- [funcA(funcB($$11))]
- *   join (some condition) 
+ *   join (some condition)
  *     join_branch_0 where $$3 and $$4 are not live
  *       ...
  *     join_branch_1 where $$3 and $$4 are live
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorDownThroughProductRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorDownThroughProductRule.java
index 1c9b8d8..f956d73 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorDownThroughProductRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushMapOperatorDownThroughProductRule.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
@@ -37,7 +36,8 @@
 public class PushMapOperatorDownThroughProductRule implements IAlgebraicRewriteRule {
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         return false;
     }
 
@@ -45,7 +45,9 @@
     public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
             throws AlgebricksException {
         AbstractLogicalOperator op1 = (AbstractLogicalOperator) opRef.getValue();
-        if (!op1.isMap()) {
+        // Even the LIMIT operator is a map operator, we don't push LIMIT operator into a join
+        // since a new LIMIT under a join can't generate the original result.
+        if (!op1.isMap() || op1.getOperatorTag() == LogicalOperatorTag.LIMIT) {
             return false;
         }
         Mutable<ILogicalOperator> op2Ref = op1.getInputs().get(0);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java
index a90d347..2d57e8d 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushProjectDownRule.java
@@ -26,7 +26,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -45,7 +44,7 @@
 /**
  * Pushes projections through its input operator, provided that operator does
  * not produce the projected variables.
- * 
+ *
  * @author Nicola
  */
 public class PushProjectDownRule implements IAlgebraicRewriteRule {
@@ -56,7 +55,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.PROJECT) {
             return false;
@@ -79,7 +79,7 @@
 
     private static Pair<Boolean, Boolean> pushThroughOp(HashSet<LogicalVariable> toPush,
             Mutable<ILogicalOperator> opRef2, ILogicalOperator initialOp, IOptimizationContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         List<LogicalVariable> initProjectList = new ArrayList<LogicalVariable>(toPush);
         AbstractLogicalOperator op2 = (AbstractLogicalOperator) opRef2.getValue();
         do {
@@ -111,7 +111,7 @@
 
         boolean canCommuteProjection = initProjectList.containsAll(toPush) && initProjectList.containsAll(produced2)
                 && initProjectList.containsAll(used2);
-        // if true, we can get rid of the initial projection
+                // if true, we can get rid of the initial projection
 
         // get rid of useless decor vars.
         if (!canCommuteProjection && op2.getOperatorTag() == LogicalOperatorTag.GROUP) {
@@ -167,7 +167,7 @@
             IOptimizationContext context, ILogicalOperator initialOp) throws AlgebricksException {
         HashSet<LogicalVariable> allP = new HashSet<LogicalVariable>();
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-        VariableUtilities.getLiveVariables(op, allP);
+        VariableUtilities.getSubplanLocalLiveVariables(op, allP);
 
         HashSet<LogicalVariable> toProject = new HashSet<LogicalVariable>();
         for (LogicalVariable v : toPush) {
@@ -191,7 +191,7 @@
     // It does not try to push above another Projection.
     private static boolean pushAllProjectionsOnTopOf(Collection<LogicalVariable> toPush,
             Mutable<ILogicalOperator> opRef, IOptimizationContext context, ILogicalOperator initialOp)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         if (toPush.isEmpty()) {
             return false;
         }
@@ -201,15 +201,8 @@
             return false;
         }
 
-        switch (op.getOperatorTag()) {
-            case EXCHANGE: {
-                opRef = opRef.getValue().getInputs().get(0);
-                op = (AbstractLogicalOperator) opRef.getValue();
-                break;
-            }
-            case PROJECT: {
-                return false;
-            }
+        if (op.getOperatorTag() == LogicalOperatorTag.PROJECT) {
+            return false;
         }
 
         ProjectOperator pi2 = new ProjectOperator(new ArrayList<LogicalVariable>(toPush));
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
index 71c4776..aab6d12 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
@@ -22,7 +22,6 @@
 import java.util.List;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
@@ -42,7 +41,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.SELECT) {
             return false;
@@ -72,7 +72,8 @@
     private static boolean propagateSelectionRec(Mutable<ILogicalOperator> sigmaRef, Mutable<ILogicalOperator> opRef2)
             throws AlgebricksException {
         AbstractLogicalOperator op2 = (AbstractLogicalOperator) opRef2.getValue();
-        if (op2.getInputs().size() != 1 || op2.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) {
+        if (op2.getInputs().size() != 1 || op2.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN
+                || !OperatorPropertiesUtil.isMovable(op2)) {
             return false;
         }
 
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectIntoJoinRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectIntoJoinRule.java
index d6f1889..3ebbea1 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectIntoJoinRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectIntoJoinRule.java
@@ -28,7 +28,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -64,6 +63,7 @@
 
         List<ILogicalOperator> pushedOnLeft = new ArrayList<ILogicalOperator>();
         List<ILogicalOperator> pushedOnRight = new ArrayList<ILogicalOperator>();
+        List<ILogicalOperator> pushedOnEither = new ArrayList<ILogicalOperator>();
         LinkedList<ILogicalOperator> notPushedStack = new LinkedList<ILogicalOperator>();
         Collection<LogicalVariable> usedVars = new HashSet<LogicalVariable>();
         Collection<LogicalVariable> producedVars = new HashSet<LogicalVariable>();
@@ -107,7 +107,9 @@
                 } else {
                     VariableUtilities.getUsedVariables(opIter, usedVars);
                     VariableUtilities.getProducedVariables(opIter, producedVars);
-                    if (joinLiveVarsLeft.containsAll(usedVars)) {
+                    if (usedVars.size() == 0) {
+                        pushedOnEither.add(opIter);
+                    } else if (joinLiveVarsLeft.containsAll(usedVars)) {
                         pushedOnLeft.add(opIter);
                         liveInOpsToPushLeft.addAll(producedVars);
                     } else if (joinLiveVarsRight.containsAll(usedVars)) {
@@ -149,6 +151,12 @@
             return false;
         }
         if (needToPushOps) {
+            //We should push independent ops into the first branch that the selection depends on
+            if (intersectsBranch[0]) {
+                pushOps(pushedOnEither, joinBranchLeftRef, context);
+            } else {
+                pushOps(pushedOnEither, joinBranchRightRef, context);
+            }
             pushOps(pushedOnLeft, joinBranchLeftRef, context);
             pushOps(pushedOnRight, joinBranchRightRef, context);
         }
@@ -226,8 +234,8 @@
             if (cond.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
                 AbstractFunctionCallExpression fcond = (AbstractFunctionCallExpression) cond;
                 if (fcond.getFunctionIdentifier().equals(AlgebricksBuiltinFunctions.AND)) {
-                    AbstractFunctionCallExpression newCond = new ScalarFunctionCallExpression(context
-                            .getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.AND));
+                    AbstractFunctionCallExpression newCond = new ScalarFunctionCallExpression(
+                            context.getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.AND));
                     newCond.getArguments().add(select.getCondition());
                     newCond.getArguments().addAll(fcond.getArguments());
                     join.getCondition().setValue(newCond);
@@ -235,9 +243,9 @@
                 }
             }
             if (!bAddedToConj) {
-                AbstractFunctionCallExpression newCond = new ScalarFunctionCallExpression(context.getMetadataProvider()
-                        .lookupFunction(AlgebricksBuiltinFunctions.AND), select.getCondition(),
-                        new MutableObject<ILogicalExpression>(join.getCondition().getValue()));
+                AbstractFunctionCallExpression newCond = new ScalarFunctionCallExpression(
+                        context.getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.AND),
+                        select.getCondition(), new MutableObject<ILogicalExpression>(join.getCondition().getValue()));
                 join.getCondition().setValue(newCond);
             }
         }
@@ -255,7 +263,7 @@
 
     /**
      * Whether the expression contains a not-null filtering
-     * 
+     *
      * @param expr
      * @return true if the expression contains a not-null filtering function call; false otherwise.
      */
@@ -288,7 +296,7 @@
 
     /**
      * Whether the expression contains a null filtering
-     * 
+     *
      * @param expr
      * @return true if the expression contains a null filtering function call; false otherwise.
      */
@@ -310,4 +318,4 @@
         }
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSortDownRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSortDownRule.java
new file mode 100644
index 0000000..7a7003b
--- /dev/null
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSortDownRule.java
@@ -0,0 +1,97 @@
+/*
+ * 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.hyracks.algebricks.rewriter.rules;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+/**
+ * This rule pushes down the sort operator
+ * as much as possible to where the sort keys are available.
+ * The rule pushes the sort operator down one-step-at-a-time.
+ */
+public class PushSortDownRule implements IAlgebraicRewriteRule {
+
+    @Override
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        ILogicalOperator operator = opRef.getValue();
+        if (operator.getOperatorTag() != LogicalOperatorTag.ORDER) {
+            return false;
+        }
+
+        // Gets used variables in the sort operator.
+        OrderOperator orderOperator = (OrderOperator) operator;
+        List<Pair<IOrder, Mutable<ILogicalExpression>>> orderKeys = orderOperator.getOrderExpressions();
+        Set<LogicalVariable> orderUsedVars = new HashSet<LogicalVariable>();
+        for (Pair<IOrder, Mutable<ILogicalExpression>> orderKey : orderKeys) {
+            orderKey.second.getValue().getUsedVariables(orderUsedVars);
+        }
+        Mutable<ILogicalOperator> inputOpRef = orderOperator.getInputs().get(0);
+        ILogicalOperator inputOperator = inputOpRef.getValue();
+
+        // Only pushes sort through assign:
+        // 1. Blocking operators like sort/group/join cannot be pushed through.
+        // 2. Data reducing operators like select/project should not be pushed through.
+        // 3. Order-destroying operator like unnest/unnest-map cannot be pushed through.
+        if (inputOperator.getOperatorTag() != LogicalOperatorTag.ASSIGN) {
+            return false;
+        }
+        Set<LogicalVariable> inputProducedVars = new HashSet<LogicalVariable>();
+        VariableUtilities.getProducedVariables(inputOperator, inputProducedVars);
+
+        // Intersects used variables in the sort and variables produced by inputOperator.
+        orderUsedVars.retainAll(inputProducedVars);
+        if (!orderUsedVars.isEmpty()) {
+            // If the sort uses any variable that is produced by this operator.
+            return false;
+        }
+
+        // Switches sort and its input operator.
+        opRef.setValue(inputOperator);
+        inputOpRef.setValue(inputOperator.getInputs().get(0).getValue());
+        inputOperator.getInputs().get(0).setValue(orderOperator);
+
+        // Re-computes the type environments.
+        context.computeAndSetTypeEnvironmentForOperator(orderOperator);
+        context.computeAndSetTypeEnvironmentForOperator(inputOperator);
+        return true;
+    }
+
+    @Override
+    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        return false;
+    }
+
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveCartesianProductWithEmptyBranchRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveCartesianProductWithEmptyBranchRule.java
new file mode 100644
index 0000000..de35fb5
--- /dev/null
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveCartesianProductWithEmptyBranchRule.java
@@ -0,0 +1,64 @@
+/*
+ * 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.hyracks.algebricks.rewriter.rules;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractBinaryJoinOperator;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+/**
+ * Removes Cartesian product operators that have one input branch is EmptyTupleSource.
+ */
+public class RemoveCartesianProductWithEmptyBranchRule implements IAlgebraicRewriteRule {
+
+    @Override
+    public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
+        ILogicalOperator op = opRef.getValue();
+        if (op.getOperatorTag() != LogicalOperatorTag.INNERJOIN
+                && op.getOperatorTag() != LogicalOperatorTag.LEFTOUTERJOIN) {
+            return false;
+        }
+        AbstractBinaryJoinOperator joinOperator = (AbstractBinaryJoinOperator) op;
+        ILogicalOperator left = joinOperator.getInputs().get(0).getValue();
+        ILogicalOperator right = joinOperator.getInputs().get(1).getValue();
+
+        if (!joinOperator.getCondition().getValue().equals(ConstantExpression.TRUE)) {
+            return false;
+        }
+        if (emptyBranch(left)) {
+            opRef.setValue(right);
+            return true;
+        }
+        if (emptyBranch(right)) {
+            opRef.setValue(left);
+            return true;
+        }
+        return false;
+    }
+
+    private boolean emptyBranch(ILogicalOperator op) {
+        return op.getOperatorTag() == LogicalOperatorTag.EMPTYTUPLESOURCE;
+    }
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java
index a303cc6..ebdc88a 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java
@@ -43,7 +43,7 @@
 public class RemoveRedundantGroupByDecorVars implements IAlgebraicRewriteRule {
 
     private final Set<LogicalVariable> vars = new HashSet<LogicalVariable>();
-    
+
     @Override
     public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
@@ -54,7 +54,7 @@
             return false;
         }
         vars.clear();
-        
+
         boolean modified = false;
         GroupByOperator groupOp = (GroupByOperator) op;
         Iterator<Pair<LogicalVariable, Mutable<ILogicalExpression>>> iter = groupOp.getDecorList().iterator();
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java
index e459109..38e97d7 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java
@@ -37,12 +37,12 @@
  *  project [var-list1]
  *   project [var-list2]
  *     P
- * 
+ *
  *  if var-list1.equals(var-list2) becomes
- * 
+ *
  *  project [var-list1]
  *    P
- *  
+ *
  */
 
 public class RemoveRedundantProjectionRule implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java
index 9e4d8b7..eb72db0 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java
@@ -100,7 +100,6 @@
             equivalentVarsMap.put(rhs, equivalentVars);
         }
         equivalentVarsMap.put(lhs, equivalentVars);
-        equivalentVars.get(0);
     }
 
     private boolean removeRedundantVariables(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
@@ -125,7 +124,7 @@
             }
         }
 
-        // Replace variable references with their first representative. 
+        // Replace variable references with their first representative.
         if (op.getOperatorTag() == LogicalOperatorTag.PROJECT) {
             // The project operator does not use expressions, so we need to replace it's variables manually.
             if (replaceProjectVars((ProjectOperator) op)) {
@@ -142,7 +141,7 @@
             }
         }
 
-        // Perform variable replacement in nested plans. 
+        // Perform variable replacement in nested plans.
         if (op.hasNestedPlans()) {
             AbstractOperatorWithNestedPlans opWithNestedPlan = (AbstractOperatorWithNestedPlans) op;
             for (ILogicalPlan nestedPlan : opWithNestedPlan.getNestedPlans()) {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnnecessarySortMergeExchange.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnnecessarySortMergeExchange.java
new file mode 100644
index 0000000..84d7c9d
--- /dev/null
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnnecessarySortMergeExchange.java
@@ -0,0 +1,126 @@
+/*
+ * 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.hyracks.algebricks.rewriter.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.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.IPhysicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.base.PhysicalOperatorTag;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.HashPartitionMergeExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.SortMergeExchangePOperator;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
+
+public class RemoveUnnecessarySortMergeExchange 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 op1 = (AbstractLogicalOperator) opRef.getValue();
+        if (op1.getPhysicalOperator() == null
+                || (op1.getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.HASH_PARTITION_EXCHANGE && op1
+                        .getPhysicalOperator().getOperatorTag() != PhysicalOperatorTag.HASH_PARTITION_MERGE_EXCHANGE)) {
+            return false;
+        }
+        Mutable<ILogicalOperator> currentOpRef = op1.getInputs().get(0);
+        AbstractLogicalOperator currentOp = (AbstractLogicalOperator) currentOpRef.getValue();
+
+        // Goes down the pipeline to find a qualified SortMergeExchange to eliminate.
+        while (currentOp != null) {
+            IPhysicalOperator physicalOp = currentOp.getPhysicalOperator();
+            if (physicalOp == null) {
+                return false;
+            } else if (physicalOp.getOperatorTag() == PhysicalOperatorTag.SORT_MERGE_EXCHANGE) {
+                break;
+            } else if (!currentOp.isMap() || currentOp.getOperatorTag() == LogicalOperatorTag.UNNEST
+                    || currentOp.getOperatorTag() == LogicalOperatorTag.LIMIT) {
+                // Do not eliminate sort-merge below input order-sensitive operators.
+                // TODO(buyingyi): once Taewoo merges his limit-push down change,
+                // we need to use his new property in logical operator to check order sensitivity.
+                return false;
+            } else if (currentOp.getInputs().size() == 1) {
+                currentOpRef = currentOp.getInputs().get(0);
+                currentOp = (AbstractLogicalOperator) currentOpRef.getValue();
+            } else {
+                currentOp = null;
+            }
+        }
+        if (currentOp == null) {
+            // There is no such qualified SortMergeExchange.
+            return false;
+        }
+
+        if (op1.getPhysicalOperator().getOperatorTag() == PhysicalOperatorTag.HASH_PARTITION_MERGE_EXCHANGE) {
+            // If op1 is a hash_partition_merge_exchange, the sort_merge_exchange can be simply removed.
+            currentOpRef.setValue(currentOp.getInputs().get(0).getValue());
+            op1.computeDeliveredPhysicalProperties(context);
+            return true;
+        }
+
+        // Checks whether sort columns in the SortMergeExchange are still available at op1.
+        // If yes, we use HashMergeExchange; otherwise, we use HashExchange.
+        SortMergeExchangePOperator sme = (SortMergeExchangePOperator) currentOp.getPhysicalOperator();
+        HashPartitionExchangePOperator hpe = (HashPartitionExchangePOperator) op1.getPhysicalOperator();
+        Set<LogicalVariable> liveVars = new HashSet<LogicalVariable>();
+        VariableUtilities.getLiveVariables(op1, liveVars);
+        boolean usingHashMergeExchange = true;
+        for (OrderColumn oc : sme.getSortColumns()) {
+            if (!liveVars.contains(oc.getColumn())) {
+                usingHashMergeExchange = false;
+            }
+        }
+
+        if (usingHashMergeExchange) {
+            // Add sort columns from the SortMergeExchange into a new HashMergeExchange.
+            List<OrderColumn> ocList = new ArrayList<OrderColumn>();
+            for (OrderColumn oc : sme.getSortColumns()) {
+                ocList.add(oc);
+            }
+            HashPartitionMergeExchangePOperator hpme = new HashPartitionMergeExchangePOperator(ocList,
+                    hpe.getHashFields(), hpe.getDomain());
+            op1.setPhysicalOperator(hpme);
+        }
+
+        // Remove the SortMergeExchange op.
+        currentOpRef.setValue(currentOp.getInputs().get(0).getValue());
+
+        // Re-compute delivered properties at op1.
+        op1.computeDeliveredPhysicalProperties(context);
+        return true;
+    }
+
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java
index 100c14f..b25497c 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java
@@ -106,7 +106,7 @@
                         rootsToBeRemoved.add(r);
                     }
                 }
-                // Makes sure the operator should have at least ONE nested plan even it is empty 
+                // Makes sure the operator should have at least ONE nested plan even it is empty
                 // (because a lot of places uses this assumption,  TODO(yingyib): clean them up).
                 if (nestedPlan.getRoots().size() == rootsToBeRemoved.size() && opWithNest.getNestedPlans().size() > 1) {
                     nestedPlan.getRoots().removeAll(rootsToBeRemoved);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
index 394524b..6524d87 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
@@ -23,7 +23,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -45,9 +44,10 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IndexInsertDeleteUpsertOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDeleteUpsertOperator.Kind;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder;
@@ -62,8 +62,9 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.ExternalGroupByPOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.InMemoryStableSortPOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.IndexBulkloadPOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.physical.IndexInsertDeletePOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.physical.InsertDeletePOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.IndexInsertDeleteUpsertPOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.InsertDeleteUpsertPOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.physical.IntersectPOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.MicroPreclusteredGroupByPOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.NestedTupleSourcePOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.physical.PreSortedDistinctByPOperator;
@@ -95,7 +96,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         // if (context.checkIfInDontApplySet(this, op)) {
         // return false;
@@ -116,7 +118,7 @@
         }
     }
 
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     private static void computeDefaultPhysicalOp(AbstractLogicalOperator op, boolean topLevelOp,
             IOptimizationContext context) throws AlgebricksException {
         PhysicalOptimizationConfig physicalOptimizationConfig = context.getPhysicalOptimizationConfig();
@@ -152,8 +154,9 @@
                     if (gby.getNestedPlans().size() == 1) {
                         ILogicalPlan p0 = gby.getNestedPlans().get(0);
                         if (p0.getRoots().size() == 1) {
-                            if (gby.getAnnotations().get(OperatorAnnotations.USE_HASH_GROUP_BY) == Boolean.TRUE
-                                    || gby.getAnnotations().get(OperatorAnnotations.USE_EXTERNAL_GROUP_BY) == Boolean.TRUE) {
+                            if ((gby.getAnnotations().get(OperatorAnnotations.USE_HASH_GROUP_BY) == Boolean.TRUE)
+                                    || (gby.getAnnotations()
+                                            .get(OperatorAnnotations.USE_EXTERNAL_GROUP_BY) == Boolean.TRUE)) {
                                 if (!topLevelOp) {
                                     throw new NotImplementedException(
                                             "External hash group-by for nested grouping is not implemented.");
@@ -164,7 +167,9 @@
                                     ExternalGroupByPOperator externalGby = new ExternalGroupByPOperator(
                                             gby.getGroupByList(),
                                             physicalOptimizationConfig.getMaxFramesExternalGroupBy(),
-                                            physicalOptimizationConfig.getExternalGroupByTableSize());
+                                            physicalOptimizationConfig.getExternalGroupByTableSize(),
+                                            (long) physicalOptimizationConfig.getMaxFramesExternalGroupBy()
+                                                    * physicalOptimizationConfig.getFrameSize());
                                     op.setPhysicalOperator(externalGby);
                                     break;
                                 }
@@ -213,8 +218,8 @@
                         }
                     }
                     if (topLevelOp) {
-                        op.setPhysicalOperator(new StableSortPOperator(physicalOptimizationConfig
-                                .getMaxFramesExternalSort()));
+                        op.setPhysicalOperator(new StableSortPOperator(
+                                physicalOptimizationConfig.getMaxFramesExternalSort(), oo.getTopK()));
                     } else {
                         op.setPhysicalOperator(new InMemoryStableSortPOperator());
                     }
@@ -248,7 +253,10 @@
                     op.setPhysicalOperator(new UnionAllPOperator());
                     break;
                 }
-
+                case INTERSECT: {
+                    op.setPhysicalOperator(new IntersectPOperator());
+                    break;
+                }
                 case UNNEST: {
                     op.setPhysicalOperator(new UnnestPOperator());
                     break;
@@ -282,31 +290,38 @@
                         additionalFilteringKeys = new ArrayList<LogicalVariable>();
                         getKeys(opLoad.getAdditionalFilteringExpressions(), additionalFilteringKeys);
                     }
-                    op.setPhysicalOperator(new WriteResultPOperator(opLoad.getDataSource(), payload, keys,
-                            additionalFilteringKeys));
+                    op.setPhysicalOperator(
+                            new WriteResultPOperator(opLoad.getDataSource(), payload, keys, additionalFilteringKeys));
                     break;
                 }
-                case INSERT_DELETE: {
-                    InsertDeleteOperator opLoad = (InsertDeleteOperator) op;
+                case INSERT_DELETE_UPSERT: {
+                    // Primary index
+                    InsertDeleteUpsertOperator opLoad = (InsertDeleteUpsertOperator) op;
                     LogicalVariable payload;
                     List<LogicalVariable> keys = new ArrayList<LogicalVariable>();
                     List<LogicalVariable> additionalFilteringKeys = null;
+                    List<LogicalVariable> additionalNonFilterVariables = null;
+                    if (opLoad.getAdditionalNonFilteringExpressions() != null) {
+                        additionalNonFilterVariables = new ArrayList<LogicalVariable>();
+                        getKeys(opLoad.getAdditionalNonFilteringExpressions(), additionalNonFilterVariables);
+                    }
                     payload = getKeysAndLoad(opLoad.getPayloadExpression(), opLoad.getPrimaryKeyExpressions(), keys);
                     if (opLoad.getAdditionalFilteringExpressions() != null) {
                         additionalFilteringKeys = new ArrayList<LogicalVariable>();
                         getKeys(opLoad.getAdditionalFilteringExpressions(), additionalFilteringKeys);
                     }
                     if (opLoad.isBulkload()) {
-                        op.setPhysicalOperator(new BulkloadPOperator(payload, keys, additionalFilteringKeys, opLoad
-                                .getDataSource()));
+                        op.setPhysicalOperator(new BulkloadPOperator(payload, keys, additionalFilteringKeys,
+                                additionalNonFilterVariables, opLoad.getDataSource()));
                     } else {
-                        op.setPhysicalOperator(new InsertDeletePOperator(payload, keys, additionalFilteringKeys, opLoad
-                                .getDataSource()));
+                        op.setPhysicalOperator(new InsertDeleteUpsertPOperator(payload, keys, additionalFilteringKeys,
+                                opLoad.getDataSource(), opLoad.getOperation(), additionalNonFilterVariables));
                     }
                     break;
                 }
-                case INDEX_INSERT_DELETE: {
-                    IndexInsertDeleteOperator opInsDel = (IndexInsertDeleteOperator) op;
+                case INDEX_INSERT_DELETE_UPSERT: {
+                    // Secondary index
+                    IndexInsertDeleteUpsertOperator opInsDel = (IndexInsertDeleteUpsertOperator) op;
                     List<LogicalVariable> primaryKeys = new ArrayList<LogicalVariable>();
                     List<LogicalVariable> secondaryKeys = new ArrayList<LogicalVariable>();
                     List<LogicalVariable> additionalFilteringKeys = null;
@@ -317,13 +332,24 @@
                         getKeys(opInsDel.getAdditionalFilteringExpressions(), additionalFilteringKeys);
                     }
                     if (opInsDel.isBulkload()) {
-                        op.setPhysicalOperator(new IndexBulkloadPOperator(primaryKeys, secondaryKeys,
-                                additionalFilteringKeys, opInsDel.getFilterExpression(), opInsDel.getDataSourceIndex()));
+                        op.setPhysicalOperator(
+                                new IndexBulkloadPOperator(primaryKeys, secondaryKeys, additionalFilteringKeys,
+                                        opInsDel.getFilterExpression(), opInsDel.getDataSourceIndex()));
                     } else {
-                        op.setPhysicalOperator(new IndexInsertDeletePOperator(primaryKeys, secondaryKeys,
-                                additionalFilteringKeys, opInsDel.getFilterExpression(), opInsDel.getDataSourceIndex()));
+                        List<LogicalVariable> prevSecondaryKeys = null;
+                        LogicalVariable prevAdditionalFilteringKey = null;
+                        if (opInsDel.getOperation() == Kind.UPSERT) {
+                            prevSecondaryKeys = new ArrayList<LogicalVariable>();
+                            getKeys(opInsDel.getPrevSecondaryKeyExprs(), prevSecondaryKeys);
+                            if (opInsDel.getPrevAdditionalFilteringExpression() != null) {
+                                prevAdditionalFilteringKey = ((VariableReferenceExpression) (opInsDel
+                                        .getPrevAdditionalFilteringExpression()).getValue()).getVariableReference();
+                            }
+                        }
+                        op.setPhysicalOperator(new IndexInsertDeleteUpsertPOperator(primaryKeys, secondaryKeys,
+                                additionalFilteringKeys, opInsDel.getFilterExpression(), opInsDel.getDataSourceIndex(),
+                                prevSecondaryKeys, prevAdditionalFilteringKey));
                     }
-
                     break;
 
                 }
@@ -335,8 +361,8 @@
                     getKeys(opTokenize.getSecondaryKeyExpressions(), secondaryKeys);
                     // Tokenize Operator only operates with a bulk load on a data set with an index
                     if (opTokenize.isBulkload()) {
-                        op.setPhysicalOperator(new TokenizePOperator(primaryKeys, secondaryKeys, opTokenize
-                                .getDataSourceIndex()));
+                        op.setPhysicalOperator(
+                                new TokenizePOperator(primaryKeys, secondaryKeys, opTokenize.getDataSourceIndex()));
                     }
                     break;
                 }
@@ -415,8 +441,8 @@
         int n = aggOp.getExpressions().size();
         List<Mutable<ILogicalExpression>> mergeExpressionRefs = new ArrayList<Mutable<ILogicalExpression>>();
         for (int i = 0; i < n; i++) {
-            ILogicalExpression mergeExpr = mergeAggregationExpressionFactory.createMergeAggregation(
-                    originalAggVars.get(i), aggFuncRefs.get(i).getValue(), context);
+            ILogicalExpression mergeExpr = mergeAggregationExpressionFactory
+                    .createMergeAggregation(originalAggVars.get(i), aggFuncRefs.get(i).getValue(), context);
             if (mergeExpr == null) {
                 return false;
             }
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java
index c523bd0..63a33b5 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java
@@ -32,7 +32,7 @@
  * EXCHANGE operators in the plan. Previously, i.e. before having physical
  * optimizations in place, we were using the IntroduceExchangeRule, which was
  * doing both, to both set excutionMode and introduce data exchange ops.
- * 
+ *
  * @author Nicola
  */
 public class SetExecutionModeRule implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SimpleUnnestToProductRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SimpleUnnestToProductRule.java
index 134e6fb..06fb360c 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SimpleUnnestToProductRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SimpleUnnestToProductRule.java
@@ -25,7 +25,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -37,8 +36,8 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractScanOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 public class SimpleUnnestToProductRule implements IAlgebraicRewriteRule {
@@ -81,29 +80,53 @@
         Mutable<ILogicalOperator> tupleSourceOpRef = currentOpRef;
         currentOpRef = opRef;
         if (tupleSourceOpRef.getValue().getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) {
-            NestedTupleSourceOperator nts = (NestedTupleSourceOperator) tupleSourceOpRef.getValue();
-            // If the subplan input is a trivial plan, do not do the rewriting.
-            if (nts.getSourceOperator().getOperatorTag() != LogicalOperatorTag.EMPTYTUPLESOURCE) {
-                while (currentOpRef.getValue().getInputs().size() == 1
-                        && currentOpRef.getValue() instanceof AbstractScanOperator
-                        && descOrSelfIsSourceScan((AbstractLogicalOperator) currentOpRef.getValue())) {
-                    if (opsAreIndependent(currentOpRef.getValue(), tupleSourceOpRef.getValue())) {
-                        /** move down the boundary if the operator is independent of the tuple source */
-                        boundaryOpRef = currentOpRef.getValue().getInputs().get(0);
-                    } else {
-                        break;
-                    }
-                    currentOpRef = currentOpRef.getValue().getInputs().get(0);
+            while (currentOpRef.getValue().getInputs().size() == 1
+                    /*
+                     * When this rule is fired,
+                     * Unnests with a dataset function have been rewritten to DataSourceScans and
+                     * AccessMethod related rewriting hasn't been done. Therefore, we only need
+                     * to check if currentOpRef holds a DataSourceScanOperator.
+                     */
+                    && currentOpRef.getValue().getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN
+                    && descOrSelfIsSourceScan((AbstractLogicalOperator) currentOpRef.getValue())) {
+                if (opsAreIndependent(currentOpRef.getValue(), tupleSourceOpRef.getValue())) {
+                    /** move down the boundary if the operator is independent of the tuple source */
+                    boundaryOpRef = currentOpRef.getValue().getInputs().get(0);
+                } else {
+                    break;
+                }
+                currentOpRef = currentOpRef.getValue().getInputs().get(0);
+            }
+        } else {
+            //Move the boundary below any top const assigns.
+            boundaryOpRef = opRef.getValue().getInputs().get(0);
+            while (boundaryOpRef.getValue().getInputs().size() == 1
+                    /*
+                     * When this rule is fired,
+                     * Unnests with a dataset function have been rewritten to DataSourceScans and
+                     * AccessMethod related rewriting hasn't been done. Therefore, we only need
+                     * to check if boundaryOpRef holds a DataSourceScanOperator.
+                     */
+                    && boundaryOpRef.getValue().getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN) {
+                List<LogicalVariable> opUsedVars = new ArrayList<LogicalVariable>();
+                VariableUtilities.getUsedVariables(boundaryOpRef.getValue(), opUsedVars);
+                if (opUsedVars.size() == 0 && OperatorPropertiesUtil.isMovable(boundaryOpRef.getValue())
+                /* We cannot freely move the location of operators tagged as un-movable. */) {
+                    // move down the boundary if the operator is a const assigns.
+                    boundaryOpRef = boundaryOpRef.getValue().getInputs().get(0);
+                } else {
+                    break;
                 }
             }
         }
 
         /** join the two independent branches */
         InnerJoinOperator join = new InnerJoinOperator(new MutableObject<ILogicalExpression>(ConstantExpression.TRUE),
-                new MutableObject<ILogicalOperator>(boundaryOpRef.getValue()), new MutableObject<ILogicalOperator>(
-                        opRef.getValue()));
+                new MutableObject<ILogicalOperator>(boundaryOpRef.getValue()),
+                new MutableObject<ILogicalOperator>(opRef.getValue()));
         opRef.setValue(join);
         ILogicalOperator ets = new EmptyTupleSourceOperator();
+        context.computeAndSetTypeEnvironmentForOperator(ets);
         boundaryOpRef.setValue(ets);
         context.computeAndSetTypeEnvironmentForOperator(boundaryOpRef.getValue());
         context.computeAndSetTypeEnvironmentForOperator(opRef.getValue());
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateSubplanRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanRule.java
similarity index 92%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateSubplanRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanRule.java
index 7327e94..32c7e03 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateSubplanRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanRule.java
@@ -16,13 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.LinkedList;
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -31,7 +30,7 @@
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
 import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
 import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
@@ -46,12 +45,11 @@
 
     /**
      * Eliminate Subplan above ETS
-     * and Subplan that has only ops. with one input and no free vars. (could we
-     * modify it to consider free vars which are sources of Unnest or Assign, if
-     * there are no aggregates?)
+     * and Subplan that has only ops. with one input and no free vars.
      */
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
         if (op.getOperatorTag() != LogicalOperatorTag.SUBPLAN) {
             return false;
@@ -117,8 +115,8 @@
                 if (topOp == null) {
                     topOp = r.getValue();
                 } else {
-                    LeftOuterJoinOperator j = new LeftOuterJoinOperator(new MutableObject<ILogicalExpression>(
-                            ConstantExpression.TRUE));
+                    InnerJoinOperator j = new InnerJoinOperator(
+                            new MutableObject<ILogicalExpression>(ConstantExpression.TRUE));
                     j.getInputs().add(new MutableObject<ILogicalOperator>(topOp));
                     j.getInputs().add(r);
                     ctx.setOutputTypeEnvironment(j, j.computeOutputTypeEnvironment(ctx));
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateSubplanWithInputCardinalityOneRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java
similarity index 76%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateSubplanWithInputCardinalityOneRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java
index df6e1ee..b01bb43 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateSubplanWithInputCardinalityOneRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java
@@ -16,14 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -34,6 +33,7 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import org.apache.hyracks.algebricks.core.algebra.util.OperatorManipulationUtil;
 import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
@@ -44,7 +44,7 @@
  * The live variables at OP will not be used after SUBPLAN.
  * Note: This rule must be applied after
  * the RemoveRedundantVariablesRule (to avoid the lineage analysis of variable cardinality).
- * 
+ *
  * @author yingyib
  */
 public class EliminateSubplanWithInputCardinalityOneRule implements IAlgebraicRewriteRule {
@@ -59,7 +59,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         if (!invoked) {
             rootRef = opRef;
             invoked = true;
@@ -104,14 +105,14 @@
                 if (rootRefs.size() != 1) {
                     continue;
                 }
-                Set<Mutable<ILogicalOperator>> ntsSet = new ListSet<Mutable<ILogicalOperator>>();
-                findNts(rootRefs.get(0), ntsSet);
 
-                /** Replaces nts with the input operator of the subplan. */
-                for (Mutable<ILogicalOperator> nts : ntsSet) {
-                    nts.setValue(subplanInputOperator);
-                }
-                subplanRef.setValue(rootRefs.get(0).getValue());
+                // Replaces all Nts' in the nested plan with the Subplan input operator or its deep copy.
+                ILogicalOperator topOperator = rootRefs.get(0).getValue();
+                ReplaceNtsWithSubplanInputOperatorVisitor visitor = new ReplaceNtsWithSubplanInputOperatorVisitor(
+                        context, subplan);
+                ILogicalOperator newTopOperator = topOperator.accept(visitor, null);
+                subplanRef.setValue(newTopOperator);
+                OperatorManipulationUtil.computeTypeEnvironmentBottomUp(newTopOperator, context);
                 changed = true;
             } else {
                 continue;
@@ -122,7 +123,7 @@
 
     /**
      * Whether the cardinality of the input free variables are one.
-     * 
+     *
      * @param opRef
      *            the operator to be checked (including its input operators)
      * @param freeVars
@@ -140,8 +141,8 @@
     }
 
     /**
-     * Recursively adding variables which has cardinality one and in int the input free variable set.
-     * 
+     * Recursively adding variables which has cardinality one into the input free variable set.
+     *
      * @param opRef
      *            , the current operator reference.
      * @param freeVars
@@ -155,22 +156,27 @@
      */
     private void isCardinalityOne(Mutable<ILogicalOperator> opRef, Set<LogicalVariable> freeVars,
             Set<LogicalVariable> varsWithCardinalityOne, Set<LogicalVariable> varsLiveAtUnnestAndJoin)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         AbstractLogicalOperator operator = (AbstractLogicalOperator) opRef.getValue();
-        List<LogicalVariable> producedVars = new ArrayList<LogicalVariable>();
-        VariableUtilities.getProducedVariables(operator, producedVars);
-        if (operator.getOperatorTag() == LogicalOperatorTag.UNNEST
-                || operator.getOperatorTag() == LogicalOperatorTag.INNERJOIN
-                || operator.getOperatorTag() == LogicalOperatorTag.LEFTOUTERJOIN) {
-            VariableUtilities.getLiveVariables(operator, varsLiveAtUnnestAndJoin);
-        }
-        if (operator.getOperatorTag() == LogicalOperatorTag.AGGREGATE) {
-            for (LogicalVariable producedVar : producedVars) {
-                if (freeVars.contains(producedVar)) {
-                    varsWithCardinalityOne.add(producedVar);
+        List<LogicalVariable> liveVars = new ArrayList<LogicalVariable>();
+        VariableUtilities.getLiveVariables(operator, liveVars);
+
+        if (OperatorPropertiesUtil.isCardinalityOne(operator)) {
+            for (LogicalVariable liveVar : liveVars) {
+                if (freeVars.contains(liveVar)) {
+                    varsWithCardinalityOne.add(liveVar);
                 }
             }
+        } else {
+            // Operators with the following tags could still have have cardinality one,
+            // hence they are in this "else" branch.
+            if (operator.getOperatorTag() == LogicalOperatorTag.UNNEST
+                    || operator.getOperatorTag() == LogicalOperatorTag.INNERJOIN
+                    || operator.getOperatorTag() == LogicalOperatorTag.LEFTOUTERJOIN) {
+                VariableUtilities.getLiveVariables(operator, varsLiveAtUnnestAndJoin);
+            }
         }
+
         if (varsWithCardinalityOne.size() == freeVars.size()) {
             return;
         }
@@ -179,25 +185,4 @@
         }
     }
 
-    /**
-     * Find the NestedTupleSource operator in the direct/undirect input operators of opRef.
-     * 
-     * @param opRef
-     *            , the current operator reference.
-     * @param ntsSet
-     *            , the set NestedTupleSource operator references.
-     */
-    private void findNts(Mutable<ILogicalOperator> opRef, Set<Mutable<ILogicalOperator>> ntsSet) {
-        int childSize = opRef.getValue().getInputs().size();
-        if (childSize == 0) {
-            AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
-            if (op.getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) {
-                ntsSet.add(opRef);
-            }
-            return;
-        }
-        for (Mutable<ILogicalOperator> childRef : opRef.getValue().getInputs()) {
-            findNts(childRef, ntsSet);
-        }
-    }
 }
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByForSubplanRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/IntroduceGroupByForSubplanRule.java
similarity index 94%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByForSubplanRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/IntroduceGroupByForSubplanRule.java
index 67e8d42..3e65d91 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceGroupByForSubplanRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/IntroduceGroupByForSubplanRule.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -29,7 +29,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.ListSet;
 import org.apache.hyracks.algebricks.common.utils.Pair;
@@ -70,7 +69,7 @@
  *
  * <pre>
  * Before
- * 
+ *
  *   plan__parent
  *   SUBPLAN {
  *     PROJECT?
@@ -80,11 +79,11 @@
  *       plan__nested_B
  *   }
  *   plan__child
- * 
+ *
  *   where $condition does not equal a constant true.
- * 
+ *
  * After (This is a general application of the rule, specifics may vary based on the query plan.)
- * 
+ *
  *   plan__parent
  *   GROUP_BY {
  *     PROJECT?
@@ -106,7 +105,8 @@
 public class IntroduceGroupByForSubplanRule implements IAlgebraicRewriteRule {
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         return false;
     }
 
@@ -188,9 +188,18 @@
         Set<LogicalVariable> pkVars = computeGbyVars(outerNts, free, context);
         if (pkVars == null || pkVars.size() < 1) {
             // there is no non-trivial primary key, group-by keys are all live variables
+            // that were produced by descendant or self
             ILogicalOperator subplanInput = subplan.getInputs().get(0).getValue();
             pkVars = new HashSet<LogicalVariable>();
+            //get live variables
             VariableUtilities.getLiveVariables(subplanInput, pkVars);
+
+            //get produced variables
+            Set<LogicalVariable> producedVars = new HashSet<LogicalVariable>();
+            VariableUtilities.getProducedVariablesInDescendantsAndSelf(subplanInput, producedVars);
+
+            //retain the intersection
+            pkVars.retainAll(producedVars);
         }
         AlgebricksConfig.ALGEBRICKS_LOGGER.fine("Found FD for introducing group-by: " + pkVars);
 
@@ -222,11 +231,13 @@
                 }
                 break;
             }
+            default:
+                break;
         }
         if (testForNull == null) {
             testForNull = context.newVar();
-            AssignOperator tmpAsgn = new AssignOperator(testForNull, new MutableObject<ILogicalExpression>(
-                    ConstantExpression.TRUE));
+            AssignOperator tmpAsgn = new AssignOperator(testForNull,
+                    new MutableObject<ILogicalExpression>(ConstantExpression.TRUE));
             tmpAsgn.getInputs().add(new MutableObject<ILogicalOperator>(rightRef.getValue()));
             rightRef.setValue(tmpAsgn);
             context.computeAndSetTypeEnvironmentForOperator(tmpAsgn);
@@ -261,9 +272,8 @@
         Map<LogicalVariable, LogicalVariable> mappedVars = buildVarExprList(pkVars, context, g, g.getGroupByList());
         context.updatePrimaryKeys(mappedVars);
         for (LogicalVariable uv : underVars) {
-            g.getDecorList().add(
-                    new Pair<LogicalVariable, Mutable<ILogicalExpression>>(null, new MutableObject<ILogicalExpression>(
-                            new VariableReferenceExpression(uv))));
+            g.getDecorList().add(new Pair<LogicalVariable, Mutable<ILogicalExpression>>(null,
+                    new MutableObject<ILogicalExpression>(new VariableReferenceExpression(uv))));
         }
         OperatorPropertiesUtil.typeOpRec(subplanRoot, context);
         OperatorPropertiesUtil.typeOpRec(gPlan.getRoots().get(0), context);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertOuterJoinRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/IntroduceLeftOuterJoinForSubplanRule.java
similarity index 95%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertOuterJoinRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/IntroduceLeftOuterJoinForSubplanRule.java
index b8c75bd..93af981 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InsertOuterJoinRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/IntroduceLeftOuterJoinForSubplanRule.java
@@ -16,12 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.Iterator;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
@@ -34,10 +33,11 @@
 import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
-public class InsertOuterJoinRule implements IAlgebraicRewriteRule {
+public class IntroduceLeftOuterJoinForSubplanRule implements IAlgebraicRewriteRule {
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         return false;
     }
 
@@ -74,6 +74,7 @@
                 InnerJoinOperator join = (InnerJoinOperator) op1;
                 Mutable<ILogicalOperator> leftRef = join.getInputs().get(0);
                 Mutable<ILogicalOperator> rightRef = join.getInputs().get(1);
+
                 Mutable<ILogicalOperator> ntsRef = getNtsAtEndOfPipeline(leftRef);
                 if (ntsRef == null) {
                     ntsRef = getNtsAtEndOfPipeline(rightRef);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/MoveFreeVariableOperatorOutOfSubplanRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java
similarity index 97%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/MoveFreeVariableOperatorOutOfSubplanRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java
index 06063b8..d176d05 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/MoveFreeVariableOperatorOutOfSubplanRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.HashSet;
 import java.util.ListIterator;
@@ -34,13 +34,14 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
 import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
+import org.apache.hyracks.algebricks.rewriter.rules.AbstractDecorrelationRule;
 
 /**
  * The rule searches for operators that can be moved outside the subplan.
  *
  * <pre>
  * Before
- * 
+ *
  *   %PARENT_PLAN
  *   SUBPLAN{
  *     %NESTED_OPERATORS_B+
@@ -49,12 +50,12 @@
  *     NESTEDTUPLESOURCE
  *   }
  *   %CHILD_PLAN
- * 
+ *
  *   where
  *     %SUBPLAN has one nested plan with a root AGGREGATE operator.
- * 
+ *
  * After
- * 
+ *
  *   %PARENT_PLAN
  *   SUBPLAN{
  *     %NESTED_OPERATORS_B+
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/NestedSubplanToJoinRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/NestedSubplanToJoinRule.java
similarity index 85%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/NestedSubplanToJoinRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/NestedSubplanToJoinRule.java
index 113a06e..35c7e4e 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/NestedSubplanToJoinRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/NestedSubplanToJoinRule.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -25,7 +25,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -37,20 +36,21 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
 import org.apache.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil;
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 /**
  * replace Subplan operators with nested loop joins where the join condition is true, if the Subplan
  * does not contain free variables (does not have correlations to the input stream).
- * 
+ *
  * @author yingyib
  */
 public class NestedSubplanToJoinRule implements IAlgebraicRewriteRule {
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         return false;
     }
 
@@ -103,17 +103,20 @@
                 continue;
             }
 
-            /** expend the input and roots into a DAG of nested loop joins */
+            /**
+             * Expends the input and roots into a DAG of nested loop joins.
+             * Though joins should be left-outer joins, a left-outer join with condition TRUE is equivalent to an inner join.
+             **/
             Mutable<ILogicalExpression> expr = new MutableObject<ILogicalExpression>(ConstantExpression.TRUE);
             Mutable<ILogicalOperator> nestedRootRef = nestedRoots.get(0);
-            ILogicalOperator join = new LeftOuterJoinOperator(expr, new MutableObject<ILogicalOperator>(subplanInput),
+            ILogicalOperator join = new InnerJoinOperator(expr, new MutableObject<ILogicalOperator>(subplanInput),
                     nestedRootRef);
 
             /** rewrite the nested tuple source to be empty tuple source */
-            rewriteNestedTupleSource(nestedRootRef);
+            rewriteNestedTupleSource(nestedRootRef, context);
 
             for (int i = 1; i < nestedRoots.size(); i++) {
-                join = new LeftOuterJoinOperator(expr, new MutableObject<ILogicalOperator>(join), nestedRoots.get(i));
+                join = new InnerJoinOperator(expr, new MutableObject<ILogicalOperator>(join), nestedRoots.get(i));
             }
             op1.getInputs().get(index).setValue(join);
             context.computeAndSetTypeEnvironmentForOperator(join);
@@ -124,17 +127,20 @@
 
     /**
      * rewrite NestedTupleSource operators to EmptyTupleSource operators
-     * 
+     *
      * @param nestedRootRef
      */
-    private void rewriteNestedTupleSource(Mutable<ILogicalOperator> nestedRootRef) {
+    private void rewriteNestedTupleSource(Mutable<ILogicalOperator> nestedRootRef, IOptimizationContext context)
+            throws AlgebricksException {
         AbstractLogicalOperator nestedRoot = (AbstractLogicalOperator) nestedRootRef.getValue();
         if (nestedRoot.getOperatorTag() == LogicalOperatorTag.NESTEDTUPLESOURCE) {
-            nestedRootRef.setValue(new EmptyTupleSourceOperator());
+            ILogicalOperator ets = new EmptyTupleSourceOperator();
+            nestedRootRef.setValue(ets);
+            context.computeAndSetTypeEnvironmentForOperator(ets);
         }
         List<Mutable<ILogicalOperator>> inputs = nestedRoot.getInputs();
         for (Mutable<ILogicalOperator> input : inputs) {
-            rewriteNestedTupleSource(input);
+            rewriteNestedTupleSource(input, context);
         }
     }
 }
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSubplanIntoGroupByRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
similarity index 99%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSubplanIntoGroupByRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
index 9dce6c9..042de2c 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSubplanIntoGroupByRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
@@ -18,7 +18,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -47,7 +47,7 @@
 /**
  * This rule pushes an array of subplans on top of a group-by into the
  * nested plan of the group-by.
- * 
+ *
  * @author yingyib
  */
 
@@ -179,7 +179,7 @@
 
     /**
      * Removes unused aggregation variables (and expressions)
-     * 
+     *
      * @param gby
      * @throws AlgebricksException
      */
@@ -206,4 +206,4 @@
         return currentOpRef;
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/ReplaceNtsWithSubplanInputOperatorVisitor.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/ReplaceNtsWithSubplanInputOperatorVisitor.java
new file mode 100644
index 0000000..d36bff9
--- /dev/null
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/ReplaceNtsWithSubplanInputOperatorVisitor.java
@@ -0,0 +1,277 @@
+/*
+ * 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.hyracks.algebricks.rewriter.rules.subplan;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.AssignOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DataSourceScanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistinctOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.EmptyTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExchangeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ExtensionOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.GroupByOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.InnerJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OuterUnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.RunningAggregateOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.ScriptOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SelectOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.SubplanOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.TokenizeOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnionAllOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.UnnestOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.LogicalOperatorDeepCopyWithNewVariablesVisitor;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.VariableUtilities;
+import org.apache.hyracks.algebricks.core.algebra.visitors.IQueryOperatorVisitor;
+
+/**
+ * This visitor replaces NTS' in a subplan with its input operator or its deep
+ * copies. Note that this visitor can only be used in the rule
+ * EliminateSubplanWithInputCardinalityOneRule, for cases where the Subplan
+ * input operator is of cardinality one and its variables are not needed after
+ * the Subplan.
+ */
+class ReplaceNtsWithSubplanInputOperatorVisitor implements IQueryOperatorVisitor<ILogicalOperator, Void> {
+    // The optimization context.
+    private final IOptimizationContext ctx;
+
+    // The input operator to the subplan.
+    private final ILogicalOperator subplanInputOperator;
+
+    // The map that maps the input variables to the subplan to their deep-copied
+    // variables.
+    private final Map<LogicalVariable, LogicalVariable> varMap = new HashMap<>();
+
+    // Whether the original copy has been used.
+    private boolean isOriginalCopyUsed = false;
+
+    /**
+     * @param context
+     *            the optimization context
+     * @param subplanOperator
+     *            the subplan operator this visitor deals with.
+     * @throws AlgebricksException
+     */
+    public ReplaceNtsWithSubplanInputOperatorVisitor(IOptimizationContext context, ILogicalOperator subplanOperator)
+            throws AlgebricksException {
+        this.ctx = context;
+        this.subplanInputOperator = subplanOperator.getInputs().get(0).getValue();
+    }
+
+    @Override
+    public ILogicalOperator visitAggregateOperator(AggregateOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitRunningAggregateOperator(RunningAggregateOperator op, Void arg)
+            throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitEmptyTupleSourceOperator(EmptyTupleSourceOperator op, Void arg)
+            throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitGroupByOperator(GroupByOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitLimitOperator(LimitOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitInnerJoinOperator(InnerJoinOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitLeftOuterJoinOperator(LeftOuterJoinOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitNestedTupleSourceOperator(NestedTupleSourceOperator op, Void arg)
+            throws AlgebricksException {
+        if (!isOriginalCopyUsed) {
+            isOriginalCopyUsed = true;
+            return subplanInputOperator;
+        }
+        LogicalOperatorDeepCopyWithNewVariablesVisitor visitor = new LogicalOperatorDeepCopyWithNewVariablesVisitor(ctx,
+                ctx);
+        ILogicalOperator copiedSubplanInputOperator = visitor.deepCopy(subplanInputOperator);
+        varMap.putAll(visitor.getInputToOutputVariableMapping());
+        return copiedSubplanInputOperator;
+    }
+
+    @Override
+    public ILogicalOperator visitOrderOperator(OrderOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitAssignOperator(AssignOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitSelectOperator(SelectOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitExtensionOperator(ExtensionOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitProjectOperator(ProjectOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitPartitioningSplitOperator(PartitioningSplitOperator op, Void arg)
+            throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitReplicateOperator(ReplicateOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitMaterializeOperator(MaterializeOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitSubplanOperator(SubplanOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitUnionOperator(UnionAllOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitUnnestOperator(UnnestOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitOuterUnnestOperator(OuterUnnestOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitUnnestMapOperator(UnnestMapOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op, Void arg)
+            throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitDataScanOperator(DataSourceScanOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitDistinctOperator(DistinctOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitExchangeOperator(ExchangeOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitTokenizeOperator(TokenizeOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    @Override
+    public ILogicalOperator visitIntersectOperator(IntersectOperator op, Void arg) throws AlgebricksException {
+        return visit(op);
+    }
+
+    private ILogicalOperator visit(ILogicalOperator op) throws AlgebricksException {
+        List<Map<LogicalVariable, LogicalVariable>> varMapSnapshots = new ArrayList<>();
+        for (Mutable<ILogicalOperator> childRef : op.getInputs()) {
+            ILogicalOperator newChild = childRef.getValue().accept(this, null);
+            childRef.setValue(newChild);
+            // Replaces variables in op with the mapping obtained from one
+            // child.
+            VariableUtilities.substituteVariables(op, varMap, ctx);
+            // Keep the map from current child and move to the next child.
+            varMapSnapshots.add(new HashMap<LogicalVariable, LogicalVariable>(varMap));
+            varMap.clear();
+        }
+
+        // Combine mappings from all children.
+        for (Map<LogicalVariable, LogicalVariable> map : varMapSnapshots) {
+            varMap.putAll(map);
+        }
+
+        // Only propagates necessary mappings to the parent operator.
+        Set<LogicalVariable> liveVars = new HashSet<LogicalVariable>();
+        VariableUtilities.getLiveVariables(op, liveVars);
+        varMap.values().retainAll(liveVars);
+        return op;
+    }
+
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SubplanOutOfGroupRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/SubplanOutOfGroupRule.java
similarity index 98%
rename from algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SubplanOutOfGroupRule.java
rename to algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/SubplanOutOfGroupRule.java
index d0d3dd7..0aba194 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SubplanOutOfGroupRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/SubplanOutOfGroupRule.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.rewriter.rules;
+package org.apache.hyracks.algebricks.rewriter.rules.subplan;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/util/PhysicalOptimizationsUtil.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/util/PhysicalOptimizationsUtil.java
index 7be0b16..99480bf 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/util/PhysicalOptimizationsUtil.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/util/PhysicalOptimizationsUtil.java
@@ -22,7 +22,6 @@
 import java.util.Set;
 
 import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
@@ -32,24 +31,31 @@
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractOperatorWithNestedPlans;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.visitors.FDsAndEquivClassesVisitor;
-import org.apache.hyracks.algebricks.core.config.AlgebricksConfig;
+import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
 
 public class PhysicalOptimizationsUtil {
 
-    public static void computeFDsAndEquivalenceClasses(AbstractLogicalOperator op, IOptimizationContext ctx)
+    public static void computeFDsAndEquivalenceClasses(ILogicalOperator op, IOptimizationContext ctx)
             throws AlgebricksException {
         FDsAndEquivClassesVisitor visitor = new FDsAndEquivClassesVisitor();
+        visitOperatorAndItsDescendants(op, visitor, ctx);
+    }
+
+    public static <R> void visitOperatorAndItsDescendants(ILogicalOperator op, ILogicalOperatorVisitor<R, IOptimizationContext> visitor,
+            IOptimizationContext ctx) throws AlgebricksException {
         Set<ILogicalOperator> visitSet = new HashSet<ILogicalOperator>();
         computeFDsAndEqClassesWithVisitorRec(op, ctx, visitor, visitSet);
     }
 
-    private static void computeFDsAndEqClassesWithVisitorRec(AbstractLogicalOperator op, IOptimizationContext ctx,
-            FDsAndEquivClassesVisitor visitor, Set<ILogicalOperator> visitSet) throws AlgebricksException {
+    private static <R> void computeFDsAndEqClassesWithVisitorRec(ILogicalOperator op, IOptimizationContext ctx,
+            ILogicalOperatorVisitor<R, IOptimizationContext> visitor, Set<ILogicalOperator> visitSet)
+                    throws AlgebricksException {
         visitSet.add(op);
         for (Mutable<ILogicalOperator> i : op.getInputs()) {
             computeFDsAndEqClassesWithVisitorRec((AbstractLogicalOperator) i.getValue(), ctx, visitor, visitSet);
         }
-        if (op.hasNestedPlans()) {
+        AbstractLogicalOperator aop = (AbstractLogicalOperator) op;
+        if (aop.hasNestedPlans()) {
             for (ILogicalPlan p : ((AbstractOperatorWithNestedPlans) op).getNestedPlans()) {
                 for (Mutable<ILogicalOperator> r : p.getRoots()) {
                     AbstractLogicalOperator rootOp = (AbstractLogicalOperator) r.getValue();
@@ -65,11 +71,6 @@
             }
         }
         op.accept(visitor, ctx);
-        if (AlgebricksConfig.DEBUG) {
-            AlgebricksConfig.ALGEBRICKS_LOGGER.fine("--> op. type = " + op.getOperatorTag() + "\n"
-                    + "    equiv. classes = " + ctx.getEquivalenceClassMap(op) + "\n" + "    FDs = "
-                    + ctx.getFDList(op) + "\n");
-        }
     }
 
 }
diff --git a/algebricks/algebricks-runtime/pom.xml b/algebricks/algebricks-runtime/pom.xml
index afb0e06..b700675 100644
--- a/algebricks/algebricks-runtime/pom.xml
+++ b/algebricks/algebricks-runtime/pom.xml
@@ -41,20 +41,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   <dependency>
   	<groupId>org.apache.hyracks</groupId>
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java
index 9b2919e..01f1b88 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/aggregators/TupleCountRunningAggregateFunctionFactory.java
@@ -23,6 +23,7 @@
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
@@ -32,7 +33,8 @@
     private static final long serialVersionUID = 1L;
 
     @Override
-    public IRunningAggregateEvaluator createRunningAggregateEvaluator() throws AlgebricksException {
+    public IRunningAggregateEvaluator createRunningAggregateEvaluator(IHyracksTaskContext ctx)
+            throws AlgebricksException {
         final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
         return new IRunningAggregateEvaluator() {
 
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/AlgebricksPipeline.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/AlgebricksPipeline.java
index c0225c8..379944b 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/AlgebricksPipeline.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/AlgebricksPipeline.java
@@ -50,4 +50,4 @@
     // return projectedColumns;
     // }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluator.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluator.java
index 41e2fee..08aea9a 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluator.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluator.java
@@ -23,11 +23,12 @@
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
 public interface IAggregateEvaluator {
+    /** should be called each time a new aggregate value is computed */
     public void init() throws AlgebricksException;
 
     public void step(IFrameTupleReference tuple) throws AlgebricksException;
 
-    public void finishPartial(IPointable result) throws AlgebricksException;
-
     public void finish(IPointable result) throws AlgebricksException;
-}
\ No newline at end of file
+
+    public void finishPartial(IPointable result) throws AlgebricksException;
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluatorFactory.java
index 8bdbed7..8a61280 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IAggregateEvaluatorFactory.java
@@ -25,4 +25,4 @@
 
 public interface IAggregateEvaluatorFactory extends Serializable {
     public IAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws AlgebricksException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyAggregateFunction.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyAggregateFunction.java
deleted file mode 100644
index 2222e0b..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyAggregateFunction.java
+++ /dev/null
@@ -1,33 +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.hyracks.algebricks.runtime.base;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public interface ICopyAggregateFunction {
-    /** should be called each time a new aggregate value is computed */
-    public void init() throws AlgebricksException;
-
-    public void step(IFrameTupleReference tuple) throws AlgebricksException;
-
-    public void finish() throws AlgebricksException;
-
-    public void finishPartial() throws AlgebricksException;
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyAggregateFunctionFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyAggregateFunctionFactory.java
deleted file mode 100644
index cbb6732..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyAggregateFunctionFactory.java
+++ /dev/null
@@ -1,28 +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.hyracks.algebricks.runtime.base;
-
-import java.io.Serializable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-
-public interface ICopyAggregateFunctionFactory extends Serializable {
-    public ICopyAggregateFunction createAggregateFunction(IDataOutputProvider provider) throws AlgebricksException;
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluator.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluator.java
deleted file mode 100644
index 03480e8..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluator.java
+++ /dev/null
@@ -1,26 +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.hyracks.algebricks.runtime.base;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public interface ICopyEvaluator {
-    public void evaluate(IFrameTupleReference tuple) throws AlgebricksException;
-}
\ No newline at end of file
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyRunningAggregateFunction.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyRunningAggregateFunction.java
deleted file mode 100644
index 19cab14..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyRunningAggregateFunction.java
+++ /dev/null
@@ -1,28 +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.hyracks.algebricks.runtime.base;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public interface ICopyRunningAggregateFunction {
-    public void init() throws AlgebricksException;
-
-    public void step(IFrameTupleReference tuple) throws AlgebricksException;
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyRunningAggregateFunctionFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyRunningAggregateFunctionFactory.java
deleted file mode 100644
index 1fe3595..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyRunningAggregateFunctionFactory.java
+++ /dev/null
@@ -1,29 +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.hyracks.algebricks.runtime.base;
-
-import java.io.Serializable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-
-public interface ICopyRunningAggregateFunctionFactory extends Serializable {
-    public ICopyRunningAggregateFunction createRunningAggregateFunction(IDataOutputProvider provider)
-            throws AlgebricksException;
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunctionFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunctionFactory.java
deleted file mode 100644
index 0959811..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunctionFactory.java
+++ /dev/null
@@ -1,27 +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.hyracks.algebricks.runtime.base;
-
-import java.io.Serializable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-
-public interface ICopySerializableAggregateFunctionFactory extends Serializable {
-    public ICopySerializableAggregateFunction createAggregateFunction() throws AlgebricksException;
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyUnnestingFunction.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyUnnestingFunction.java
deleted file mode 100644
index f4e3aea..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyUnnestingFunction.java
+++ /dev/null
@@ -1,29 +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.hyracks.algebricks.runtime.base;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public interface ICopyUnnestingFunction {
-    public void init(IFrameTupleReference tuple) throws AlgebricksException;
-
-    public boolean step() throws AlgebricksException;
-
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyUnnestingFunctionFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyUnnestingFunctionFactory.java
deleted file mode 100644
index 1a09fcf..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyUnnestingFunctionFactory.java
+++ /dev/null
@@ -1,28 +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.hyracks.algebricks.runtime.base;
-
-import java.io.Serializable;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
-
-public interface ICopyUnnestingFunctionFactory extends Serializable {
-    public ICopyUnnestingFunction createUnnestingFunction(IDataOutputProvider provider) throws AlgebricksException;
-}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IRunningAggregateEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IRunningAggregateEvaluatorFactory.java
index 0fe86a8..c71b41d 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IRunningAggregateEvaluatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IRunningAggregateEvaluatorFactory.java
@@ -21,7 +21,9 @@
 import java.io.Serializable;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
 
 public interface IRunningAggregateEvaluatorFactory extends Serializable {
-    public IRunningAggregateEvaluator createRunningAggregateEvaluator() throws AlgebricksException;
-}
\ No newline at end of file
+    public IRunningAggregateEvaluator createRunningAggregateEvaluator(IHyracksTaskContext ctx)
+            throws AlgebricksException;
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluator.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluator.java
index 1d3adcb..ab22819 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluator.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluator.java
@@ -24,4 +24,4 @@
 
 public interface IScalarEvaluator {
     public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluatorFactory.java
index f14860b..3a102db 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IScalarEvaluatorFactory.java
@@ -25,4 +25,4 @@
 
 public interface IScalarEvaluatorFactory extends Serializable {
     public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ISerializedAggregateEvaluator.java
similarity index 93%
rename from algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java
rename to algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ISerializedAggregateEvaluator.java
index b3c73fb..473afbc 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ISerializedAggregateEvaluator.java
@@ -23,19 +23,18 @@
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
-public interface ICopySerializableAggregateFunction {
+public interface ISerializedAggregateEvaluator {
     /**
      * initialize the space occupied by internal state
-     * 
+     *
      * @param state
      * @throws AlgebricksException
-     * @return length of the intermediate state
      */
     public void init(DataOutput state) throws AlgebricksException;
 
     /**
      * update the internal state
-     * 
+     *
      * @param tuple
      * @param state
      * @throws AlgebricksException
@@ -44,7 +43,7 @@
 
     /**
      * output the state to result
-     * 
+     *
      * @param state
      * @param result
      * @throws AlgebricksException
@@ -53,7 +52,7 @@
 
     /**
      * output the partial state to partial result
-     * 
+     *
      * @param state
      * @param partialResult
      * @throws AlgebricksException
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ISerializedAggregateEvaluatorFactory.java
similarity index 79%
rename from algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluatorFactory.java
rename to algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ISerializedAggregateEvaluatorFactory.java
index a81f351..084f39d 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ISerializedAggregateEvaluatorFactory.java
@@ -21,8 +21,8 @@
 import java.io.Serializable;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
 
-public interface ICopyEvaluatorFactory extends Serializable {
-    public ICopyEvaluator createEvaluator(IDataOutputProvider output) throws AlgebricksException;
-}
\ No newline at end of file
+public interface ISerializedAggregateEvaluatorFactory extends Serializable {
+    public ISerializedAggregateEvaluator createAggregateEvaluator(IHyracksTaskContext ctx) throws AlgebricksException;
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluator.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluator.java
index f29e65e..67aede4 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluator.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluator.java
@@ -26,4 +26,5 @@
     public void init(IFrameTupleReference tuple) throws AlgebricksException;
 
     public boolean step(IPointable result) throws AlgebricksException;
-}
\ No newline at end of file
+
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluatorFactory.java
index eef98b5..53ca8b5 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingEvaluatorFactory.java
@@ -25,4 +25,4 @@
 
 public interface IUnnestingEvaluatorFactory extends Serializable {
     public IUnnestingEvaluator createUnnestingEvaluator(IHyracksTaskContext ctx) throws AlgebricksException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java
index bebd16c..092d22e 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/IUnnestingPositionWriter.java
@@ -23,4 +23,4 @@
 
 public interface IUnnestingPositionWriter {
     public void write(DataOutput dataOutput, long position) throws IOException;
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ColumnAccessEvalFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ColumnAccessEvalFactory.java
index 5bb206c..1b7753c 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ColumnAccessEvalFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ColumnAccessEvalFactory.java
@@ -18,16 +18,14 @@
  */
 package org.apache.hyracks.algebricks.runtime.evaluators;
 
-import java.io.DataOutput;
-import java.io.IOException;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
-public class ColumnAccessEvalFactory implements ICopyEvaluatorFactory {
+public class ColumnAccessEvalFactory implements IScalarEvaluatorFactory {
 
     private static final long serialVersionUID = 1L;
 
@@ -43,21 +41,15 @@
     }
 
     @Override
-    public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-        return new ICopyEvaluator() {
-
-            private DataOutput out = output.getDataOutput();
+    public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws AlgebricksException {
+        return new IScalarEvaluator() {
 
             @Override
-            public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
+            public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
                 byte[] buffer = tuple.getFieldData(fieldIndex);
                 int start = tuple.getFieldStart(fieldIndex);
                 int length = tuple.getFieldLength(fieldIndex);
-                try {
-                    out.write(buffer, start, length);
-                } catch (IOException ioe) {
-                    throw new AlgebricksException(ioe);
-                }
+                result.set(buffer, start, length);
             }
         };
     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvalFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvalFactory.java
index b0eebd9..da7d42b 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvalFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvalFactory.java
@@ -18,16 +18,14 @@
  */
 package org.apache.hyracks.algebricks.runtime.evaluators;
 
-import java.io.DataOutput;
-import java.io.IOException;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
 
-public class ConstantEvalFactory implements ICopyEvaluatorFactory {
+public class ConstantEvalFactory implements IScalarEvaluatorFactory {
     private static final long serialVersionUID = 1L;
 
     private byte[] value;
@@ -42,18 +40,12 @@
     }
 
     @Override
-    public ICopyEvaluator createEvaluator(final IDataOutputProvider output) throws AlgebricksException {
-        return new ICopyEvaluator() {
-
-            private DataOutput out = output.getDataOutput();
+    public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws AlgebricksException {
+        return new IScalarEvaluator() {
 
             @Override
-            public void evaluate(IFrameTupleReference tuple) throws AlgebricksException {
-                try {
-                    out.write(value, 0, value.length);
-                } catch (IOException ioe) {
-                    throw new AlgebricksException(ioe);
-                }
+            public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+                result.set(value, 0, value.length);
             }
         };
     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvaluatorFactory.java
deleted file mode 100644
index 05229fc..0000000
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/ConstantEvaluatorFactory.java
+++ /dev/null
@@ -1,52 +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.hyracks.algebricks.runtime.evaluators;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-
-public class ConstantEvaluatorFactory implements IScalarEvaluatorFactory {
-    private static final long serialVersionUID = 1L;
-
-    private byte[] value;
-
-    public ConstantEvaluatorFactory(byte[] value) {
-        this.value = value;
-    }
-
-    @Override
-    public String toString() {
-        return "Constant";
-    }
-
-    @Override
-    public IScalarEvaluator createScalarEvaluator(IHyracksTaskContext ctx) throws AlgebricksException {
-        return new IScalarEvaluator() {
-            @Override
-            public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
-                result.set(value, 0, value.length);
-            }
-        };
-    }
-
-}
\ No newline at end of file
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/TupleFieldEvaluatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/TupleFieldEvaluatorFactory.java
index 7c80b87..f26d239 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/TupleFieldEvaluatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/evaluators/TupleFieldEvaluatorFactory.java
@@ -44,4 +44,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/AggregateRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/AggregateRuntimeFactory.java
index 8759f1b..bafe8a7 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/AggregateRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/AggregateRuntimeFactory.java
@@ -69,6 +69,7 @@
             private ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(aggregs.length);
 
             private boolean first = true;
+            private boolean isOpen = false;
 
             @Override
             public void open() throws HyracksDataException {
@@ -86,7 +87,7 @@
                 } catch (AlgebricksException e) {
                     throw new HyracksDataException(e);
                 }
-
+                isOpen = true;
                 writer.open();
             }
 
@@ -103,9 +104,14 @@
 
             @Override
             public void close() throws HyracksDataException {
-                computeAggregate();
-                appendToFrameFromTupleBuilder(tupleBuilder);
-                super.close();
+                if (isOpen) {
+                    try {
+                        computeAggregate();
+                        appendToFrameFromTupleBuilder(tupleBuilder);
+                    } finally {
+                        super.close();
+                    }
+                }
             }
 
             private void computeAggregate() throws HyracksDataException {
@@ -132,7 +138,9 @@
 
             @Override
             public void fail() throws HyracksDataException {
-                writer.fail();
+                if (isOpen) {
+                    writer.fail();
+                }
             }
         };
     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansAccumulatingAggregatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansAccumulatingAggregatorFactory.java
index fefc72e..974a079 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansAccumulatingAggregatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansAccumulatingAggregatorFactory.java
@@ -54,8 +54,7 @@
     public IAggregatorDescriptor createAggregator(IHyracksTaskContext ctx, RecordDescriptor inRecordDesc,
             RecordDescriptor outRecordDescriptor, int[] keys, int[] partialKeys) throws HyracksDataException {
 
-        final AggregatorOutput outputWriter = new AggregatorOutput(subplans, keyFieldIdx.length,
-                decorFieldIdx.length);
+        final AggregatorOutput outputWriter = new AggregatorOutput(subplans, keyFieldIdx.length, decorFieldIdx.length);
         final NestedTupleSourceRuntime[] pipelines = new NestedTupleSourceRuntime[subplans.length];
         for (int i = 0; i < subplans.length; i++) {
             try {
@@ -91,15 +90,13 @@
             @Override
             public void aggregate(IFrameTupleAccessor accessor, int tIndex, IFrameTupleAccessor stateAccessor,
                     int stateTupleIndex, AggregateState state) throws HyracksDataException {
-                // it only works if the output of the aggregator fits in one
-                // frame
                 for (int i = 0; i < pipelines.length; i++) {
                     pipelines[i].writeTuple(accessor.getBuffer(), tIndex);
                 }
             }
 
             @Override
-            public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
+            public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor, int tIndex,
                     AggregateState state) throws HyracksDataException {
                 for (int i = 0; i < pipelines.length; i++) {
                     outputWriter.setInputIdx(i);
@@ -132,8 +129,8 @@
             }
 
             @Override
-            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor,
-                    int tIndex, AggregateState state) throws HyracksDataException {
+            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
+                    AggregateState state) throws HyracksDataException {
                 throw new IllegalStateException("this method should not be called");
             }
 
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansRunningAggregatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansRunningAggregatorFactory.java
index 2ca933a..4b63155 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansRunningAggregatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/NestedPlansRunningAggregatorFactory.java
@@ -127,8 +127,8 @@
             }
 
             @Override
-            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor,
-                    int tIndex, AggregateState state) throws HyracksDataException {
+            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
+                    AggregateState state) throws HyracksDataException {
                 throw new IllegalStateException("this method should not be called");
             }
 
@@ -219,14 +219,14 @@
                 for (int f = 0; f < w; f++) {
                     tb.addField(accessor, tIndex, f);
                 }
-                FrameUtils.appendToWriter(outputWriter, outputAppender, tb.getFieldEndOffsets(),
-                        tb.getByteArray(), 0, tb.getSize());
+                FrameUtils.appendToWriter(outputWriter, outputAppender, tb.getFieldEndOffsets(), tb.getByteArray(), 0,
+                        tb.getSize());
             }
         }
 
         @Override
         public void close() throws HyracksDataException {
-            outputAppender.flush(outputWriter, true);
+            outputAppender.write(outputWriter, true);
         }
 
         public void setInputIdx(int inputIdx) {
@@ -241,6 +241,11 @@
         public void fail() throws HyracksDataException {
         }
 
+        @Override
+        public void flush() throws HyracksDataException {
+            outputAppender.flush(outputWriter);
+        }
+
     }
 
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SerializableAggregatorDescriptorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SerializableAggregatorDescriptorFactory.java
index 82e5f50..6700fb8 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SerializableAggregatorDescriptorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SerializableAggregatorDescriptorFactory.java
@@ -21,8 +21,8 @@
 import java.io.DataOutput;
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunction;
-import org.apache.hyracks.algebricks.runtime.base.ICopySerializableAggregateFunctionFactory;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
@@ -35,16 +35,16 @@
 
 public class SerializableAggregatorDescriptorFactory extends AbstractAccumulatingAggregatorDescriptorFactory {
     private static final long serialVersionUID = 1L;
-    private ICopySerializableAggregateFunctionFactory[] aggFactories;
+    private ISerializedAggregateEvaluatorFactory[] aggFactories;
 
-    public SerializableAggregatorDescriptorFactory(ICopySerializableAggregateFunctionFactory[] aggFactories) {
+    public SerializableAggregatorDescriptorFactory(ISerializedAggregateEvaluatorFactory[] aggFactories) {
         this.aggFactories = aggFactories;
     }
 
     @Override
     public IAggregatorDescriptor createAggregator(IHyracksTaskContext ctx, RecordDescriptor inRecordDescriptor,
             RecordDescriptor outRecordDescriptor, int[] keyFields, final int[] keyFieldsInPartialResults)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         final int[] keys = keyFields;
 
         /**
@@ -52,7 +52,7 @@
          */
         return new IAggregatorDescriptor() {
             private FrameTupleReference ftr = new FrameTupleReference();
-            private ICopySerializableAggregateFunction[] aggs = new ICopySerializableAggregateFunction[aggFactories.length];
+            private ISerializedAggregateEvaluator[] aggs = new ISerializedAggregateEvaluator[aggFactories.length];
             private int offsetFieldIndex = keys.length;
             private int stateFieldLength[] = new int[aggFactories.length];
 
@@ -70,7 +70,7 @@
                     try {
                         int begin = tb.getSize();
                         if (aggs[i] == null) {
-                            aggs[i] = aggFactories[i].createAggregateFunction();
+                            aggs[i] = aggFactories[i].createAggregateEvaluator(ctx);
                         }
                         aggs[i].init(output);
                         tb.addFieldEndOffset();
@@ -113,12 +113,12 @@
             }
 
             @Override
-            public boolean outputPartialResult(ArrayTupleBuilder tb, IFrameTupleAccessor accessor, int tIndex,
+            public boolean outputPartialResult(ArrayTupleBuilder tb, IFrameTupleAccessor stateAccessor, int tIndex,
                     AggregateState state) throws HyracksDataException {
-                byte[] data = accessor.getBuffer().array();
-                int startOffset = accessor.getTupleStartOffset(tIndex);
-                int aggFieldOffset = accessor.getFieldStartOffset(tIndex, offsetFieldIndex);
-                int refOffset = startOffset + accessor.getFieldSlotsLength() + aggFieldOffset;
+                byte[] data = stateAccessor.getBuffer().array();
+                int startOffset = stateAccessor.getTupleStartOffset(tIndex);
+                int aggFieldOffset = stateAccessor.getFieldStartOffset(tIndex, offsetFieldIndex);
+                int refOffset = startOffset + stateAccessor.getFieldSlotsLength() + aggFieldOffset;
                 int start = refOffset;
                 for (int i = 0; i < aggs.length; i++) {
                     try {
@@ -133,12 +133,12 @@
             }
 
             @Override
-            public boolean outputFinalResult(ArrayTupleBuilder tb, IFrameTupleAccessor accessor, int tIndex,
+            public boolean outputFinalResult(ArrayTupleBuilder tb, IFrameTupleAccessor stateAccessor, int tIndex,
                     AggregateState state) throws HyracksDataException {
-                byte[] data = accessor.getBuffer().array();
-                int startOffset = accessor.getTupleStartOffset(tIndex);
-                int aggFieldOffset = accessor.getFieldStartOffset(tIndex, offsetFieldIndex);
-                int refOffset = startOffset + accessor.getFieldSlotsLength() + aggFieldOffset;
+                byte[] data = stateAccessor.getBuffer().array();
+                int startOffset = stateAccessor.getTupleStartOffset(tIndex);
+                int aggFieldOffset = stateAccessor.getFieldStartOffset(tIndex, offsetFieldIndex);
+                int refOffset = startOffset + stateAccessor.getFieldSlotsLength() + aggFieldOffset;
                 int start = refOffset;
                 for (int i = 0; i < aggs.length; i++) {
                     try {
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SimpleAlgebricksAccumulatingAggregatorFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SimpleAlgebricksAccumulatingAggregatorFactory.java
index b3912ee..13e3646 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SimpleAlgebricksAccumulatingAggregatorFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/aggreg/SimpleAlgebricksAccumulatingAggregatorFactory.java
@@ -90,8 +90,8 @@
             }
 
             @Override
-            public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
-                    AggregateState state) throws HyracksDataException {
+            public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor,
+                    int tIndex, AggregateState state) throws HyracksDataException {
                 IAggregateEvaluator[] agg = (IAggregateEvaluator[]) state.state;
                 for (int i = 0; i < agg.length; i++) {
                     try {
@@ -123,7 +123,7 @@
             }
 
             @Override
-            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor,
+            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor,
                     int tIndex, AggregateState state) throws HyracksDataException {
                 IAggregateEvaluator[] agg = (IAggregateEvaluator[]) state.state;
                 for (int i = 0; i < agg.length; i++) {
@@ -144,4 +144,4 @@
 
         };
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
index 7fd1d05..e94f4b7 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/AbstractOneInputOneOutputOneFramePushRuntime.java
@@ -51,13 +51,16 @@
 
     @Override
     public void close() throws HyracksDataException {
-        flushIfNotFailed();
-        writer.close();
+        try {
+            flushIfNotFailed();
+        } finally {
+            writer.close();
+        }
     }
 
     protected void flushAndReset() throws HyracksDataException {
         if (appender.getTupleCount() > 0) {
-            appender.flush(writer, true);
+            appender.write(writer, true);
         }
     }
 
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/SinkRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/SinkRuntimeFactory.java
index 69876b0..d1fb703 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/SinkRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/base/SinkRuntimeFactory.java
@@ -57,6 +57,11 @@
             @Override
             public void close() throws HyracksDataException {
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                // flush() is meaningless for sink operators
+            }
         };
     }
 
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/group/MicroPreClusteredGroupRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/group/MicroPreClusteredGroupRuntimeFactory.java
index b7a73d4..2368a9c 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/group/MicroPreClusteredGroupRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/group/MicroPreClusteredGroupRuntimeFactory.java
@@ -29,7 +29,6 @@
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupWriter;
 
@@ -90,6 +89,11 @@
             public void close() throws HyracksDataException {
                 pgw.close();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                pgw.flush();
+            }
         };
 
     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/AlgebricksMetaOperatorDescriptor.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/AlgebricksMetaOperatorDescriptor.java
index 6618326..f2afe98 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/AlgebricksMetaOperatorDescriptor.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/AlgebricksMetaOperatorDescriptor.java
@@ -20,9 +20,6 @@
 
 import java.nio.ByteBuffer;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.runtime.base.AlgebricksPipeline;
 import org.apache.hyracks.algebricks.runtime.base.IPushRuntimeFactory;
@@ -36,6 +33,8 @@
 import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputUnaryOutputOperatorNodePushable;
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
+import org.json.JSONException;
+import org.json.JSONObject;
 
 public class AlgebricksMetaOperatorDescriptor extends AbstractSingleActivityOperatorDescriptor {
 
@@ -93,10 +92,11 @@
             final IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         return new AbstractUnaryOutputSourceOperatorNodePushable() {
 
+            @Override
             public void initialize() throws HyracksDataException {
                 IFrameWriter startOfPipeline;
-                RecordDescriptor pipelineOutputRecordDescriptor = outputArity > 0 ? AlgebricksMetaOperatorDescriptor.this.recordDescriptors[0]
-                        : null;
+                RecordDescriptor pipelineOutputRecordDescriptor = outputArity > 0
+                        ? AlgebricksMetaOperatorDescriptor.this.recordDescriptors[0] : null;
 
                 PipelineAssembler pa = new PipelineAssembler(pipeline, inputArity, outputArity, null,
                         pipelineOutputRecordDescriptor);
@@ -105,8 +105,16 @@
                 } catch (AlgebricksException e) {
                     throw new HyracksDataException(e);
                 }
-                startOfPipeline.open();
-                startOfPipeline.close();
+                try {
+                    startOfPipeline.open();
+                } catch (HyracksDataException e) {
+                    // Tell the downstream the job fails.
+                    startOfPipeline.fail();
+                    // Throws the exception.
+                    throw e;
+                } finally {
+                    startOfPipeline.close();
+                }
             }
         };
     }
@@ -120,10 +128,10 @@
             @Override
             public void open() throws HyracksDataException {
                 if (startOfPipeline == null) {
-                    RecordDescriptor pipelineOutputRecordDescriptor = outputArity > 0 ? AlgebricksMetaOperatorDescriptor.this.recordDescriptors[0]
-                            : null;
-                    RecordDescriptor pipelineInputRecordDescriptor = recordDescProvider.getInputRecordDescriptor(
-                            AlgebricksMetaOperatorDescriptor.this.getActivityId(), 0);
+                    RecordDescriptor pipelineOutputRecordDescriptor = outputArity > 0
+                            ? AlgebricksMetaOperatorDescriptor.this.recordDescriptors[0] : null;
+                    RecordDescriptor pipelineInputRecordDescriptor = recordDescProvider
+                            .getInputRecordDescriptor(AlgebricksMetaOperatorDescriptor.this.getActivityId(), 0);
                     PipelineAssembler pa = new PipelineAssembler(pipeline, inputArity, outputArity,
                             pipelineInputRecordDescriptor, pipelineOutputRecordDescriptor);
                     try {
@@ -149,6 +157,11 @@
             public void fail() throws HyracksDataException {
                 startOfPipeline.fail();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                startOfPipeline.flush();
+            }
         };
     }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
index f10151e..ac9bae2 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/meta/SubplanRuntimeFactory.java
@@ -116,6 +116,7 @@
                         appendNullsToTuple();
                         appendToFrameFromTupleBuilder(tb);
                     }
+
                 }
 
                 @Override
@@ -135,7 +136,6 @@
                         tb.addFieldEndOffset();
                     }
                 }
-
             }
 
             IFrameWriter endPipe = new TupleOuterProduct();
@@ -146,11 +146,11 @@
 
             @Override
             public void open() throws HyracksDataException {
+                writer.open();
                 if (first) {
                     first = false;
                     initAccessAppendRef(ctx);
                 }
-                writer.open();
             }
 
             @Override
@@ -164,6 +164,11 @@
                     startOfPipeline.close();
                 }
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                writer.flush();
+            }
         };
     }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/sort/InMemorySortRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/sort/InMemorySortRuntimeFactory.java
index 291b92d..df05d50 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/sort/InMemorySortRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/sort/InMemorySortRuntimeFactory.java
@@ -28,11 +28,12 @@
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.FrameFreeSlotPolicyFactory;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFrameMemoryManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFramePool;
 import org.apache.hyracks.dataflow.std.sort.FrameSorterMergeSort;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.FrameFreeSlotLastFit;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameBufferManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFramePool;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFrameMemoryManager;
 
 public class InMemorySortRuntimeFactory extends AbstractOneInputOneOutputRuntimeFactory {
 
@@ -64,15 +65,15 @@
 
             @Override
             public void open() throws HyracksDataException {
+                writer.open();
                 if (frameSorter == null) {
                     IFrameBufferManager manager = new VariableFrameMemoryManager(
                             new VariableFramePool(ctx, VariableFramePool.UNLIMITED_MEMORY),
-                            new FrameFreeSlotLastFit());
+                            FrameFreeSlotPolicyFactory.createFreeSlotPolicy(EnumFreeSlotPolicy.LAST_FIT));
                     frameSorter = new FrameSorterMergeSort(ctx, manager, sortFields, firstKeyNormalizerFactory,
                             comparatorFactories, outputRecordDesc);
                 }
                 frameSorter.reset();
-                writer.open();
             }
 
             @Override
@@ -87,9 +88,12 @@
 
             @Override
             public void close() throws HyracksDataException {
-                frameSorter.sort();
-                frameSorter.flush(writer);
-                writer.close();
+                try {
+                    frameSorter.sort();
+                    frameSorter.flush(writer);
+                } finally {
+                    writer.close();
+                }
             }
         };
     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java
index 9c8a35c..50706bd 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java
@@ -96,6 +96,7 @@
             private IScalarEvaluator[] eval = new IScalarEvaluator[evalFactories.length];
             private ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(projectionList.length);
             private boolean first = true;
+            private boolean isOpen = false;
 
             @Override
             public void open() throws HyracksDataException {
@@ -111,10 +112,18 @@
                         }
                     }
                 }
+                isOpen = true;
                 writer.open();
             }
 
             @Override
+            public void close() throws HyracksDataException {
+                if (isOpen) {
+                    super.close();
+                }
+            }
+
+            @Override
             public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
                 tAccess.reset(buffer);
                 int nTuple = tAccess.getTupleCount();
@@ -130,8 +139,8 @@
                 tRef.reset(tAccess, t);
                 produceTuple(tupleBuilder, tAccess, t, tRef);
                 if (flushFramesRapidly) {
-                    // Whenever all the tuples in the incoming frame have been consumed, the assign operator 
-                    // will push its frame to the next operator; i.e., it won't wait until the frame gets full. 
+                    // Whenever all the tuples in the incoming frame have been consumed, the assign operator
+                    // will push its frame to the next operator; i.e., it won't wait until the frame gets full.
                     appendToFrameFromTupleBuilder(tupleBuilder, true);
                 } else {
                     appendToFrameFromTupleBuilder(tupleBuilder);
@@ -158,7 +167,14 @@
 
             @Override
             public void fail() throws HyracksDataException {
-                writer.fail();
+                if (isOpen) {
+                    writer.fail();
+                }
+            }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
             }
         };
     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/EmptyTupleSourceRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/EmptyTupleSourceRuntimeFactory.java
index b5d717a..2b7c2da 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/EmptyTupleSourceRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/EmptyTupleSourceRuntimeFactory.java
@@ -43,8 +43,8 @@
     public IPushRuntime createPushRuntime(final IHyracksTaskContext ctx) throws HyracksDataException {
         return new AbstractOneInputSourcePushRuntime() {
 
-            private ArrayTupleBuilder tb = new ArrayTupleBuilder(0);
-            private FrameTupleAppender appender = new FrameTupleAppender(new VSizeFrame(ctx));
+            private final ArrayTupleBuilder tb = new ArrayTupleBuilder(0);
+            private final FrameTupleAppender appender = new FrameTupleAppender(new VSizeFrame(ctx));
 
             @Override
             public void open() throws HyracksDataException {
@@ -52,10 +52,18 @@
                 if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
                     throw new IllegalStateException();
                 }
-                appender.flush(writer, true);
+                appender.write(writer, true);
+            }
+
+            @Override
+            public void close() throws HyracksDataException {
                 writer.close();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
+            }
         };
     }
-
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/NestedTupleSourceRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/NestedTupleSourceRuntimeFactory.java
index 5fcb9ef..e123adf 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/NestedTupleSourceRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/NestedTupleSourceRuntimeFactory.java
@@ -69,8 +69,9 @@
             writer.fail();
         }
 
-        public void forceFlush() throws HyracksDataException {
-            appender.flush(writer, true);
+        @Override
+        public void flush() throws HyracksDataException {
+            writer.flush();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PartitioningSplitOperatorDescriptor.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PartitioningSplitOperatorDescriptor.java
index 83d0c61..2d5c929 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PartitioningSplitOperatorDescriptor.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PartitioningSplitOperatorDescriptor.java
@@ -24,8 +24,8 @@
 
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IBinaryBooleanInspector;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.VSizeFrame;
@@ -35,7 +35,8 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
@@ -48,12 +49,13 @@
     private static final long serialVersionUID = 1L;
     public static int NO_DEFAULT_BRANCH = -1;
 
-    private final ICopyEvaluatorFactory[] evalFactories;
+    private final IScalarEvaluatorFactory[] evalFactories;
     private final IBinaryBooleanInspector boolInspector;
     private final int defaultBranchIndex;
 
-    public PartitioningSplitOperatorDescriptor(IOperatorDescriptorRegistry spec, ICopyEvaluatorFactory[] evalFactories,
-            IBinaryBooleanInspector boolInspector, int defaultBranchIndex, RecordDescriptor rDesc) {
+    public PartitioningSplitOperatorDescriptor(IOperatorDescriptorRegistry spec,
+            IScalarEvaluatorFactory[] evalFactories, IBinaryBooleanInspector boolInspector, int defaultBranchIndex,
+            RecordDescriptor rDesc) {
         super(spec, 1, (defaultBranchIndex == evalFactories.length) ? evalFactories.length + 1 : evalFactories.length);
         for (int i = 0; i < evalFactories.length; i++) {
             recordDescriptors[i] = rDesc;
@@ -66,12 +68,13 @@
     @Override
     public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
             final IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         return new AbstractUnaryInputOperatorNodePushable() {
             private final IFrameWriter[] writers = new IFrameWriter[outputArity];
+            private final boolean[] isOpen = new boolean[outputArity];
             private final IFrame[] writeBuffers = new IFrame[outputArity];
-            private final ICopyEvaluator[] evals = new ICopyEvaluator[outputArity];
-            private final ArrayBackedValueStorage evalBuf = new ArrayBackedValueStorage();
+            private final IScalarEvaluator[] evals = new IScalarEvaluator[outputArity];
+            private final IPointable evalPointable = new VoidPointable();
             private final RecordDescriptor inOutRecDesc = recordDescProvider.getInputRecordDescriptor(getActivityId(),
                     0);
             private final FrameTupleAccessor accessor = new FrameTupleAccessor(inOutRecDesc);
@@ -83,19 +86,59 @@
 
             @Override
             public void close() throws HyracksDataException {
-                // Flush (possibly not full) buffers that have data, and close writers.
+                HyracksDataException hde = null;
+                for (int i = 0; i < outputArity; i++) {
+                    if (isOpen[i]) {
+                        try {
+                            tupleAppender.reset(writeBuffers[i], false);
+                            tupleAppender.write(writers[i], false);
+                        } catch (Throwable th) {
+                            if (hde == null) {
+                                hde = new HyracksDataException();
+                            }
+                            hde.addSuppressed(th);
+                        } finally {
+                            try {
+                                writers[i].close();
+                            } catch (Throwable th) {
+                                if (hde == null) {
+                                    hde = new HyracksDataException();
+                                }
+                                hde.addSuppressed(th);
+                            }
+                        }
+                    }
+                }
+                if (hde != null) {
+                    throw hde;
+                }
+            }
+
+            @Override
+            public void flush() throws HyracksDataException {
                 for (int i = 0; i < outputArity; i++) {
                     tupleAppender.reset(writeBuffers[i], false);
-                    // ? by JF why didn't clear the buffer ?
-                    tupleAppender.flush(writers[i], false);
-                    writers[i].close();
+                    tupleAppender.flush(writers[i]);
                 }
             }
 
             @Override
             public void fail() throws HyracksDataException {
-                for (IFrameWriter writer : writers) {
-                    writer.fail();
+                HyracksDataException hde = null;
+                for (int i = 0; i < outputArity; i++) {
+                    if (isOpen[i]) {
+                        try {
+                            writers[i].fail();
+                        } catch (Throwable th) {
+                            if (hde == null) {
+                                hde = new HyracksDataException();
+                            }
+                            hde.addSuppressed(th);
+                        }
+                    }
+                }
+                if (hde != null) {
+                    throw hde;
                 }
             }
 
@@ -108,12 +151,12 @@
                     boolean found = false;
                     for (int j = 0; j < evals.length; j++) {
                         try {
-                            evalBuf.reset();
-                            evals[j].evaluate(frameTuple);
+                            evals[j].evaluate(frameTuple, evalPointable);
                         } catch (AlgebricksException e) {
                             throw new HyracksDataException(e);
                         }
-                        found = boolInspector.getBooleanValue(evalBuf.getByteArray(), 0, 1);
+                        found = boolInspector.getBooleanValue(evalPointable.getByteArray(),
+                                evalPointable.getStartOffset(), evalPointable.getLength());
                         if (found) {
                             copyAndAppendTuple(j);
                             break;
@@ -138,14 +181,16 @@
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }
+                tupleAppender.reset(writeBuffers[outputIndex], false);
                 FrameUtils.appendToWriter(writers[outputIndex], tupleAppender, tupleBuilder.getFieldEndOffsets(),
                         tupleBuilder.getByteArray(), 0, tupleBuilder.getSize());
             }
 
             @Override
             public void open() throws HyracksDataException {
-                for (IFrameWriter writer : writers) {
-                    writer.open();
+                for (int i = 0; i < writers.length; i++) {
+                    isOpen[i] = true;
+                    writers[i].open();
                 }
                 // Create write buffers.
                 for (int i = 0; i < outputArity; i++) {
@@ -156,7 +201,7 @@
                 // Create evaluators for partitioning.
                 try {
                     for (int i = 0; i < evalFactories.length; i++) {
-                        evals[i] = evalFactories[i].createEvaluator(evalBuf);
+                        evals[i] = evalFactories[i].createScalarEvaluator(ctx);
                     }
                 } catch (AlgebricksException e) {
                     throw new HyracksDataException(e);
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PrinterRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PrinterRuntimeFactory.java
index b77f7b8..021784a 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PrinterRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/PrinterRuntimeFactory.java
@@ -59,6 +59,6 @@
     public IPushRuntime createPushRuntime(IHyracksTaskContext ctx) {
         IAWriter w = PrinterBasedWriterFactory.INSTANCE.createWriter(printColumns, System.out, printerFactories,
                 inputRecordDesc);
-        return new SinkWriterRuntime(w, ctx, System.out, inputRecordDesc);
+        return new SinkWriterRuntime(w, System.out, inputRecordDesc);
     }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/RunningAggregateRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/RunningAggregateRuntimeFactory.java
index 34bd1e0..bb6cc73 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/RunningAggregateRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/RunningAggregateRuntimeFactory.java
@@ -90,6 +90,7 @@
             private final IRunningAggregateEvaluator[] raggs = new IRunningAggregateEvaluator[runningAggregates.length];
             private final ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(projectionList.length);
             private boolean first = true;
+            private boolean isOpen = false;
 
             @Override
             public void open() throws HyracksDataException {
@@ -99,7 +100,7 @@
                     int n = runningAggregates.length;
                     for (int i = 0; i < n; i++) {
                         try {
-                            raggs[i] = runningAggregates[i].createRunningAggregateEvaluator();
+                            raggs[i] = runningAggregates[i].createRunningAggregateEvaluator(ctx);
                         } catch (AlgebricksException ae) {
                             throw new HyracksDataException(ae);
                         }
@@ -112,10 +113,25 @@
                         throw new HyracksDataException(ae);
                     }
                 }
+                isOpen = true;
                 writer.open();
             }
 
             @Override
+            public void close() throws HyracksDataException {
+                if (isOpen) {
+                    super.close();
+                }
+            }
+
+            @Override
+            public void fail() throws HyracksDataException {
+                if (isOpen) {
+                    super.fail();
+                }
+            }
+
+            @Override
             public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
                 tAccess.reset(buffer);
                 int nTuple = tAccess.getTupleCount();
@@ -144,6 +160,10 @@
                 }
             }
 
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
+            }
         };
     }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntime.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntime.java
index c069e4c..ebf3d3a 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntime.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntime.java
@@ -21,17 +21,14 @@
 import java.io.PrintStream;
 import java.nio.ByteBuffer;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IAWriter;
 import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputSinkPushRuntime;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 
 public class SinkWriterRuntime extends AbstractOneInputSinkPushRuntime {
 
-    private final IHyracksTaskContext ctx;
     private final PrintStream printStream;
     private final IAWriter writer;
     private RecordDescriptor inputRecordDesc;
@@ -39,18 +36,16 @@
     private boolean autoClose = false;
     private boolean first = true;
 
-    public SinkWriterRuntime(IAWriter writer, IHyracksTaskContext ctx, PrintStream printStream,
-            RecordDescriptor inputRecordDesc) {
+    public SinkWriterRuntime(IAWriter writer, PrintStream printStream, RecordDescriptor inputRecordDesc) {
         this.writer = writer;
-        this.ctx = ctx;
         this.printStream = printStream;
         this.inputRecordDesc = inputRecordDesc;
         this.tAccess = new FrameTupleAccessor(inputRecordDesc);
     }
 
-    public SinkWriterRuntime(IAWriter writer, IHyracksTaskContext ctx, PrintStream printStream,
-            RecordDescriptor inputRecordDesc, boolean autoClose) {
-        this(writer, ctx, printStream, inputRecordDesc);
+    public SinkWriterRuntime(IAWriter writer, PrintStream printStream, RecordDescriptor inputRecordDesc,
+            boolean autoClose) {
+        this(writer, printStream, inputRecordDesc);
         this.autoClose = autoClose;
     }
 
@@ -59,11 +54,7 @@
         if (first) {
             first = false;
             tAccess = new FrameTupleAccessor(inputRecordDesc);
-            try {
-                writer.init();
-            } catch (AlgebricksException e) {
-                throw new HyracksDataException(e);
-            }
+            writer.init();
         }
     }
 
@@ -72,11 +63,7 @@
         tAccess.reset(buffer);
         int nTuple = tAccess.getTupleCount();
         for (int t = 0; t < nTuple; t++) {
-            try {
-                writer.printTuple(tAccess, t);
-            } catch (AlgebricksException ae) {
-                throw new HyracksDataException(ae);
-            }
+            writer.printTuple(tAccess, t);
         }
     }
 
@@ -95,4 +82,9 @@
     @Override
     public void fail() throws HyracksDataException {
     }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        // flush() makes no sense to sink operators
+    }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java
index 3f66e23..62e3542 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SinkWriterRuntimeFactory.java
@@ -75,6 +75,6 @@
             throw new AlgebricksException(e);
         }
         IAWriter w = writerFactory.createWriter(fields, filePrintStream, printerFactories, inputRecordDesc);
-        return new SinkWriterRuntime(w, ctx, filePrintStream, inputRecordDesc, true);
+        return new SinkWriterRuntime(w, filePrintStream, inputRecordDesc, true);
     }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamLimitRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamLimitRuntimeFactory.java
index 5605485..11f47ac 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamLimitRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamLimitRuntimeFactory.java
@@ -73,7 +73,7 @@
 
             @Override
             public void open() throws HyracksDataException {
-                // if (first) {
+                writer.open();
                 if (evalMaxObjects == null) {
                     initAccessAppendRef(ctx);
                     try {
@@ -85,14 +85,12 @@
                         throw new HyracksDataException(ae);
                     }
                 }
-                writer.open();
                 afterLastTuple = false;
             }
 
             @Override
             public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
                 if (afterLastTuple) {
-                    // ignore the data
                     return;
                 }
                 tAccess.reset(buffer);
@@ -123,7 +121,6 @@
                             appendTupleToFrame(t);
                         }
                     } else {
-                        // close();
                         afterLastTuple = true;
                         break;
                     }
@@ -136,9 +133,7 @@
                 toSkip = 0; // how many tuples still to skip
                 firstTuple = true;
                 afterLastTuple = false;
-                // if (!afterLastTuple) {
                 super.close();
-                // }
             }
 
             private int evaluateInteger(IScalarEvaluator eval, int tIdx) throws HyracksDataException {
@@ -152,7 +147,11 @@
                 return lim;
             }
 
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
+            }
+
         };
     }
-
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamProjectRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamProjectRuntimeFactory.java
index 34754b4..43c63b5 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamProjectRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamProjectRuntimeFactory.java
@@ -56,32 +56,40 @@
 
             @Override
             public void open() throws HyracksDataException {
+                writer.open();
                 if (first) {
                     first = false;
                     initAccessAppend(ctx);
                 }
-                writer.open();
             }
 
             @Override
             public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+                // what if numOfTuples is 0?
                 tAccess.reset(buffer);
                 int nTuple = tAccess.getTupleCount();
-
-                int t = 0;
-                if (nTuple > 1) {
-                    for (; t < nTuple - 1; t++) {
+                if (nTuple == 0) {
+                    appender.flush(writer);
+                } else {
+                    int t = 0;
+                    if (nTuple > 1) {
+                        for (; t < nTuple - 1; t++) {
+                            appendProjectionToFrame(t, projectionList);
+                        }
+                    }
+                    if (flushFramesRapidly) {
+                        // Whenever all the tuples in the incoming frame have been consumed, the project operator
+                        // will push its frame to the next operator; i.e., it won't wait until the frame gets full.
+                        appendProjectionToFrame(t, projectionList, true);
+                    } else {
                         appendProjectionToFrame(t, projectionList);
                     }
                 }
-                if (flushFramesRapidly) {
-                    // Whenever all the tuples in the incoming frame have been consumed, the project operator
-                    // will push its frame to the next operator; i.e., it won't wait until the frame gets full.
-                    appendProjectionToFrame(t, projectionList, true);
-                } else {
-                    appendProjectionToFrame(t, projectionList);
-                }
+            }
 
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
             }
 
         };
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamSelectRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamSelectRuntimeFactory.java
index 416c398..5eb4604 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamSelectRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StreamSelectRuntimeFactory.java
@@ -53,7 +53,8 @@
 
     /**
      * @param cond
-     * @param projectionList               if projectionList is null, then no projection is performed
+     * @param projectionList
+     *            if projectionList is null, then no projection is performed
      * @param retainNull
      * @param nullPlaceholderVariableIndex
      * @param nullWriterFactory
@@ -83,6 +84,7 @@
             private IScalarEvaluator eval;
             private INullWriter nullWriter = null;
             private ArrayTupleBuilder nullTupleBuilder = null;
+            private boolean isOpen = false;
 
             @Override
             public void open() throws HyracksDataException {
@@ -94,6 +96,7 @@
                         throw new HyracksDataException(ae);
                     }
                 }
+                isOpen = true;
                 writer.open();
 
                 //prepare nullTupleBuilder
@@ -107,6 +110,24 @@
             }
 
             @Override
+            public void fail() throws HyracksDataException {
+                if (isOpen) {
+                    super.fail();
+                }
+            }
+
+            @Override
+            public void close() throws HyracksDataException {
+                if (isOpen) {
+                    try {
+                        flushIfNotFailed();
+                    } finally {
+                        writer.close();
+                    }
+                }
+            }
+
+            @Override
             public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
                 tAccess.reset(buffer);
                 int nTuple = tAccess.getTupleCount();
@@ -136,6 +157,11 @@
                     }
                 }
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
+            }
         };
     }
 
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java
index 395d321..36d3349 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/StringStreamingRuntimeFactory.java
@@ -155,11 +155,7 @@
                 for (int t = 0; t < nTuple; t++) {
                     tRef.reset(tAccess, t);
                     for (int i = 0; i < printers.length; i++) {
-                        try {
-                            printers[i].print(buffer.array(), tRef.getFieldStart(i), tRef.getFieldLength(i), ps);
-                        } catch (AlgebricksException e) {
-                            throw new HyracksDataException(e);
-                        }
+                        printers[i].print(buffer.array(), tRef.getFieldStart(i), tRef.getFieldLength(i), ps);
                         ps.print(fieldDelimiter);
                         if (i == printers.length - 1) {
                             ps.print('\n');
@@ -188,6 +184,11 @@
                 // close the following operator in the chain
                 super.close();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                ps.flush();
+            }
         };
     }
 }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
index 8850436..e9d4ec3 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/UnnestRuntimeFactory.java
@@ -27,7 +27,7 @@
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
-import org.apache.hyracks.algebricks.runtime.evaluators.ConstantEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.evaluators.ConstantEvalFactory;
 import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime;
 import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputRuntimeFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -36,7 +36,6 @@
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class UnnestRuntimeFactory extends AbstractOneInputOneOutputRuntimeFactory {
 
@@ -74,7 +73,7 @@
         this.positionWriter = positionWriter;
         this.posOffsetEvalFactory = posOffsetEvalFactory;
         if (this.posOffsetEvalFactory == null) {
-            this.posOffsetEvalFactory = new ConstantEvaluatorFactory(new byte[5]);
+            this.posOffsetEvalFactory = new ConstantEvalFactory(new byte[5]);
         }
     }
 
@@ -89,21 +88,21 @@
 
         return new AbstractOneInputOneOutputOneFramePushRuntime() {
             private IPointable p = VoidPointable.FACTORY.createPointable();
-            private IUnnestingEvaluator agg;
+            private IUnnestingEvaluator unnest;
             private ArrayTupleBuilder tupleBuilder;
 
             private IScalarEvaluator offsetEval = posOffsetEvalFactory.createScalarEvaluator(ctx);
 
             @Override
             public void open() throws HyracksDataException {
+                writer.open();
                 initAccessAppendRef(ctx);
                 try {
-                    agg = unnestingFactory.createUnnestingEvaluator(ctx);
+                    unnest = unnestingFactory.createUnnestingEvaluator(ctx);
                 } catch (AlgebricksException ae) {
                     throw new HyracksDataException(ae);
                 }
                 tupleBuilder = new ArrayTupleBuilder(projectionList.length);
-                writer.open();
             }
 
             @Override
@@ -112,18 +111,14 @@
                 int nTuple = tAccess.getTupleCount();
                 for (int t = 0; t < nTuple; t++) {
                     tRef.reset(tAccess, t);
-
                     try {
                         offsetEval.evaluate(tRef, p);
                     } catch (AlgebricksException e) {
                         throw new HyracksDataException(e);
                     }
-
-                    @SuppressWarnings("static-access")
                     int offset = IntegerPointable.getInteger(p.getByteArray(), p.getStartOffset());
-
                     try {
-                        agg.init(tRef);
+                        unnest.init(tRef);
                         // assume that when unnesting the tuple, each step() call for each element
                         // in the tuple will increase the positionIndex, and the positionIndex will
                         // be reset when a new tuple is to be processed.
@@ -131,7 +126,7 @@
                         boolean goon = true;
                         do {
                             tupleBuilder.reset();
-                            if (!agg.step(p)) {
+                            if (!unnest.step(p)) {
                                 goon = false;
                             } else {
 
@@ -164,6 +159,11 @@
                     }
                 }
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                appender.flush(writer);
+            }
         };
     }
 
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/serializer/ResultSerializerFactoryProvider.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/serializer/ResultSerializerFactoryProvider.java
index aa1fa6d..0e49d22 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/serializer/ResultSerializerFactoryProvider.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/serializer/ResultSerializerFactoryProvider.java
@@ -21,7 +21,6 @@
 import java.io.PrintStream;
 import java.nio.BufferOverflowException;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IAWriter;
 import org.apache.hyracks.algebricks.data.IAWriterFactory;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
@@ -56,11 +55,7 @@
 
                     @Override
                     public void init() throws HyracksDataException {
-                        try {
-                            writer.init();
-                        } catch (AlgebricksException e) {
-                            throw new HyracksDataException(e);
-                        }
+                        writer.init();
                     }
 
                     @Override
@@ -69,8 +64,6 @@
                             writer.printTuple(tAccess, tIdx);
                         } catch (BufferOverflowException e) {
                             return false;
-                        } catch (AlgebricksException e) {
-                            throw new HyracksDataException(e);
                         }
                         return true;
                     }
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java
index bad2d3e..015ce73 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/PrinterBasedWriterFactory.java
@@ -20,13 +20,13 @@
 
 import java.io.PrintStream;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IAWriter;
 import org.apache.hyracks.algebricks.data.IAWriterFactory;
 import org.apache.hyracks.algebricks.data.IPrinter;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class PrinterBasedWriterFactory implements IAWriterFactory {
 
@@ -48,14 +48,14 @@
         return new IAWriter() {
 
             @Override
-            public void init() throws AlgebricksException {
+            public void init() throws HyracksDataException {
                 for (int i = 0; i < printers.length; i++) {
                     printers[i].init();
                 }
             }
 
             @Override
-            public void printTuple(IFrameTupleAccessor tAccess, int tIdx) throws AlgebricksException {
+            public void printTuple(IFrameTupleAccessor tAccess, int tIdx) throws HyracksDataException {
                 for (int i = 0; i < fields.length; i++) {
                     int fldStart = tAccess.getTupleStartOffset(tIdx) + tAccess.getFieldSlotsLength()
                             + tAccess.getFieldStartOffset(tIdx, fields[i]);
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java
index b01237e..585506f 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/writers/SerializedDataWriterFactory.java
@@ -23,12 +23,12 @@
 import java.io.ObjectOutputStream;
 import java.io.PrintStream;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.data.IAWriter;
 import org.apache.hyracks.algebricks.data.IAWriterFactory;
 import org.apache.hyracks.algebricks.data.IPrinterFactory;
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class SerializedDataWriterFactory implements IAWriterFactory {
 
@@ -40,7 +40,7 @@
         return new IAWriter() {
 
             @Override
-            public void init() throws AlgebricksException {
+            public void init() throws HyracksDataException {
                 // dump the SerializerDeserializers to disk
                 try {
                     ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -49,12 +49,12 @@
                     baos.writeTo(ps);
                     oos.close();
                 } catch (IOException e) {
-                    throw new AlgebricksException(e);
+                    throw new HyracksDataException(e);
                 }
             }
 
             @Override
-            public void printTuple(IFrameTupleAccessor tAccess, int tIdx) throws AlgebricksException {
+            public void printTuple(IFrameTupleAccessor tAccess, int tIdx) throws HyracksDataException {
                 for (int i = 0; i < fields.length; i++) {
                     int fldStart = tAccess.getTupleStartOffset(tIdx) + tAccess.getFieldSlotsLength()
                             + tAccess.getFieldStartOffset(tIdx, fields[i]);
diff --git a/algebricks/algebricks-tests/pom.xml b/algebricks/algebricks-tests/pom.xml
index f99a786..b60b135 100644
--- a/algebricks/algebricks-tests/pom.xml
+++ b/algebricks/algebricks-tests/pom.xml
@@ -44,17 +44,6 @@
   <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>
-          <fork>true</fork>
-	  <encoding>UTF-8</encoding>
-	</configuration>
-      </plugin>
-      <plugin>
         <artifactId>maven-antrun-plugin</artifactId>
         <executions>
           <execution>
diff --git a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java
index fd979fc..f7a97f4 100644
--- a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java
+++ b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerAddEvalFactory.java
@@ -29,7 +29,6 @@
 import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class IntegerAddEvalFactory implements IScalarEvaluatorFactory {
 
@@ -52,7 +51,6 @@
             private IScalarEvaluator evalLeft = evalLeftFactory.createScalarEvaluator(ctx);
             private IScalarEvaluator evalRight = evalRightFactory.createScalarEvaluator(ctx);
 
-            @SuppressWarnings("static-access")
             @Override
             public void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
                 evalLeft.evaluate(tuple, p);
diff --git a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerConstantEvalFactory.java b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerConstantEvalFactory.java
index dc8f832..fe5bbf6 100644
--- a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerConstantEvalFactory.java
+++ b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerConstantEvalFactory.java
@@ -63,4 +63,4 @@
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerEqualsEvalFactory.java b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerEqualsEvalFactory.java
index ea415c8..106f611 100644
--- a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerEqualsEvalFactory.java
+++ b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerEqualsEvalFactory.java
@@ -27,7 +27,6 @@
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class IntegerEqualsEvalFactory implements IScalarEvaluatorFactory {
 
@@ -59,4 +58,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerGreaterThanEvalFactory.java b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerGreaterThanEvalFactory.java
index aebc406..400dd23 100644
--- a/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerGreaterThanEvalFactory.java
+++ b/algebricks/algebricks-tests/src/main/java/org/apache/hyracks/algebricks/tests/pushruntime/IntegerGreaterThanEvalFactory.java
@@ -27,7 +27,6 @@
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.data.std.primitive.VoidPointable;
 import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 
 public class IntegerGreaterThanEvalFactory implements IScalarEvaluatorFactory {
 
@@ -59,4 +58,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java b/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java
index 3c97878..0dc1961 100644
--- a/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java
+++ b/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/pushruntime/PushRuntimeTest.java
@@ -46,7 +46,6 @@
 import org.apache.hyracks.algebricks.runtime.evaluators.TupleFieldEvaluatorFactory;
 import org.apache.hyracks.algebricks.runtime.operators.aggreg.AggregateRuntimeFactory;
 import org.apache.hyracks.algebricks.runtime.operators.aggreg.NestedPlansAccumulatingAggregatorFactory;
-import org.apache.hyracks.algebricks.runtime.operators.aggreg.SimpleAlgebricksAccumulatingAggregatorFactory;
 import org.apache.hyracks.algebricks.runtime.operators.group.MicroPreClusteredGroupRuntimeFactory;
 import org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor;
 import org.apache.hyracks.algebricks.runtime.operators.meta.SubplanRuntimeFactory;
@@ -67,15 +66,12 @@
 import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
 import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
 import org.apache.hyracks.api.dataflow.value.INullWriterFactory;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.job.JobSpecification;
 import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
@@ -85,7 +81,6 @@
 import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.IntegerParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
-import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
 import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider;
 import org.apache.hyracks.dataflow.std.file.DelimitedDataTupleParserFactory;
@@ -93,8 +88,6 @@
 import org.apache.hyracks.dataflow.std.file.FileSplit;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 import org.apache.hyracks.dataflow.std.file.LineFileWriteOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
-import org.apache.hyracks.dataflow.std.group.hash.HashGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.misc.SplitOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.sort.InMemorySortOperatorDescriptor;
@@ -275,10 +268,10 @@
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(fileSplits);
 
         RecordDescriptor scannerDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), FloatSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
         IValueParserFactory[] valueParsers = new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, FloatParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
@@ -355,10 +348,10 @@
                 "data/tpch0.001/customer-part1.tbl")));
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(fileSplits);
         RecordDescriptor scannerDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), FloatSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
         IValueParserFactory[] valueParsers = new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, FloatParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
@@ -407,10 +400,10 @@
                 "data/tpch0.001/customer.tbl")));
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(fileSplits);
         RecordDescriptor scannerDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), FloatSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
         IValueParserFactory[] valueParsers = new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, FloatParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
@@ -483,75 +476,6 @@
     }
 
     @Test
-    public void scanHashGbySelectWrite() throws Exception {
-        JobSpecification spec = new JobSpecification(FRAME_SIZE);
-
-        // the scanner
-        FileSplit[] fileSplits = new FileSplit[1];
-        fileSplits[0] = new FileSplit(AlgebricksHyracksIntegrationUtil.NC1_ID, new FileReference(new File(
-                "data/tpch0.001/customer.tbl")));
-        IFileSplitProvider splitProvider = new ConstantFileSplitProvider(fileSplits);
-        RecordDescriptor scannerDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
-        IValueParserFactory[] valueParsers = new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
-                UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
-                UTF8StringParserFactory.INSTANCE, FloatParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                UTF8StringParserFactory.INSTANCE };
-        FileScanOperatorDescriptor scanner = new FileScanOperatorDescriptor(spec, splitProvider,
-                new DelimitedDataTupleParserFactory(valueParsers, '|'), scannerDesc);
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, scanner,
-                new String[] { AlgebricksHyracksIntegrationUtil.NC1_ID });
-
-        // the group-by
-        RecordDescriptor gbyDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
-        ITuplePartitionComputerFactory tpcf = new FieldHashPartitionComputerFactory(new int[] { 3 },
-                new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) });
-        IAggregateEvaluatorFactory[] aggFuns = new IAggregateEvaluatorFactory[] { new TupleCountAggregateFunctionFactory() };
-        IAggregatorDescriptorFactory aggFactory = new SimpleAlgebricksAccumulatingAggregatorFactory(aggFuns,
-                new int[] { 3 });
-        HashGroupOperatorDescriptor gby = new HashGroupOperatorDescriptor(spec, new int[] { 3 }, tpcf,
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
-                aggFactory, gbyDesc, 1024);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, gby,
-                new String[] { AlgebricksHyracksIntegrationUtil.NC1_ID });
-
-        // the algebricks op.
-        IScalarEvaluatorFactory cond = new IntegerEqualsEvalFactory(new IntegerConstantEvalFactory(3),
-                new TupleFieldEvaluatorFactory(0)); // Canadian customers
-        StreamSelectRuntimeFactory select = new StreamSelectRuntimeFactory(cond, new int[] { 1 },
-                BinaryBooleanInspectorImpl.FACTORY, false, -1, null);
-        RecordDescriptor selectDesc = new RecordDescriptor(
-                new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE });
-
-        String filePath = PATH_ACTUAL + SEPARATOR + "scanHashGbySelectWrite.out";
-        File outFile = new File(filePath);
-        SinkWriterRuntimeFactory writer = new SinkWriterRuntimeFactory(new int[] { 0 },
-                new IPrinterFactory[] { IntegerPrinterFactory.INSTANCE }, outFile, PrinterBasedWriterFactory.INSTANCE,
-                selectDesc);
-
-        AlgebricksMetaOperatorDescriptor algebricksOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
-                new IPushRuntimeFactory[] { select, writer }, new RecordDescriptor[] { selectDesc, null });
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, algebricksOp,
-                new String[] { AlgebricksHyracksIntegrationUtil.NC1_ID });
-
-        spec.connect(new OneToOneConnectorDescriptor(spec), scanner, 0, gby, 0);
-        spec.connect(new OneToOneConnectorDescriptor(spec), gby, 0, algebricksOp, 0);
-        spec.addRoot(algebricksOp);
-
-        AlgebricksHyracksIntegrationUtil.runJob(spec);
-        StringBuilder buf = new StringBuilder();
-        readFileToString(outFile, buf);
-        Assert.assertEquals("9", buf.toString());
-        outFile.delete();
-    }
-
-    @Test
     public void etsUnnestRunningaggregateWrite() throws Exception {
         JobSpecification spec = new JobSpecification(FRAME_SIZE);
 
@@ -663,7 +587,7 @@
         DelimitedDataTupleParserFactory stringParser = new DelimitedDataTupleParserFactory(
                 new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE }, '\u0000');
         RecordDescriptor stringRec = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE, });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(), });
 
         FileScanOperatorDescriptor scanOp = new FileScanOperatorDescriptor(spec, new ConstantFileSplitProvider(
                 inputSplits), stringParser, stringRec);
@@ -709,8 +633,8 @@
                 "data/tpch0.001/nation.tbl")));
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(fileSplits);
         RecordDescriptor scannerDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });
         IValueParserFactory[] valueParsers = new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE };
         FileScanOperatorDescriptor scanner = new FileScanOperatorDescriptor(spec, splitProvider,
@@ -817,10 +741,10 @@
                 "data/tpch0.001/customer.tbl")));
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(fileSplits);
         RecordDescriptor scannerDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), FloatSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
         IValueParserFactory[] valueParsers = new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
                 UTF8StringParserFactory.INSTANCE, FloatParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
diff --git a/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/tools/WriteValueTest.java b/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/tools/WriteValueTest.java
index 0968478..6770494 100644
--- a/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/tools/WriteValueTest.java
+++ b/algebricks/algebricks-tests/src/test/java/org/apache/hyracks/algebricks/tests/tools/WriteValueTest.java
@@ -97,7 +97,7 @@
         interm.reset();
         dout.writeUTF(str);
         baaos.reset();
-        WriteValueTools.writeUTF8String(interm.getByteArray(), 0, interm.size(), baaos);
+        WriteValueTools.writeUTF8StringWithQuotes(str, baaos);
         byte[] b = str.getBytes("UTF-8");
         if (baaos.size() != b.length + 2) {
             throw new Exception("Expecting to write " + b + " in " + b.length + " bytes, but found " + baaos.size()
diff --git a/hyracks/hyracks-api/pom.xml b/hyracks/hyracks-api/pom.xml
index c4efe85..6b8c56b 100644
--- a/hyracks/hyracks-api/pom.xml
+++ b/hyracks/hyracks-api/pom.xml
@@ -40,20 +40,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   	<dependency>
   		<groupId>org.json</groupId>
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java
index 29401a1..6c79abd 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java
@@ -23,17 +23,18 @@
 
 import org.apache.hyracks.api.job.IJobSerializerDeserializerContainer;
 import org.apache.hyracks.api.messages.IMessageBroker;
+import org.apache.hyracks.api.service.IControllerService;
 
 /**
  * Base class of the {@link ICCApplicationContext} and the {@link INCApplicationContext}.
- * 
+ *
  * @author vinayakb
  */
 public interface IApplicationContext {
     /**
      * Gets the distributed state that is made available to all the Application
      * Contexts of this application in the cluster.
-     * 
+     *
      * @return
      */
     public Serializable getDistributedState();
@@ -48,4 +49,9 @@
 
     public void setThreadFactory(ThreadFactory threadFactory);
 
-}
\ No newline at end of file
+    /**
+     * @return The controller service which the application context belongs to.
+     */
+    public IControllerService getControllerService();
+
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java
index a629b3a..8b83d83 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java
@@ -25,7 +25,7 @@
 
 /**
  * Application Context at the Cluster Controller for an application.
- * 
+ *
  * @author vinayakb
  */
 public interface ICCApplicationContext extends IApplicationContext {
@@ -34,7 +34,7 @@
      * NC application contexts. Any state set by calling this method in the {@link ICCApplicationEntryPoint#start(ICCApplicationContext, String[])} call is made available to all the {@link INCApplicationContext} objects
      * at each Node Controller. The state is then available to be inspected by
      * the application at the NC during or after the {@link INCBootstrap#start()} call.
-     * 
+     *
      * @param state
      *            The distributed state
      */
@@ -43,7 +43,7 @@
     /**
      * A listener that listens to Job Lifecycle events at the Cluster
      * Controller.
-     * 
+     *
      * @param jobLifecycleListener
      */
     public void addJobLifecycleListener(IJobLifecycleListener jobLifecycleListener);
@@ -51,16 +51,16 @@
     /**
      * A listener that listens to Cluster Lifecycle events at the Cluster
      * Controller.
-     * 
+     *
      * @param jobLifecycleListener
      */
     public void addClusterLifecycleListener(IClusterLifecycleListener clusterLifecycleListener);
 
     /**
      * Get the Cluster Controller Context.
-     * 
+     *
      * @return The Cluster Controller Context.
      */
     public ICCContext getCCContext();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationEntryPoint.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationEntryPoint.java
index e47b550..9f7f222 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationEntryPoint.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationEntryPoint.java
@@ -22,4 +22,6 @@
     public void start(ICCApplicationContext ccAppCtx, String[] args) throws Exception;
 
     public void stop() throws Exception;
-}
\ No newline at end of file
+
+    void startupCompleted() throws Exception;
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IClusterLifecycleListener.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IClusterLifecycleListener.java
index 6af2a9b..733382b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IClusterLifecycleListener.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IClusterLifecycleListener.java
@@ -26,6 +26,12 @@
  */
 public interface IClusterLifecycleListener {
 
+    public enum ClusterEventType {
+        NODE_JOIN,
+        NODE_FAILURE,
+        NODE_SHUTTING_DOWN //node shutting down gracefully
+    }
+
     /**
      * @param nodeId
      *            A unique identifier of a Node Controller
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java
index e9788d9..77934c6 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java
@@ -24,34 +24,34 @@
 
 /**
  * Application Context at the Node Controller for an application.
- * 
+ *
  * @author vinayakb
  */
 public interface INCApplicationContext extends IApplicationContext {
     /**
      * Gets the life cycle component manager of the Node Controller.
-     * 
+     *
      * @return
      */
     public ILifeCycleComponentManager getLifeCycleComponentManager();
 
     /**
      * Gets the node Id of the Node Controller.
-     * 
+     *
      * @return the Node Id.
      */
     public String getNodeId();
 
     /**
      * Get the Hyracks Root Context.
-     * 
+     *
      * @return The Hyracks Root Context
      */
     public IHyracksRootContext getRootContext();
 
     /**
      * Set an object that can be later retrieved by the {@link #getApplicationObject()} call.
-     * 
+     *
      * @param object
      *            Application Object
      */
@@ -59,22 +59,22 @@
 
     /**
      * Get the application object previously set by the {@link #setApplicationObject(Object)} call.
-     * 
+     *
      * @return Application Object
      */
     public Object getApplicationObject();
 
     /**
      * Get the memory manager at the node.
-     * 
+     *
      * @return Memory Manager
      */
     public IMemoryManager getMemoryManager();
 
     /**
      * Set the handler for state dumps.
-     * 
+     *
      * @param handler
      */
     public void setStateDumpHandler(IStateDumpHandler handler);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationEntryPoint.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationEntryPoint.java
index 4a577dc..ea850c5 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationEntryPoint.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationEntryPoint.java
@@ -24,4 +24,4 @@
     public void notifyStartupComplete() throws Exception;
 
     public void stop() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannel.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannel.java
index 3322c8a..4deba7b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannel.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannel.java
@@ -37,4 +37,4 @@
     public void open(IHyracksCommonContext ctx) throws HyracksDataException;
 
     public void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannelMonitor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannelMonitor.java
index f222435..52509d3 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannelMonitor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/channels/IInputChannelMonitor.java
@@ -24,4 +24,4 @@
     public void notifyDataAvailability(IInputChannel channel, int nFrames);
 
     public void notifyEndOfStream(IInputChannel channel);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/ClusterControllerInfo.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/ClusterControllerInfo.java
index 2b80893..3d69ddb 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/ClusterControllerInfo.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/ClusterControllerInfo.java
@@ -46,4 +46,4 @@
     public int getClientNetPort() {
         return clientNetPort;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceFunctions.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceFunctions.java
index b7ad450..bf36183 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceFunctions.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceFunctions.java
@@ -294,4 +294,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceRemoteProxy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceRemoteProxy.java
index 41f7a4f..25b5a0f 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceRemoteProxy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksClientInterfaceRemoteProxy.java
@@ -131,4 +131,4 @@
             throw new IPCException("CC refused to release connection after 9 seconds");
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
index 953d2c1..b57442d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
@@ -53,7 +53,7 @@
 /**
  * Connection Class used by a Hyracks Client to interact with a Hyracks Cluster
  * Controller.
- * 
+ *
  * @author vinayakb
  */
 public final class HyracksConnection implements IHyracksClientConnection {
@@ -67,7 +67,7 @@
 
     /**
      * Constructor to create a connection to the Hyracks Cluster Controller.
-     * 
+     *
      * @param ccHost
      *            Host name (or IP Address) where the Cluster Controller can be
      *            reached.
@@ -190,4 +190,4 @@
     public void stopCluster() throws Exception{
         hci.stopCluster();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java
index 7e5de94..824c914 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java
@@ -34,13 +34,13 @@
 
 /**
  * Interface used by clients to communicate with the Hyracks Cluster Controller.
- * 
+ *
  * @author vinayakb
  */
 public interface IHyracksClientConnection {
     /**
      * Gets the status of the specified Job.
-     * 
+     *
      * @param jobId
      *            JobId of the Job
      * @return {@link JobStatus}
@@ -50,7 +50,7 @@
 
     /**
      * Gets detailed information about the specified Job.
-     * 
+     *
      * @param jobId
      *            JobId of the Job
      * @return {@link JobStatus}
@@ -60,7 +60,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param appName
      *            Name of the application
      * @param jobSpec
@@ -71,7 +71,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param appName
      *            Name of the application
      * @param jobSpec
@@ -84,7 +84,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param appName
      *            Name of the application
      * @param acggf
@@ -97,7 +97,7 @@
 
     /**
      * Gets the IP Address and port for the DatasetDirectoryService wrapped in NetworkAddress
-     * 
+     *
      * @return {@link NetworkAddress}
      * @throws Exception
      */
@@ -106,7 +106,7 @@
     /**
      * Waits until the specified job has completed, either successfully or has
      * encountered a permanent failure.
-     * 
+     *
      * @param jobId
      *            JobId of the Job
      * @throws Exception
@@ -115,14 +115,14 @@
 
     /**
      * Gets a map of node controller names to node information.
-     * 
+     *
      * @return Map of node name to node information.
      */
     public Map<String, NodeControllerInfo> getNodeControllerInfos() throws Exception;
 
     /**
      * Get the cluster topology
-     * 
+     *
      * @return the cluster topology
      * @throws Exception
      */
@@ -130,7 +130,7 @@
 
     /**
      * Deploy the user-defined jars to the cluster
-     * 
+     *
      * @param jars
      *            a list of user-defined jars
      */
@@ -138,7 +138,7 @@
 
     /**
      * undeploy a certain deployment
-     * 
+     *
      * @param jars
      *            a list of user-defined jars
      */
@@ -146,7 +146,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param deploymentId
      *            the id of the specific deployment
      * @param jobSpec
@@ -157,7 +157,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param deploymentId
      *            the id of the specific deployment
      * @param jobSpec
@@ -171,7 +171,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param deploymentId
      *            the id of the specific deployment
      * @param acggf
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientInterface.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientInterface.java
index 3f5c2e7..b70ef41 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientInterface.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientInterface.java
@@ -56,4 +56,4 @@
 
     public void stopCluster() throws Exception;
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeControllerInfo.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeControllerInfo.java
index 242f919..c41dafe 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeControllerInfo.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeControllerInfo.java
@@ -56,4 +56,4 @@
     public NetworkAddress getDatasetNetworkAddress() {
         return datasetNetworkAddress;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeStatus.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeStatus.java
index a9e93f4..b84f1f2 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeStatus.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/NodeStatus.java
@@ -21,4 +21,4 @@
 public enum NodeStatus {
     ALIVE,
     DEAD
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/ActivityClusterGraphBuilder.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/ActivityClusterGraphBuilder.java
index 1fa60f4..9a2a658 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/ActivityClusterGraphBuilder.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/ActivityClusterGraphBuilder.java
@@ -177,4 +177,4 @@
             eqSetMap.put(t, mergedSet);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IConnectorDescriptorVisitor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IConnectorDescriptorVisitor.java
index 64aa2e7..50a7854 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IConnectorDescriptorVisitor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IConnectorDescriptorVisitor.java
@@ -23,4 +23,4 @@
 
 public interface IConnectorDescriptorVisitor {
     public void visit(IConnectorDescriptor conn) throws HyracksException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IOperatorDescriptorVisitor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IOperatorDescriptorVisitor.java
index aff2131..d86d9e5 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IOperatorDescriptorVisitor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/IOperatorDescriptorVisitor.java
@@ -23,4 +23,4 @@
 
 public interface IOperatorDescriptorVisitor {
     public void visit(IOperatorDescriptor op) throws HyracksException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobActivityGraphBuilder.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobActivityGraphBuilder.java
index 284e836..da344aa 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobActivityGraphBuilder.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobActivityGraphBuilder.java
@@ -142,4 +142,4 @@
     public JobActivityGraph getActivityGraph() {
         return jag;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobSpecificationActivityClusterGraphGeneratorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobSpecificationActivityClusterGraphGeneratorFactory.java
index ae7636a..00c2cc4 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobSpecificationActivityClusterGraphGeneratorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/JobSpecificationActivityClusterGraphGeneratorFactory.java
@@ -114,4 +114,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/PlanUtils.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/PlanUtils.java
index dcb21be..401708a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/PlanUtils.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/impl/PlanUtils.java
@@ -48,4 +48,4 @@
             visitor.visit(c);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FixedSizeFrame.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FixedSizeFrame.java
index 0afe0ae..e36a773 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FixedSizeFrame.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FixedSizeFrame.java
@@ -23,11 +23,19 @@
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
-public class FixedSizeFrame implements IFrame{
+public class FixedSizeFrame implements IFrame {
 
-    private final ByteBuffer buffer;
+    private ByteBuffer buffer;
 
-    public FixedSizeFrame(ByteBuffer buffer){
+    public FixedSizeFrame() {
+
+    }
+
+    public FixedSizeFrame(ByteBuffer buffer) {
+        this.buffer = buffer;
+    }
+
+    public void reset(ByteBuffer buffer) {
         this.buffer = buffer;
     }
 
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameConstants.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameConstants.java
index 298008a..9cf96ec 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameConstants.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameConstants.java
@@ -49,4 +49,4 @@
 
     int FRAME_FIELD_MAGIC = 0x12345678;
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameHelper.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameHelper.java
index eb6b888..473f3ae 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameHelper.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/FrameHelper.java
@@ -54,7 +54,7 @@
      * nbytes the actual data.
      * If the tupleLength includes the field slot, please set the fieldCount = 0
      */
-    public static int calcSpaceInFrame(int fieldCount, int tupleLength) {
+    public static int calcRequiredSpace(int fieldCount, int tupleLength) {
         return 4 + fieldCount * 4 + tupleLength;
     }
 
@@ -68,7 +68,7 @@
      */
     public static int calcAlignedFrameSizeToStore(int fieldCount, int tupleLength, int minFrameSize) {
         assert fieldCount >= 0 && tupleLength >= 0 && minFrameSize > 0;
-        return (1 + (calcSpaceInFrame(fieldCount, tupleLength) + FrameConstants.META_DATA_LEN - 1) / minFrameSize)
+        return (1 + (calcRequiredSpace(fieldCount, tupleLength) + FrameConstants.META_DATA_LEN - 1) / minFrameSize)
                 * minFrameSize;
     }
 
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameAppender.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameAppender.java
index 18e44cc..0fc24c7 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameAppender.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameAppender.java
@@ -24,6 +24,7 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IFrameAppender {
+
     /**
      * Reset to attach to a new frame.
      *
@@ -48,12 +49,22 @@
     ByteBuffer getBuffer();
 
     /**
-     * Flush the frame content to the given writer.
-     * Clear the inner buffer after flush if {@code clear} is <code>true</code>.
+     * Write the frame content to the given writer.
+     * Clear the inner buffer after write if {@code clear} is <code>true</code>.
      *
      * @param outWriter the output writer
-     * @param clear     indicate whether to clear the inside frame after flushed or not.
+     * @param clear     indicate whether to clear the inside frame after writing or not.
      * @throws HyracksDataException
      */
-    void flush(IFrameWriter outWriter, boolean clear) throws HyracksDataException;
+    void write(IFrameWriter outWriter, boolean clear) throws HyracksDataException;
+
+    /**
+     * Write currently buffered records to {@code writer} then flushes {@code writer}. The inside frame is always cleared
+     * @param writer the FrameWriter to write to and flush
+     * @throws HyracksDataException
+     */
+    public default void flush(IFrameWriter writer) throws HyracksDataException {
+        write(writer, true);
+        writer.flush();
+    }
 }
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
index 335f962..62eacc8 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameReader.java
@@ -26,4 +26,4 @@
     boolean nextFrame(IFrame frame) throws HyracksDataException;
 
     void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameTupleAccessor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameTupleAccessor.java
index af34ce9..fc98dcd 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameTupleAccessor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameTupleAccessor.java
@@ -45,4 +45,4 @@
 
     void reset(ByteBuffer buffer);
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
index 260caa1..5ad1b82 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IFrameWriter.java
@@ -33,24 +33,19 @@
  * A producer follows the following protocol when using an {@link IFrameWriter}.
  * Initially, the {@link IFrameWriter} is in the INITIAL state.
  * The first valid call to an {@link IFrameWriter} is always the {@link IFrameWriter#open()}. This call provides the opportunity for the {@link IFrameWriter} implementation to allocate any resources for its
- * processing. Once this call returns, the {@link IFrameWriter} is in the OPENED
- * state. If an error occurs
- * during the {@link IFrameWriter#open()} call, a {@link HyracksDataException} is thrown and it stays in the INITIAL state.
- * While the {@link IFrameWriter} is in the OPENED state, the producer can call
- * one of:
+ * processing. Once open() is called, no matter successfully or not, the {@link IFrameWriter} is in the OPENED
+ * state.
+ * While the {@link IFrameWriter} is in the OPENED state, the producer can call one of:
  * <ul>
- * <li> {@link IFrameWriter#close()} to give up any resources owned by the {@link IFrameWriter} and enter the CLOSED state.</li>
- * <li> {@link IFrameWriter#nextFrame(ByteBuffer)} to provide data to the {@link IFrameWriter}. The call returns normally on success and the {@link IFrameWriter} remains in the OPENED state. On failure, the call throws a {@link HyracksDataException}, and the {@link IFrameWriter} enters the ERROR state.</li>
- * <li> {@link IFrameWriter#fail()} to indicate that stream is to be aborted. The {@link IFrameWriter} enters the FAILED state.</li>
+ * <li>{@link IFrameWriter#close()} to give up any resources owned by the {@link IFrameWriter} and enter the CLOSED state.</li>
+ * <li>{@link IFrameWriter#nextFrame(ByteBuffer)} to provide data to the {@link IFrameWriter}. The call returns normally on success and the {@link IFrameWriter} remains in the OPENED state. On failure, the call throws a {@link HyracksDataException}, the {@link IFrameWriter} remains in the OPENED state.</li>
+ * <li>{@link IFrameWriter#flush()} to push tuples that are ready in the output frame. The {@link IFrameWriter} remains in the OPENED state.</li>
+ * <li>{@link IFrameWriter#fail()} to indicate that stream is to be aborted. The {@link IFrameWriter} enters the FAILED state.</li>
  * </ul>
  * In the FAILED state, the only call allowed is the {@link IFrameWriter#close()} to move the {@link IFrameWriter} into the CLOSED
  * state and give up all resources.
  * No calls are allowed when the {@link IFrameWriter} is in the CLOSED state.
- * Note: If the call to {@link IFrameWriter#open()} failed, the {@link IFrameWriter#close()} is not called by the producer. So an exceptional
- * return from the {@link IFrameWriter#open()} call must clean up all partially
- * allocated resources.
- *
- * @author vinayakb
+ * Note: If the call to {@link IFrameWriter#open()} failed, the {@link IFrameWriter#close()} must still be called by the producer.
  */
 public interface IFrameWriter {
     /**
@@ -60,24 +55,30 @@
 
     /**
      * Provide data to the stream of this {@link IFrameWriter}.
-     *
-     * @param buffer - Buffer containing data.
+     * @param buffer
+     *            - Buffer containing data.
      * @throws HyracksDataException
      */
     public void nextFrame(ByteBuffer buffer) throws HyracksDataException;
 
     /**
+     * request the frame to push its content forward and flush its consumers
+     * @throws HyracksDataException
+     */
+    public default void flush() throws HyracksDataException {
+        throw new HyracksDataException("flush() is not supported in this IFrameWriter");
+    }
+
+    /**
      * Indicate that a failure was encountered and the current stream is to be
      * aborted.
-     *
      * @throws HyracksDataException
      */
     public void fail() throws HyracksDataException;
 
     /**
      * Close this {@link IFrameWriter} and give up all resources.
-     *
      * @throws HyracksDataException
      */
     public void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
index edd6dad..4a977ec 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionCollector.java
@@ -43,4 +43,4 @@
     public Collection<PartitionId> getRequiredPartitionIds() throws HyracksException;
 
     public void abort();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionWriterFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionWriterFactory.java
index 2a71e92..e5d1a22 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionWriterFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/IPartitionWriterFactory.java
@@ -22,4 +22,4 @@
 
 public interface IPartitionWriterFactory {
     public IFrameWriter createFrameWriter(int receiverIndex) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/PartitionChannel.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/PartitionChannel.java
index d2f17fe..f7b7602 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/PartitionChannel.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/comm/PartitionChannel.java
@@ -38,4 +38,4 @@
     public IInputChannel getInputChannel() {
         return channel;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/Constraint.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/Constraint.java
index 7552ac5..338a0f3 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/Constraint.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/Constraint.java
@@ -47,4 +47,4 @@
     public String toString() {
         return lValue + " in " + rValue;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/IConstraintAcceptor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/IConstraintAcceptor.java
index a2c1dea..ac6b584 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/IConstraintAcceptor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/IConstraintAcceptor.java
@@ -20,4 +20,4 @@
 
 public interface IConstraintAcceptor {
     public void addConstraint(Constraint constraint);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/PartitionConstraintHelper.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/PartitionConstraintHelper.java
index 333aadb..a057f40 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/PartitionConstraintHelper.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/PartitionConstraintHelper.java
@@ -45,4 +45,4 @@
                     new ConstantExpression(locations[i])));
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstantExpression.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstantExpression.java
index cc6223d..2bf3643 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstantExpression.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstantExpression.java
@@ -46,4 +46,4 @@
     protected void toString(StringBuilder buffer) {
         buffer.append(getTag()).append('[').append(value).append(':').append(value.getClass().getName()).append(']');
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstraintExpression.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstraintExpression.java
index 9f7e25c..a46d0a2 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstraintExpression.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/ConstraintExpression.java
@@ -42,4 +42,4 @@
     }
 
     protected abstract void toString(StringBuilder buffer);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/LValueConstraintExpression.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/LValueConstraintExpression.java
index 8554314..6d23e9a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/LValueConstraintExpression.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/LValueConstraintExpression.java
@@ -20,4 +20,4 @@
 
 public abstract class LValueConstraintExpression extends ConstraintExpression {
     private static final long serialVersionUID = 1L;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionCountExpression.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionCountExpression.java
index ada8e4b..316a5f4 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionCountExpression.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionCountExpression.java
@@ -73,4 +73,4 @@
             return false;
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionLocationExpression.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionLocationExpression.java
index ef02f52..bbb6936 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionLocationExpression.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/constraints/expressions/PartitionLocationExpression.java
@@ -82,4 +82,4 @@
             return false;
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/ICCContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/ICCContext.java
index 7d0f6b2..35aeef5 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/ICCContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/ICCContext.java
@@ -31,4 +31,4 @@
     public void getIPAddressNodeMap(Map<InetAddress, Set<String>> map) throws Exception;
 
     public ClusterTopology getClusterTopology();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksFrameMgrContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksFrameMgrContext.java
index c945f8e..d43680a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksFrameMgrContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksFrameMgrContext.java
@@ -24,9 +24,9 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IHyracksFrameMgrContext {
+
     int getInitialFrameSize();
 
-    //TODO tobedeleted
     ByteBuffer allocateFrame() throws HyracksDataException;
 
     ByteBuffer allocateFrame(int bytes) throws HyracksDataException;
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java
index 8cf0cc5..bf25d13 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksJobletContext.java
@@ -36,4 +36,4 @@
     public Class<?> loadClass(String className);
 
     public ClassLoader getClassLoader();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksRootContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksRootContext.java
index 5887901..a1e57ff 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksRootContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksRootContext.java
@@ -27,4 +27,4 @@
     public IIOManager getIOManager();
 
     public Map<String, NodeControllerInfo> getNodeControllerInfos() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksTaskContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksTaskContext.java
index 95c36ea..3076a32 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksTaskContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/context/IHyracksTaskContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.hyracks.api.context;
 
+import java.util.concurrent.ExecutorService;
+
 import org.apache.hyracks.api.dataflow.TaskAttemptId;
 import org.apache.hyracks.api.dataset.IDatasetPartitionManager;
 import org.apache.hyracks.api.deployment.DeploymentId;
@@ -26,15 +28,21 @@
 import org.apache.hyracks.api.job.profiling.counters.ICounterContext;
 import org.apache.hyracks.api.resources.IDeallocatableRegistry;
 
-public interface IHyracksTaskContext extends IHyracksCommonContext, IWorkspaceFileFactory, IDeallocatableRegistry,
-        IOperatorEnvironment {
+public interface IHyracksTaskContext
+        extends IHyracksCommonContext, IWorkspaceFileFactory, IDeallocatableRegistry, IOperatorEnvironment {
     public IHyracksJobletContext getJobletContext();
 
     public TaskAttemptId getTaskAttemptId();
 
     public ICounterContext getCounterContext();
 
+    public ExecutorService getExecutorService();
+
     public IDatasetPartitionManager getDatasetPartitionManager();
 
-    public void sendApplicationMessageToCC(byte[] message, DeploymentId deploymendId, String nodeId) throws Exception;
-}
\ No newline at end of file
+    public void sendApplicationMessageToCC(byte[] message, DeploymentId deploymendId) throws Exception;
+
+    public void setSharedObject(Object sharedObject);
+
+    public Object getSharedObject();
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ActivityId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ActivityId.java
index 1c4fd95..acac345 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ActivityId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ActivityId.java
@@ -95,4 +95,4 @@
         odId = OperatorDescriptorId.create(input);
         id = input.readInt();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ConnectorDescriptorId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ConnectorDescriptorId.java
index 67fa679..8fef74a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ConnectorDescriptorId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ConnectorDescriptorId.java
@@ -79,4 +79,4 @@
     public void readFields(DataInput input) throws IOException {
         id = input.readInt();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivity.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivity.java
index 19fb75b..f7e4d42 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivity.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivity.java
@@ -29,4 +29,4 @@
 
     public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivityGraphBuilder.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivityGraphBuilder.java
index e5470e8..ae04250 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivityGraphBuilder.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IActivityGraphBuilder.java
@@ -26,4 +26,4 @@
     public void addSourceEdge(int operatorInputIndex, IActivity task, int taskInputIndex);
 
     public void addTargetEdge(int operatorOutputIndex, IActivity task, int taskOutputIndex);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
index 70f8f7d..339eb9d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
@@ -21,9 +21,6 @@
 import java.io.Serializable;
 import java.util.BitSet;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import org.apache.hyracks.api.application.ICCApplicationContext;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.IPartitionCollector;
@@ -33,16 +30,19 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.ActivityCluster;
+import org.json.JSONException;
+import org.json.JSONObject;
 
 /**
  * Connector that connects operators in a Job.
- * 
+ *
  * @author vinayakb
  */
 public interface IConnectorDescriptor extends Serializable {
+
     /**
      * Gets the id of the connector.
-     * 
+     *
      * @return
      */
     public ConnectorDescriptorId getConnectorId();
@@ -50,7 +50,7 @@
     /**
      * Factory method to create the send side writer that writes into this
      * connector.
-     * 
+     *
      * @param ctx
      *            Context
      * @param recordDesc
@@ -68,12 +68,12 @@
      */
     public IFrameWriter createPartitioner(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
             IPartitionWriterFactory edwFactory, int index, int nProducerPartitions, int nConsumerPartitions)
-            throws HyracksDataException;
+                    throws HyracksDataException;
 
     /**
      * Factory metod to create the receive side reader that reads data from this
      * connector.
-     * 
+     *
      * @param ctx
      *            Context
      * @param recordDesc
@@ -92,7 +92,7 @@
 
     /**
      * Contribute any scheduling constraints imposed by this connector
-     * 
+     *
      * @param constraintAcceptor
      *            - Constraint Acceptor
      * @param ac
@@ -131,9 +131,9 @@
 
     /**
      * Translate this connector descriptor to JSON.
-     * 
+     *
      * @return
      * @throws JSONException
      */
     public JSONObject toJSON() throws JSONException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java
index 7202235..3eb0367 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java
@@ -22,13 +22,13 @@
 
 /**
  * Provides data to a consumer.
- * 
+ *
  * @author vinayakb
  */
 public interface IDataReader<T> {
     /**
      * Reads one data item.
-     * 
+     *
      * @return data. <code>null</code> indicates end of stream.
      * @throws Exception
      */
@@ -36,8 +36,8 @@
 
     /**
      * Closes this reader.
-     * 
+     *
      * @throws Exception
      */
     public void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java
index a5d3d4e..9125b1c 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java
@@ -22,13 +22,10 @@
 
 /**
  * Accepts data from data producers.
- * 
- * @author vinayakb
  */
 public interface IDataWriter<T> {
     /**
      * Pushes data to the acceptor.
-     * 
      * @param data
      *            - Data pushed to the acceptor. <code>null</code> indicates the
      *            end of stream.
@@ -38,15 +35,19 @@
 
     /**
      * Indicates that the stream has failed.
-     * 
      * @throws HyracksDataException
      */
     public void fail() throws HyracksDataException;
 
     /**
+     * Request the writer to flush its content
+     * @throws HyracksDataException
+     */
+    public void flush() throws HyracksDataException;
+
+    /**
      * Closes this writer.
-     * 
      * @throws Exception
      */
     public void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataReader.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataReader.java
index 9f82d8d..5a1d100 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataReader.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataReader.java
@@ -22,4 +22,4 @@
 
 public interface IOpenableDataReader<T> extends IDataReader<T> {
     public void open() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataWriter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataWriter.java
index 470cbb9..a453b64 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataWriter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOpenableDataWriter.java
@@ -22,4 +22,4 @@
 
 public interface IOpenableDataWriter<T> extends IDataWriter<T> {
     public void open() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
index 32b4e2b..1b85fbd 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
@@ -29,34 +29,34 @@
 
 /**
  * Descriptor for operators in Hyracks.
- * 
+ *
  * @author vinayakb
  */
 public interface IOperatorDescriptor extends Serializable {
     /**
      * Returns the id of the operator.
-     * 
+     *
      * @return operator id
      */
     public OperatorDescriptorId getOperatorId();
 
     /**
      * Returns the number of inputs into this operator.
-     * 
+     *
      * @return Number of inputs.
      */
     public int getInputArity();
 
     /**
      * Returns the number of outputs out of this operator.
-     * 
+     *
      * @return Number of outputs.
      */
     public int getOutputArity();
 
     /**
      * Gets the output record descriptor
-     * 
+     *
      * @return Array of RecordDescriptor, one per output.
      */
     public RecordDescriptor[] getOutputRecordDescriptors();
@@ -64,7 +64,7 @@
     /**
      * Contributes the activity graph that describes the behavior of this
      * operator.
-     * 
+     *
      * @param builder
      *            - graph builder
      */
@@ -72,7 +72,7 @@
 
     /**
      * Contributes any scheduling constraints imposed by this operator.
-     * 
+     *
      * @param constraintAcceptor
      *            - Constraint Acceptor
      * @param plan
@@ -94,4 +94,4 @@
      * Translates this operator descriptor to JSON.
      */
     public JSONObject toJSON() throws JSONException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePullable.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePullable.java
index 66953c6..c6d8f71 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePullable.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePullable.java
@@ -20,4 +20,4 @@
 
 public interface IOperatorNodePullable extends IOpenableDataReader<Object[]> {
     public void setDataReader(int index, IOpenableDataWriter<Object[]> writer);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePushable.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePushable.java
index f3c1e5d..f6c201e 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePushable.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorNodePushable.java
@@ -35,4 +35,4 @@
     public IFrameWriter getInputFrameWriter(int index);
 
     public String getDisplayName();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorDescriptorId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorDescriptorId.java
index e6458cd..19ecec8 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorDescriptorId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorDescriptorId.java
@@ -86,4 +86,4 @@
     public void readFields(DataInput input) throws IOException {
         id = input.readInt();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorInstanceId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorInstanceId.java
index 389e6d3..1873119 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorInstanceId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/OperatorInstanceId.java
@@ -66,4 +66,4 @@
             return false;
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskAttemptId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskAttemptId.java
index 7cec72e..782561b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskAttemptId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskAttemptId.java
@@ -94,4 +94,4 @@
         taskId = TaskId.create(input);
         attempt = input.readInt();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskId.java
index 47babd7..81397bb 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/TaskId.java
@@ -94,4 +94,4 @@
         activityId = ActivityId.create(input);
         partition = input.readInt();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicy.java
index e66d209..b46ff60 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicy.java
@@ -28,4 +28,4 @@
     public boolean materializeOnSendSide();
 
     public boolean materializeOnReceiveSide();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicyAssignmentPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicyAssignmentPolicy.java
index e81615a..7a8290a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicyAssignmentPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/IConnectorPolicyAssignmentPolicy.java
@@ -25,4 +25,4 @@
 public interface IConnectorPolicyAssignmentPolicy extends Serializable {
     public IConnectorPolicy getConnectorPolicyAssignment(IConnectorDescriptor c, int nProducers, int nConsumers,
             int[] fanouts);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/PipeliningConnectorPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/PipeliningConnectorPolicy.java
index 7f8ef9a..84b1935 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/PipeliningConnectorPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/PipeliningConnectorPolicy.java
@@ -40,4 +40,4 @@
     public boolean materializeOnReceiveSide() {
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedBlockingConnectorPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedBlockingConnectorPolicy.java
index d62f857..fe7ad27 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedBlockingConnectorPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedBlockingConnectorPolicy.java
@@ -40,4 +40,4 @@
     public boolean materializeOnReceiveSide() {
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedPipeliningConnectorPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedPipeliningConnectorPolicy.java
index c93f950..34c0316 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedPipeliningConnectorPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedPipeliningConnectorPolicy.java
@@ -40,4 +40,4 @@
     public boolean materializeOnReceiveSide() {
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy.java
index 8708525..52fab34 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedBlockingConnectorPolicy.java
@@ -40,4 +40,4 @@
     public boolean materializeOnReceiveSide() {
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedPipeliningConnectorPolicy.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedPipeliningConnectorPolicy.java
index fddc07e..a1233b3 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedPipeliningConnectorPolicy.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/connectors/SendSideMaterializedReceiveSideMaterializedPipeliningConnectorPolicy.java
@@ -40,4 +40,4 @@
     public boolean materializeOnReceiveSide() {
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/state/IStateObject.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/state/IStateObject.java
index 35fa598..e8bc822 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/state/IStateObject.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/state/IStateObject.java
@@ -34,4 +34,4 @@
     public void toBytes(DataOutput out) throws IOException;
 
     public void fromBytes(DataInput in) throws IOException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/BinaryComparatorConstant.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/BinaryComparatorConstant.java
index 6616a7b..de0e3ee 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/BinaryComparatorConstant.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/BinaryComparatorConstant.java
@@ -31,4 +31,4 @@
         UNKNOWN
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparator.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparator.java
index 3133f9a..67126e8 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparator.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparator.java
@@ -22,4 +22,4 @@
 
 public interface IBinaryComparator {
     public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparatorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparatorFactory.java
index c5a2902..4cfa113 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparatorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryComparatorFactory.java
@@ -22,4 +22,4 @@
 
 public interface IBinaryComparatorFactory extends Serializable {
     public IBinaryComparator createBinaryComparator();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunction.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunction.java
index acc4e1d..8205497 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunction.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunction.java
@@ -22,4 +22,4 @@
 
 public interface IBinaryHashFunction {
     int hash(byte[] bytes, int offset, int length) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFactory.java
index 7293d3b..e512416 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFactory.java
@@ -22,4 +22,4 @@
 
 public interface IBinaryHashFunctionFactory extends Serializable {
     public IBinaryHashFunction createBinaryHashFunction();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFamily.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFamily.java
index 021e9e8..35fea9f 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFamily.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IBinaryHashFunctionFamily.java
@@ -22,4 +22,4 @@
 
 public interface IBinaryHashFunctionFamily extends Serializable {
     public IBinaryHashFunction createBinaryHashFunction(int seed);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IComparatorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IComparatorFactory.java
index cb3bbf3..61c4ac3 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IComparatorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IComparatorFactory.java
@@ -22,4 +22,4 @@
 
 public interface IComparatorFactory<T> extends Serializable {
     public IComparator<T> createComparator();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunction.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunction.java
index f76e847..4ec4c12 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunction.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunction.java
@@ -22,4 +22,4 @@
 
 public interface IHashFunction<T> {
     public int hash(T o) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunctionFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunctionFactory.java
index 25b0287..b22dbe7 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunctionFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IHashFunctionFactory.java
@@ -22,4 +22,4 @@
 
 public interface IHashFunctionFactory<T> extends Serializable {
     public IHashFunction<T> createHashFunction();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparator.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparator.java
index 747ea62..c636810 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparator.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparator.java
@@ -21,4 +21,4 @@
 public interface ILinearizeComparator extends IBinaryComparator {
     public int getDimensions();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparatorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparatorFactory.java
index 08a231e..e68d2c8 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparatorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ILinearizeComparatorFactory.java
@@ -20,4 +20,4 @@
 
 public interface ILinearizeComparatorFactory extends IBinaryComparatorFactory {
     public ILinearizeComparator createBinaryComparator();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputer.java
index 81d175f..2c79a4d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputer.java
@@ -20,4 +20,4 @@
 
 public interface INormalizedKeyComputer {
     public int normalize(byte[] bytes, int start, int length);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputerFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputerFactory.java
index 6c3e34b..2b7198b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputerFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/INormalizedKeyComputerFactory.java
@@ -22,4 +22,4 @@
 
 public interface INormalizedKeyComputerFactory extends Serializable {
     public INormalizedKeyComputer createNormalizedKeyComputer();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java
index ff1fd0c..5fbc1ab 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java
@@ -22,7 +22,7 @@
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 
 /*
- * Compares two tuples to make sure that records, whose comparison keys are NULL do not pass comparator filter  
+ * Compares two tuples to make sure that records, whose comparison keys are NULL do not pass comparator filter
  */
 public interface IPredicateEvaluator {
     public boolean evaluate(IFrameTupleAccessor fta0, int tupId0, IFrameTupleAccessor fta1, int tupId1);
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java
index 89bb24a..eb94514 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java
@@ -22,7 +22,7 @@
 import java.io.Serializable;
 
 /*
- * Provides PredicateEvaluator for equi-join related operators 
+ * Provides PredicateEvaluator for equi-join related operators
  */
 
 public interface IPredicateEvaluatorFactory extends Serializable {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java
index 6da25c3..3eefc29 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java
@@ -22,7 +22,7 @@
 import java.io.Serializable;
 
 /*
- * Provides PredicateEvaluatorFactory based on (equi-join) keys 		
+ * Provides PredicateEvaluatorFactory based on (equi-join) keys
  */
 
 public interface IPredicateEvaluatorFactoryProvider extends Serializable {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IRecordDescriptorProvider.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IRecordDescriptorProvider.java
index bf640c3..dcd4eca 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IRecordDescriptorProvider.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IRecordDescriptorProvider.java
@@ -24,4 +24,4 @@
     public RecordDescriptor getInputRecordDescriptor(ActivityId aid, int inputIndex);
 
     public RecordDescriptor getOutputRecordDescriptor(ActivityId aid, int outputIndex);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java
index 39f9ce8..cbd808b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java
@@ -31,7 +31,7 @@
 
     /**
      * Method to serialize the result and append it to the provided output stream
-     * 
+     *
      * @param tAccess
      *            - A frame tuple accessor object that contains the original data to be serialized
      * @param tIdx
@@ -39,4 +39,4 @@
      * @return true if the tuple was appended successfully, else false.
      */
     public boolean appendTuple(IFrameTupleAccessor tAccess, int tIdx) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java
index 2c4b000a..f21913c 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java
@@ -24,10 +24,10 @@
 public interface IResultSerializerFactory extends Serializable {
     /**
      * Creates a result serialized appender
-     * 
+     *
      * @param printStream
      *            - A print stream object to which the serialized results will be written.
      * @return A new instance of result serialized appender.
      */
     public IResultSerializer createResultSerializer(RecordDescriptor recordDesc, PrintStream printStream);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java
index 7f287cc..065e32d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java
@@ -27,7 +27,7 @@
 public interface ISerializerDeserializer<T> extends Serializable {
     /**
      * Deserialization method.
-     * 
+     *
      * @param in
      *            - Stream to read instance from.
      * @return A new instance of T with data.
@@ -36,17 +36,17 @@
 
     /**
      * Serialization method.
-     * 
+     *
      * @param instance
      *            - the instance to serialize.
      * @param out
      *            - Stream to write data to.
      */
     public void serialize(T instance, DataOutput out) throws HyracksDataException;
-    
+
     /*
      * TODO: Add a new method:
      * T deserialize(DataInput in, T mutable)
      * to provide deserialization without creating objects
      */
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePairComparatorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePairComparatorFactory.java
index e62aaf5..1437087 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePairComparatorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePairComparatorFactory.java
@@ -24,4 +24,4 @@
 
 public interface ITuplePairComparatorFactory extends Serializable {
     public ITuplePairComparator createTuplePairComparator(IHyracksTaskContext ctx);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputer.java
index e1da07d..0dcc83a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputer.java
@@ -23,4 +23,4 @@
 
 public interface ITuplePartitionComputer {
     public int partition(IFrameTupleAccessor accessor, int tIndex, int nParts) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFactory.java
index a3cda5b..cde0057 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFactory.java
@@ -22,4 +22,4 @@
 
 public interface ITuplePartitionComputerFactory extends Serializable {
     public ITuplePartitionComputer createPartitioner();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFamily.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFamily.java
index b0af730..63cfaa4 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFamily.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ITuplePartitionComputerFamily.java
@@ -22,4 +22,4 @@
 
 public interface ITuplePartitionComputerFamily extends Serializable {
     public ITuplePartitionComputer createPartitioner(int seed);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java
index 9b8bf34..391b637 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java
@@ -24,8 +24,8 @@
 public interface JSONSerializable {
     /**
      * Returns the JSON representation of the object.
-     * 
+     *
      * @return A new JSONObject instance representing this Java object.
      */
     public JSONObject toJSON() throws JSONException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/RecordDescriptor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/RecordDescriptor.java
index e96dbbc..2ee4a29 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/RecordDescriptor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/RecordDescriptor.java
@@ -20,7 +20,7 @@
 
 import java.io.Serializable;
 
-@SuppressWarnings("unchecked")
+@SuppressWarnings("rawtypes")
 public final class RecordDescriptor implements Serializable {
     private static final long serialVersionUID = 1L;
 
@@ -50,4 +50,4 @@
     public ITypeTraits[] getTypeTraits() {
         return typeTraits;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java
index 6799690..200f5e5 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java
@@ -24,7 +24,7 @@
 public interface IHyracksDatasetDirectoryServiceConnection {
     /**
      * Gets the result status for the given result set.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
@@ -36,7 +36,7 @@
 
     /**
      * Gets the IP Addresses and ports for the partition generating the result for each location.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java
index 596bdf1..56c0af9 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java
@@ -24,7 +24,7 @@
 public interface IHyracksDatasetDirectoryServiceInterface {
     /**
      * Gets the result status for the given result set.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
@@ -36,7 +36,7 @@
 
     /**
      * Gets the IP Addresses and ports for the partition generating the result for each location.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/ResultSetMetaData.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/ResultSetMetaData.java
index 4313599..2285981 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/ResultSetMetaData.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/ResultSetMetaData.java
@@ -35,4 +35,4 @@
     public DatasetDirectoryRecord[] getRecords() {
         return records;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java
index 04fc0d8..2e32a70 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java
@@ -28,7 +28,7 @@
 
 /**
  * The representation of a deployment id
- * 
+ *
  * @author yingyib
  */
 public class DeploymentId implements IWritable, Serializable {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java
index b7b39bb..eaf8df9 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksDataException.java
@@ -45,4 +45,4 @@
     public String getNodeId() {
         return nodeId;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java
index b3b0e2f..e939d26 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/exceptions/HyracksException.java
@@ -37,4 +37,4 @@
     public HyracksException(String message, Throwable cause) {
         super(message, cause);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java
index 607f856..8893adb 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/FileReference.java
@@ -66,4 +66,4 @@
     public void delete() {
         file.delete();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IFileHandle.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IFileHandle.java
index b74906d..a24c667 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IFileHandle.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IFileHandle.java
@@ -23,4 +23,4 @@
  * when handling file handle objects. Users must not implement this interface.
  */
 public interface IFileHandle {
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOFuture.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOFuture.java
index 700478e..3de2ca1 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOFuture.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOFuture.java
@@ -24,4 +24,4 @@
     public int synchronize() throws HyracksDataException, InterruptedException;
 
     public boolean isComplete();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOManager.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOManager.java
index de16342..47eac7e 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOManager.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IIOManager.java
@@ -54,4 +54,15 @@
     public void sync(IFileHandle fileHandle, boolean metadata) throws HyracksDataException;
 
     public void setExecutor(Executor executor);
-}
\ No newline at end of file
+
+    public long getSize(IFileHandle fileHandle);
+
+    public void deleteWorkspaceFiles();
+
+    /**
+     * @param ioDeviceId
+     * @param relativePath
+     * @return A file reference based on the mounting point of {@code ioDeviceId} and the passed {@code relativePath}
+     */
+    public FileReference getAbsoluteFileRef(int ioDeviceId, String relativePath);
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
index d64bdcb..1fcff90 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
@@ -48,4 +48,4 @@
     public FileReference createFileReference(String relPath) {
         return new FileReference(this, relPath);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IWorkspaceFileFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IWorkspaceFileFactory.java
index 7e4df9f..9a35bb8 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IWorkspaceFileFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IWorkspaceFileFactory.java
@@ -24,4 +24,4 @@
     public FileReference createUnmanagedWorkspaceFile(String prefix) throws HyracksDataException;
 
     public FileReference createManagedWorkspaceFile(String prefix) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityCluster.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityCluster.java
index 54c152f..cefdd7d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityCluster.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityCluster.java
@@ -233,4 +233,4 @@
 
         return jac;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterGraph.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterGraph.java
index 1e77ce4..7df619d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterGraph.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterGraph.java
@@ -173,4 +173,4 @@
         acgj.put("activity-clusters", acl);
         return acgj;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterId.java
index 1b633d6..e0c5279 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/ActivityClusterId.java
@@ -78,4 +78,4 @@
     public String toString() {
         return "ACID:" + jobId + ":" + id;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGenerator.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGenerator.java
index 9107e8d..219fc81 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGenerator.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGenerator.java
@@ -26,4 +26,4 @@
     public Set<Constraint> getConstraints();
 
     public ActivityClusterGraph initialize();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGeneratorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGeneratorFactory.java
index 1cec860..7d02155 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGeneratorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IActivityClusterGraphGeneratorFactory.java
@@ -29,4 +29,4 @@
             ICCApplicationContext ccAppCtx, EnumSet<JobFlag> jobFlags) throws HyracksException;
 
     public JobSpecification getJobSpecification();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IConnectorDescriptorRegistry.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IConnectorDescriptorRegistry.java
index 459fa25..cd84802 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IConnectorDescriptorRegistry.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IConnectorDescriptorRegistry.java
@@ -23,4 +23,4 @@
 
 public interface IConnectorDescriptorRegistry {
     public ConnectorDescriptorId createConnectorDescriptor(IConnectorDescriptor conn);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IGlobalJobDataFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IGlobalJobDataFactory.java
index 0d4a594..ccb6c69 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IGlobalJobDataFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IGlobalJobDataFactory.java
@@ -24,4 +24,4 @@
 
 public interface IGlobalJobDataFactory extends Serializable {
     public Object createGlobalJobData(IHyracksJobletContext ctx);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobLifecycleListener.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobLifecycleListener.java
index 846d673..cca4a13 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobLifecycleListener.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobLifecycleListener.java
@@ -26,4 +26,4 @@
     public void notifyJobStart(JobId jobId) throws HyracksException;
 
     public void notifyJobFinish(JobId jobId) throws HyracksException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java
index 14473ce..f943a4e 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java
@@ -27,14 +27,14 @@
 
 /**
  * The serializer/deserializer/classloader interface for job/task information such as job specifications, activity graphs and so on.
- * 
+ *
  * @author yingyib
  */
 public interface IJobSerializerDeserializer {
 
     /**
      * Deserialize the bytes to an object
-     * 
+     *
      * @param bytes
      *            the binary content of an object
      * @return the deserialized object
@@ -44,7 +44,7 @@
 
     /**
      * Serialize a object into bytes
-     * 
+     *
      * @param object
      *            a Serializable Java object
      * @return
@@ -55,7 +55,7 @@
 
     /**
      * Load a class by its name
-     * 
+     *
      * @param className
      *            the name of the class
      * @return
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java
index 52959fd..e63c18b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java
@@ -25,7 +25,7 @@
 
     /**
      * Get the IJobSerializerDeserializer implementation instance for a specific deployment id
-     * 
+     *
      * @param deploymentId
      * @return
      */
@@ -33,7 +33,7 @@
 
     /**
      * Add a deployment with the job serializer deserializer
-     * 
+     *
      * @param deploymentId
      * @param jobSerDe
      */
@@ -41,7 +41,7 @@
 
     /**
      * Remove a deployment
-     * 
+     *
      * @param deploymentId
      */
     public void removeJobSerializerDeserializer(DeploymentId deploymentId);
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListener.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListener.java
index 5c7a5ed..df829b1 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListener.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListener.java
@@ -22,4 +22,4 @@
     public void jobletStart();
 
     public void jobletFinish(JobStatus status);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListenerFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListenerFactory.java
index bad9243..d523cccc 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListenerFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobletEventListenerFactory.java
@@ -24,4 +24,4 @@
 
 public interface IJobletEventListenerFactory extends Serializable {
     public IJobletEventListener createListener(IHyracksJobletContext ctx);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorDescriptorRegistry.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorDescriptorRegistry.java
index a69a01a..4c93d3a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorDescriptorRegistry.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorDescriptorRegistry.java
@@ -23,4 +23,4 @@
 
 public interface IOperatorDescriptorRegistry {
     public OperatorDescriptorId createOperatorDescriptorId(IOperatorDescriptor op);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorEnvironment.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorEnvironment.java
index d42c4e8..fec6c02 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorEnvironment.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IOperatorEnvironment.java
@@ -24,4 +24,4 @@
     public void setStateObject(IStateObject taskState);
 
     public IStateObject getStateObject(Object id);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobActivityGraph.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobActivityGraph.java
index 6c6a3c1..de2759c 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobActivityGraph.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobActivityGraph.java
@@ -106,4 +106,4 @@
         buffer.append('\n');
         return buffer.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobFlag.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobFlag.java
index ad4a0ae..a33c6c9a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobFlag.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobFlag.java
@@ -20,4 +20,4 @@
 
 public enum JobFlag {
     PROFILE_RUNTIME
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobId.java
index abef269..1ce4f23 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobId.java
@@ -85,4 +85,4 @@
     public void readFields(DataInput input) throws IOException {
         id = input.readLong();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSpecification.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSpecification.java
index fc946c5..5165a62 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSpecification.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobSpecification.java
@@ -410,4 +410,4 @@
                 return constraint.getRValue().toString();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobStatus.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobStatus.java
index d4715bd..4351e39 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobStatus.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/JobStatus.java
@@ -23,4 +23,4 @@
     RUNNING,
     TERMINATED,
     FAILURE,
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java
index f7ee39e..987b86b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java
@@ -21,14 +21,14 @@
 public interface ICounter {
     /**
      * Get the fully-qualified name of the counter.
-     * 
+     *
      * @return Name of the counter.
      */
     public String getName();
 
     /**
      * Update the value of the counter to be current + delta.
-     * 
+     *
      * @param delta
      *            - Amount to change the counter value by.
      * @return the new value after update.
@@ -37,7 +37,7 @@
 
     /**
      * Set the value of the counter.
-     * 
+     *
      * @param value
      *            - New value of the counter.
      * @return Old value of the counter.
@@ -46,8 +46,8 @@
 
     /**
      * Get the value of the counter.
-     * 
+     *
      * @return the value of the counter.
      */
     public long get();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java
index cd09d0c..b328daf 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java
@@ -20,13 +20,13 @@
 
 /**
  * A namespace that holds named counters.
- * 
+ *
  * @author vinayakb
  */
 public interface ICounterContext {
     /**
      * Get a counter with the specified name.
-     * 
+     *
      * @param name
      *            - Name of the counter to get.
      * @param create
@@ -36,4 +36,4 @@
      *         else returns <code>null</code>.
      */
     public ICounter getCounter(String name, boolean create);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/messages/IMessageBroker.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/messages/IMessageBroker.java
index 40a1baa..2b166d2 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/messages/IMessageBroker.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/messages/IMessageBroker.java
@@ -23,6 +23,6 @@
  */
 public interface IMessageBroker {
 
-    public void receivedMessage(IMessage message, String nodeId);
+    public void receivedMessage(IMessage message, String nodeId) throws Exception;
 
 }
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/IPartition.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/IPartition.java
index 8f707df..316a6af 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/IPartition.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/IPartition.java
@@ -28,4 +28,4 @@
     public void writeTo(IFrameWriter writer);
 
     public boolean isReusable();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/PartitionId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/PartitionId.java
index f93a07b..e18b5ad 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/PartitionId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/PartitionId.java
@@ -128,4 +128,4 @@
         receiverIndex = input.readInt();
         senderIndex = input.readInt();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/ResultSetPartitionId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/ResultSetPartitionId.java
index af6878f..8a3e15a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/ResultSetPartitionId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/partitions/ResultSetPartitionId.java
@@ -88,4 +88,4 @@
     public String toString() {
         return jobId.toString() + ":" + resultSetId + ":" + partition;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/IReplicationJob.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/IReplicationJob.java
index 1948f4bf..cbe6d1a 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/IReplicationJob.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/IReplicationJob.java
@@ -29,8 +29,7 @@
 
     public enum ReplicationOperation {
         REPLICATE,
-        DELETE,
-        STOP
+        DELETE
     }
 
     public enum ReplicationExecutionType {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/impl/AbstractReplicationJob.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/impl/AbstractReplicationJob.java
index 20f1410..de0f1f8 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/impl/AbstractReplicationJob.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/replication/impl/AbstractReplicationJob.java
@@ -23,19 +23,19 @@
 import org.apache.hyracks.api.replication.IReplicationJob;
 
 public abstract class AbstractReplicationJob implements IReplicationJob {
-    
     private final Set<String> filesToReplicate;
     private final ReplicationOperation operation;
     private final ReplicationExecutionType executionType;
     private final ReplicationJobType jobType;
 
-    public AbstractReplicationJob(ReplicationJobType jobType, ReplicationOperation operation, ReplicationExecutionType executionType, Set<String> filesToReplicate){
+    public AbstractReplicationJob(ReplicationJobType jobType, ReplicationOperation operation,
+            ReplicationExecutionType executionType, Set<String> filesToReplicate) {
         this.jobType = jobType;
         this.operation = operation;
         this.executionType = executionType;
         this.filesToReplicate = filesToReplicate;
     }
-    
+
     @Override
     public Set<String> getJobFiles() {
         return filesToReplicate;
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatable.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatable.java
index b43e3b0..00f54d3 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatable.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatable.java
@@ -20,4 +20,4 @@
 
 public interface IDeallocatable {
     public void deallocate();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatableRegistry.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatableRegistry.java
index 3f6a9b7..d15e883 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatableRegistry.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/IDeallocatableRegistry.java
@@ -20,4 +20,4 @@
 
 public interface IDeallocatableRegistry {
     public void registerDeallocatable(IDeallocatable deallocatable);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/memory/IMemoryManager.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/memory/IMemoryManager.java
index 93e0046..29705e1 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/memory/IMemoryManager.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/resources/memory/IMemoryManager.java
@@ -26,4 +26,4 @@
     public boolean allocate(long memory);
 
     public void deallocate(long memory);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java
index 8570a78..38e7fbe 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java
@@ -46,7 +46,7 @@
  * DAGs into super activities.
  * </p>
  * Each super activity internally maintains a DAG and execute it at the runtime.
- * 
+ *
  * @author yingyib
  */
 public class ActivityClusterGraphRewriter {
@@ -56,7 +56,7 @@
      * rewrite an activity cluster graph to eliminate
      * all one-to-one connections and merge one-to-one connected
      * DAGs into super activities.
-     * 
+     *
      * @param acg
      *            the activity cluster graph
      */
@@ -75,7 +75,7 @@
 
     /**
      * rewrite the blocking relationship among activity cluster
-     * 
+     *
      * @param ac
      *            the activity cluster to be rewritten
      */
@@ -119,7 +119,7 @@
 
     /**
      * rewrite an activity cluster internally
-     * 
+     *
      * @param ac
      *            the activity cluster to be rewritten
      */
@@ -323,7 +323,7 @@
 
     /**
      * Create a new super activity
-     * 
+     *
      * @param acg
      *            the activity cluster
      * @param superActivities
@@ -351,7 +351,7 @@
 
     /**
      * One super activity swallows another existing super activity.
-     * 
+     *
      * @param superActivities
      *            the map from activity id to current super activities
      * @param toBeExpendedMap
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java
index 5ebf55a..68041bb 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java
@@ -31,7 +31,7 @@
 
 /**
  * All the connectors in an OneToOneConnectedCluster are OneToOneConnectorDescriptors.
- * 
+ *
  * @author yingyib
  */
 public class OneToOneConnectedActivityCluster extends ActivityCluster {
@@ -49,7 +49,7 @@
 
     /**
      * Set up the mapping of the cluster's output channel to an internal activity and its output channel
-     * 
+     *
      * @param clusterOutputIndex
      *            the output channel index for the cluster
      * @param activityId
@@ -64,7 +64,7 @@
 
     /**
      * get the an internal activity and its output channel of a cluster output channel
-     * 
+     *
      * @param clusterOutputIndex
      *            the output channel index for the cluster
      * @return a pair containing the activity id of the corresponding internal activity and the output channel index
@@ -75,7 +75,7 @@
 
     /**
      * Set up the mapping of the cluster's input channel to an internal activity and input output channel
-     * 
+     *
      * @param clusterInputIndex
      *            the input channel index for the cluster
      * @param activityId
@@ -90,7 +90,7 @@
 
     /**
      * get the an internal activity and its input channel of a cluster input channel
-     * 
+     *
      * @param clusterOutputIndex
      *            the output channel index for the cluster
      * @return a pair containing the activity id of the corresponding internal activity and the output channel index
@@ -101,7 +101,7 @@
 
     /**
      * Get the cluster input channel of an input-boundary activity and its input channel
-     * 
+     *
      * @param activityInputChannel
      *            the input-boundary activity and its input channel
      * @return the cluster input channel
@@ -113,7 +113,7 @@
 
     /**
      * Get the cluster output channel of an input-boundary activity and its output channel
-     * 
+     *
      * @param activityOutputChannel
      *            the output-boundary activity and its output channel
      * @return the cluster output channel
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java
index 9f9809d..2f3c72b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java
@@ -42,7 +42,7 @@
 /**
  * This class can be used to execute a DAG of activities inside which
  * there are only one-to-one connectors.
- * 
+ *
  * @author yingyib
  */
 public class SuperActivity extends OneToOneConnectedActivityCluster implements IActivity {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
index 8213fd9..827e478 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivityOperatorNodePushable.java
@@ -26,9 +26,10 @@
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Queue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
 
 import org.apache.commons.lang3.tuple.Pair;
-
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.ActivityId;
@@ -42,12 +43,12 @@
 /**
  * The runtime of a SuperActivity, which internally executes a DAG of one-to-one
  * connected activities in a single thread.
- * 
+ *
  * @author yingyib
  */
 public class SuperActivityOperatorNodePushable implements IOperatorNodePushable {
     private final Map<ActivityId, IOperatorNodePushable> operatorNodePushables = new HashMap<ActivityId, IOperatorNodePushable>();
-    private final List<IOperatorNodePushable> operatprNodePushablesBFSOrder = new ArrayList<IOperatorNodePushable>();
+    private final List<IOperatorNodePushable> operatorNodePushablesBFSOrder = new ArrayList<IOperatorNodePushable>();
     private final Map<ActivityId, IActivity> startActivities;
     private final SuperActivity parent;
     private final IHyracksTaskContext ctx;
@@ -78,12 +79,8 @@
 
     @Override
     public void initialize() throws HyracksDataException {
-        /**
-         * initialize operator node pushables in the BFS order
-         */
-        for (IOperatorNodePushable op : operatprNodePushablesBFSOrder) {
-            op.initialize();
-        }
+        // Initializes all OperatorNodePushables in parallel.
+        runInParallel(op -> op.initialize());
     }
 
     public void init() throws HyracksDataException {
@@ -98,7 +95,7 @@
             IOperatorNodePushable opPushable = entry.getValue().createPushRuntime(ctx, recordDescProvider, partition,
                     nPartitions);
             startOperatorNodePushables.put(entry.getKey(), opPushable);
-            operatprNodePushablesBFSOrder.add(opPushable);
+            operatorNodePushablesBFSOrder.add(opPushable);
             operatorNodePushables.put(entry.getKey(), opPushable);
             inputArity += opPushable.getInputArity();
             outputConnectors = parent.getActivityOutputMap().get(entry.getKey());
@@ -136,9 +133,9 @@
             IOperatorNodePushable sourceOp = operatorNodePushables.get(sourceId);
             IOperatorNodePushable destOp = operatorNodePushables.get(destId);
             if (destOp == null) {
-                destOp = channel.getRight().getLeft()
-                        .createPushRuntime(ctx, recordDescProvider, partition, nPartitions);
-                operatprNodePushablesBFSOrder.add(destOp);
+                destOp = channel.getRight().getLeft().createPushRuntime(ctx, recordDescProvider, partition,
+                        nPartitions);
+                operatorNodePushablesBFSOrder.add(destOp);
                 operatorNodePushables.put(destId, destOp);
             }
 
@@ -157,12 +154,8 @@
 
     @Override
     public void deinitialize() throws HyracksDataException {
-        /**
-         * de-initialize operator node pushables
-         */
-        for (IOperatorNodePushable op : operatprNodePushablesBFSOrder) {
-            op.deinitialize();
-        }
+        // De-initialize all OperatorNodePushables in parallel.
+        runInParallel(op -> op.deinitialize());
     }
 
     @Override
@@ -197,4 +190,32 @@
         return "Super Activity " + parent.getActivityMap().values().toString();
     }
 
+    interface OperatorNodePushableAction {
+        public void runAction(IOperatorNodePushable op) throws HyracksDataException;
+    }
+
+    private void runInParallel(OperatorNodePushableAction opAction) throws HyracksDataException {
+        List<Future<Void>> initializationTasks = new ArrayList<Future<Void>>();
+        try {
+            // Run one action for all OperatorNodePushables in parallel through a thread pool.
+            for (final IOperatorNodePushable op : operatorNodePushablesBFSOrder) {
+                initializationTasks.add(ctx.getExecutorService().submit(new Callable<Void>() {
+                    @Override
+                    public Void call() throws Exception {
+                        opAction.runAction(op);
+                        return null;
+                    }
+                }));
+            }
+            // Waits until all parallel actions to finish.
+            for (Future<Void> initializationTask : initializationTasks) {
+                initializationTask.get();
+            }
+        } catch (Throwable th) {
+            for (Future<Void> initializationTask : initializationTasks) {
+                initializationTask.cancel(true);
+            }
+            throw new HyracksDataException(th);
+        }
+    }
 }
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/IService.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/service/IControllerService.java
similarity index 91%
rename from hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/IService.java
rename to hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/service/IControllerService.java
index d6a4a45..2e742ac 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/IService.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/service/IControllerService.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.control.common.service;
+package org.apache.hyracks.api.service;
 
-public interface IService {
+public interface IControllerService {
     public void start() throws Exception;
 
     public void stop() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/ClusterTopology.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/ClusterTopology.java
index 7fcc9cd..565f9c4 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/ClusterTopology.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/ClusterTopology.java
@@ -37,4 +37,4 @@
     public boolean lookupNetworkTerminal(String terminalName, List<Integer> path) {
         return clusterSwitch.lookupNetworkTerminal(terminalName, path);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkEndpoint.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkEndpoint.java
index 81442af..9ecb1d4 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkEndpoint.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkEndpoint.java
@@ -47,4 +47,4 @@
     public final Map<String, String> getProperties() {
         return properties;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkSwitch.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkSwitch.java
index c9a2bfa..ae00d37 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkSwitch.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkSwitch.java
@@ -109,4 +109,4 @@
             return endpoint;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkTerminal.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkTerminal.java
index 3088f75..d4937c6 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkTerminal.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/NetworkTerminal.java
@@ -31,4 +31,4 @@
     public EndpointType getType() {
         return EndpointType.NETWORK_TERMINAL;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/TopologyDefinitionParser.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/TopologyDefinitionParser.java
index 0b8aeca..57330af 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/TopologyDefinitionParser.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/topology/TopologyDefinitionParser.java
@@ -136,4 +136,4 @@
             ports = new ArrayList<NetworkSwitch.Port>();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExecutionTimeProfiler.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExecutionTimeProfiler.java
new file mode 100644
index 0000000..7673f2c
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExecutionTimeProfiler.java
@@ -0,0 +1,111 @@
+/*
+ * 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.hyracks.api.util;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class ExecutionTimeProfiler {
+
+    public static final boolean PROFILE_MODE = false;
+    public static final String INIT = "init";
+    private FileOutputStream fos;
+    private String filePath;
+    private StringBuilder sb;
+    private int printInterval;
+    private int addCount;
+    private Object lock1 = new Object();
+
+
+    // [Key: Job, Value: [Key: Operator, Value: Duration of each operators]]
+    private HashMap<String, LinkedHashMap<String, String>> spentTimePerJobMap;
+
+    public ExecutionTimeProfiler(String filePath, int printInterval) {
+        this.filePath = new String(filePath);
+        this.sb = new StringBuilder();
+        this.printInterval = printInterval;
+        this.spentTimePerJobMap = new HashMap<String, LinkedHashMap<String, String>>();
+    }
+
+    public void begin() {
+        try {
+            fos = ExperimentProfilerUtils.openOutputFile(filePath);
+            addCount = 0;
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public synchronized void add(String jobSignature, String operatorSignature, String message, boolean flushNeeded) {
+
+        if (!spentTimePerJobMap.containsKey(jobSignature)) {
+            spentTimePerJobMap.put(jobSignature, new LinkedHashMap<String, String>());
+        }
+        spentTimePerJobMap.get(jobSignature).put(operatorSignature, message);
+
+        if (flushNeeded) {
+            flush(jobSignature);
+        }
+    }
+
+    public synchronized void flush(String jobSignature) {
+        try {
+            synchronized (lock1) {
+                sb.append("\n\n");
+                for (Map.Entry<String, String> entry : spentTimePerJobMap.get(jobSignature).entrySet()) {
+                    sb.append(entry.getValue());
+                }
+                fos.write(sb.toString().getBytes());
+                fos.flush();
+                spentTimePerJobMap.get(jobSignature).clear();
+                sb.setLength(0);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public void clear() {
+        spentTimePerJobMap.clear();
+        sb.setLength(0);
+    }
+
+    public void clear(String jobSignature) {
+        spentTimePerJobMap.get(jobSignature).clear();
+        sb.setLength(0);
+    }
+
+    public synchronized void end() {
+        try {
+            if (fos != null) {
+                fos.flush();
+                fos.close();
+                fos = null;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new IllegalStateException(e);
+        }
+    }
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExecutionTimeStopWatch.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExecutionTimeStopWatch.java
new file mode 100644
index 0000000..4613fd5
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExecutionTimeStopWatch.java
@@ -0,0 +1,98 @@
+/*
+ * 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.hyracks.api.util;
+
+import java.text.SimpleDateFormat;
+
+public class ExecutionTimeStopWatch {
+    private long startTime = 0;
+    private long stopTime = 0;
+    private long elapsedTime = 0;
+
+    private long elapsedTimeBetweenTimeStamp = 0;
+
+    // starting timestamp of an operator
+    private long startTimeStamp = 0;
+
+    // ending timestamp
+    private long endTimeStamp = 0;
+
+    // The timer has started?
+    private boolean isStarted = false;
+
+    private String message;
+
+    public void start() {
+        elapsedTime = 0;
+        startTime = System.currentTimeMillis();
+        startTimeStamp = startTime;
+        isStarted = true;
+        message = "";
+    }
+
+    public void suspend() {
+        stopTime = System.currentTimeMillis();
+        elapsedTime += stopTime - startTime;
+    }
+
+    public void resume() {
+        startTime = System.currentTimeMillis();
+    }
+
+    public void finish() {
+        endTimeStamp = stopTime;
+        elapsedTimeBetweenTimeStamp = endTimeStamp - startTimeStamp;
+    }
+
+    // elapsed time in milliseconds
+    public long getElapsedTime() {
+        return elapsedTime;
+    }
+
+    // elapsed time in seconds
+    public double getElapsedTimeSecs() {
+        return (double) elapsedTime / 1000;
+    }
+
+    // elapsed time in milliseconds
+    public long getElapsedTimeStamp() {
+        return elapsedTimeBetweenTimeStamp;
+    }
+
+    // elapsed time in seconds
+    public double getElapsedTimeStampSecs() {
+        return (double) elapsedTimeBetweenTimeStamp / 1000;
+    }
+
+    public String getMessage(String operatorName, long timeStamp) {
+        message = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS").format(timeStamp) + "\t" + operatorName + "\t"
+                + this.getElapsedTime() + "\t" + this.getElapsedTimeSecs() + "\t" + this.getElapsedTimeStamp() + "\t"
+                + this.getElapsedTimeStampSecs() + "\n";
+        return message;
+    }
+
+    public long getStartTimeStamp() {
+        return startTimeStamp;
+    }
+
+    public long getEndTimeStamp() {
+        return endTimeStamp;
+    }
+
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExperimentProfiler.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExperimentProfiler.java
new file mode 100644
index 0000000..b98d7d3
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExperimentProfiler.java
@@ -0,0 +1,81 @@
+/*
+ * 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.hyracks.api.util;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class ExperimentProfiler {
+
+    public static final boolean PROFILE_MODE = false;
+    private FileOutputStream fos;
+    private String filePath;
+    private StringBuilder sb;
+    private int printInterval;
+    private int addCount;
+
+    public ExperimentProfiler(String filePath, int printInterval) {
+        this.filePath = new String(filePath);
+        this.sb = new StringBuilder();
+        this.printInterval = printInterval;
+    }
+
+    public void begin() {
+        try {
+            fos = ExperimentProfilerUtils.openOutputFile(filePath);
+            addCount = 0;
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public synchronized void add(String s) {
+        sb.append(s);
+        if (printInterval > 0 && ++addCount % printInterval == 0) {
+            flush();
+            addCount = 0;
+        }
+    }
+
+    public synchronized void flush() {
+        try {
+            fos.write(sb.toString().getBytes());
+            fos.flush();
+            sb.setLength(0);
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public synchronized void end() {
+        try {
+            if (fos != null) {
+                fos.flush();
+                fos.close();
+                fos = null;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new IllegalStateException(e);
+        }
+    }
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExperimentProfilerUtils.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExperimentProfilerUtils.java
new file mode 100644
index 0000000..2305573
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/ExperimentProfilerUtils.java
@@ -0,0 +1,47 @@
+/*
+ * 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.hyracks.api.util;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class ExperimentProfilerUtils {
+    public static void printToOutputFile(StringBuffer sb, FileOutputStream fos) throws IllegalStateException,
+            IOException {
+        fos.write(sb.toString().getBytes());
+    }
+
+    public static FileOutputStream openOutputFile(String filepath) throws IOException {
+        File file = new File(filepath);
+        if (file.exists()) {
+            file.delete();
+        }
+        file.createNewFile();
+        return new FileOutputStream(file);
+    }
+
+    public static void closeOutputFile(OutputStream os) throws IOException {
+        os.flush();
+        os.close();
+        os = null;
+    }
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/JavaSerializationUtils.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/JavaSerializationUtils.java
index c381090..1324c3f 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/JavaSerializationUtils.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/JavaSerializationUtils.java
@@ -118,4 +118,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/OperatorExecutionTimeProfiler.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/OperatorExecutionTimeProfiler.java
new file mode 100644
index 0000000..b5d632b
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/OperatorExecutionTimeProfiler.java
@@ -0,0 +1,41 @@
+/*
+ * 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.hyracks.api.util;
+
+import java.net.Inet4Address;
+import java.net.UnknownHostException;
+
+public class OperatorExecutionTimeProfiler {
+    public static final OperatorExecutionTimeProfiler INSTANCE = new OperatorExecutionTimeProfiler();
+    public ExecutionTimeProfiler executionTimeProfiler;
+
+    private OperatorExecutionTimeProfiler() {
+        String profileHomeDir = SpatialIndexProfiler.PROFILE_HOME_DIR;
+        if (ExecutionTimeProfiler.PROFILE_MODE) {
+            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");
+            try {
+                executionTimeProfiler = new ExecutionTimeProfiler(profileHomeDir + "executionTime-"
+                        + Inet4Address.getLocalHost().getHostAddress() + ".txt", 1);
+            } catch (UnknownHostException e) {
+                e.printStackTrace();
+            }
+            executionTimeProfiler.begin();
+        }
+    }
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/SpatialIndexProfiler.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/SpatialIndexProfiler.java
new file mode 100644
index 0000000..a1b40d0
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/SpatialIndexProfiler.java
@@ -0,0 +1,53 @@
+/*
+ * 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.hyracks.api.util;
+
+import java.net.Inet4Address;
+import java.net.UnknownHostException;
+
+public class SpatialIndexProfiler {
+    public static final SpatialIndexProfiler INSTANCE = new SpatialIndexProfiler();
+    public static final String PROFILE_HOME_DIR = "/data/seok.kim/spatial-index-experiment/asterix-instance/logs/";
+    //    public static final String PROFILE_HOME_DIR = "/Volumes/MyPassport/workspace/spatial-index-experiment/asterix-instance/logs/";
+    public ExperimentProfiler falsePositivePerQuery;
+    public ExperimentProfiler cacheMissPerQuery;
+
+    private SpatialIndexProfiler() {
+        if (ExperimentProfiler.PROFILE_MODE) {
+            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss.SSS");
+            try {
+                falsePositivePerQuery = new ExperimentProfiler(PROFILE_HOME_DIR + "falsePositivePerQuery-"
+                        + Inet4Address.getLocalHost().getHostAddress() + ".txt", 1);
+            } catch (UnknownHostException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            falsePositivePerQuery.begin();
+            try {
+                cacheMissPerQuery = new ExperimentProfiler(PROFILE_HOME_DIR + "cacheMissPerQuery-"
+                        + Inet4Address.getLocalHost().getHostAddress() + ".txt", 1);
+            } catch (UnknownHostException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            cacheMissPerQuery.begin();
+        }
+    }
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/StopWatch.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/StopWatch.java
new file mode 100644
index 0000000..e752cb3
--- /dev/null
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/util/StopWatch.java
@@ -0,0 +1,50 @@
+/*
+ * 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.hyracks.api.util;
+
+public class StopWatch {
+    private long startTime = 0;
+    private long stopTime = 0;
+    private long elapsedTime = 0;
+
+    public void start() {
+        elapsedTime = 0;
+        startTime = System.currentTimeMillis();
+    }
+
+    public void stop() {
+        stopTime = System.currentTimeMillis();
+        elapsedTime += stopTime - startTime;
+    }
+
+    public void resume() {
+        startTime = System.currentTimeMillis();
+    }
+
+    //elaspsed time in milliseconds
+    public long getElapsedTime() {
+        return elapsedTime;
+    }
+
+    //elaspsed time in seconds
+    public long getElapsedTimeSecs() {
+        return elapsedTime / 1000;
+    }
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-client/pom.xml b/hyracks/hyracks-client/pom.xml
index 70cd09b..1007f92 100644
--- a/hyracks/hyracks-client/pom.xml
+++ b/hyracks/hyracks-client/pom.xml
@@ -43,15 +43,6 @@
 		<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>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-clean-plugin</artifactId>
 				<version>2.5</version>
 				<configuration>
diff --git a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/net/ClientNetworkManager.java b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/net/ClientNetworkManager.java
index 5ad4a8b..6f42410 100644
--- a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/net/ClientNetworkManager.java
+++ b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/net/ClientNetworkManager.java
@@ -57,4 +57,4 @@
     public MuxDemuxPerformanceCounters getPerformanceCounters() {
         return md.getPerformanceCounters();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java
index 3f37ac5..a04a61c 100644
--- a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java
+++ b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java
@@ -25,5 +25,5 @@
 public interface IClusterCounterContext extends ICounterContext {
 
     public ICounter getCounter(String machineName, String counterName, boolean create);
-    
+
 }
diff --git a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java
index 29d1184..74b61b2 100644
--- a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java
+++ b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java
@@ -146,7 +146,7 @@
 
     /**
      * Update counters
-     * 
+     *
      * @param jo
      *            the Profile JSON object
      */
@@ -205,7 +205,7 @@
 
     /**
      * Request a counter from the slave machine
-     * 
+     *
      * @param slaveMachine
      * @return the JSON string from the slave machine
      */
@@ -275,4 +275,4 @@
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-comm/pom.xml b/hyracks/hyracks-comm/pom.xml
index 6bf2389..0626ebd 100644
--- a/hyracks/hyracks-comm/pom.xml
+++ b/hyracks/hyracks-comm/pom.xml
@@ -40,19 +40,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
  <dependency>
  	<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java b/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java
index 35a9b47..fba7cf5 100644
--- a/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java
+++ b/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/DatasetNetworkInputChannel.java
@@ -151,4 +151,4 @@
             // do nothing
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java b/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java
index 89a167f..235536f 100644
--- a/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java
+++ b/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkInputChannel.java
@@ -142,4 +142,4 @@
             // do nothing
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java b/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
index 84307c2..46220de 100644
--- a/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
+++ b/hyracks/hyracks-comm/src/main/java/org/apache/hyracks/comm/channels/NetworkOutputChannel.java
@@ -58,8 +58,7 @@
     @Override
     public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
         ByteBuffer destBuffer = null;
-        int startPos = 0;
-        do {
+        while (buffer.hasRemaining()) {
             synchronized (this) {
                 while (true) {
                     if (aborted) {
@@ -80,14 +79,16 @@
                     }
                 }
             }
-            buffer.position(startPos);
-            startPos = Math.min(startPos + destBuffer.capacity(), buffer.capacity());
-            buffer.limit(startPos);
             destBuffer.clear();
-            destBuffer.put(buffer);
+            if (destBuffer.capacity() < buffer.remaining()) {
+                destBuffer.put(buffer.array(), buffer.position(), destBuffer.capacity());
+                buffer.position(buffer.position() + destBuffer.capacity());
+            } else {
+                destBuffer.put(buffer);
+            }
             destBuffer.flip();
             ccb.getWriteInterface().getFullBufferAcceptor().accept(destBuffer);
-        } while (startPos < buffer.capacity());
+        }
     }
 
     @Override
@@ -117,4 +118,10 @@
             }
         }
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        // At the network boundary.
+        // This frame writer always pushes its content
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/pom.xml b/hyracks/hyracks-control/hyracks-control-cc/pom.xml
index e3d3a66..d767560 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-cc/pom.xml
@@ -27,20 +27,6 @@
     <version>0.2.18-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.7</source>
-          <target>1.7</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <properties>
       <root.dir>${basedir}/../../..</root.dir>
   </properties>
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/CCDriver.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/CCDriver.java
index 594bbfa..d2e7cb5 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/CCDriver.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/CCDriver.java
@@ -44,4 +44,4 @@
             System.exit(1);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
index 9ae7f77..e8b2c27 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/ClusterControllerService.java
@@ -35,8 +35,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.xml.sax.InputSource;
-
 import org.apache.hyracks.api.application.ICCApplicationEntryPoint;
 import org.apache.hyracks.api.client.ClusterControllerInfo;
 import org.apache.hyracks.api.client.HyracksClientInterfaceFunctions;
@@ -49,6 +47,7 @@
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.api.job.JobInfo;
 import org.apache.hyracks.api.job.JobStatus;
+import org.apache.hyracks.api.service.IControllerService;
 import org.apache.hyracks.api.topology.ClusterTopology;
 import org.apache.hyracks.api.topology.TopologyDefinitionParser;
 import org.apache.hyracks.control.cc.application.CCApplicationContext;
@@ -86,7 +85,6 @@
 import org.apache.hyracks.control.cc.work.TaskFailureWork;
 import org.apache.hyracks.control.cc.work.UnregisterNodeWork;
 import org.apache.hyracks.control.cc.work.WaitForJobCompletionWork;
-import org.apache.hyracks.control.common.AbstractRemoteService;
 import org.apache.hyracks.control.common.context.ServerContext;
 import org.apache.hyracks.control.common.controllers.CCConfig;
 import org.apache.hyracks.control.common.deployment.DeploymentRun;
@@ -104,8 +102,9 @@
 import org.apache.hyracks.ipc.exceptions.IPCException;
 import org.apache.hyracks.ipc.impl.IPCSystem;
 import org.apache.hyracks.ipc.impl.JavaSerializationBasedPayloadSerializerDeserializer;
+import org.xml.sax.InputSource;
 
-public class ClusterControllerService extends AbstractRemoteService {
+public class ClusterControllerService implements IControllerService {
     private static Logger LOGGER = Logger.getLogger(ClusterControllerService.class.getName());
 
     private final CCConfig ccConfig;
@@ -154,6 +153,8 @@
 
     private ShutdownRun shutdownCallback;
 
+    private ICCApplicationEntryPoint aep;
+
     public ClusterControllerService(final CCConfig ccConfig) throws Exception {
         this.ccConfig = ccConfig;
         File jobLogFolder = new File(ccConfig.ccRoot, "logs/jobs");
@@ -172,6 +173,7 @@
         runMapArchive = new LinkedHashMap<JobId, JobRun>() {
             private static final long serialVersionUID = 1L;
 
+            @Override
             protected boolean removeEldestEntry(Map.Entry<JobId, JobRun> eldest) {
                 return size() > ccConfig.jobHistorySize;
             }
@@ -181,11 +183,12 @@
             /** history size + 1 is for the case when history size = 0 */
             private int allowedSize = 100 * (ccConfig.jobHistorySize + 1);
 
+            @Override
             protected boolean removeEldestEntry(Map.Entry<JobId, List<Exception>> eldest) {
                 return size() > allowedSize;
             }
         };
-        workQueue = new WorkQueue();
+        workQueue = new WorkQueue(Thread.MAX_PRIORITY); // WorkQueue is in charge of heartbeat as well as other events.
         this.timer = new Timer(true);
         final ClusterTopology topology = computeClusterTopology(ccConfig);
         ccContext = new ICCContext() {
@@ -242,17 +245,21 @@
         datasetDirectoryService.init(executor);
         workQueue.start();
         LOGGER.log(Level.INFO, "Started ClusterControllerService");
+        if (aep != null) {
+            // Sometimes, there is no application entry point. Check hyracks-client project
+            aep.startupCompleted();
+        }
     }
 
     private void startApplication() throws Exception {
-        appCtx = new CCApplicationContext(serverCtx, ccContext);
+        appCtx = new CCApplicationContext(this, serverCtx, ccContext);
         appCtx.addJobLifecycleListener(datasetDirectoryService);
         String className = ccConfig.appCCMainClass;
         if (className != null) {
             Class<?> c = Class.forName(className);
-            ICCApplicationEntryPoint aep = (ICCApplicationEntryPoint) c.newInstance();
-            String[] args = ccConfig.appArgs == null ? null : ccConfig.appArgs.toArray(new String[ccConfig.appArgs
-                    .size()]);
+            aep = (ICCApplicationEntryPoint) c.newInstance();
+            String[] args = ccConfig.appArgs == null ? null
+                    : ccConfig.appArgs.toArray(new String[ccConfig.appArgs.size()]);
             aep.start(appCtx, args);
         }
         executor = Executors.newCachedThreadPool(appCtx.getThreadFactory());
@@ -352,7 +359,8 @@
 
     private class HyracksClientInterfaceIPCI implements IIPCI {
         @Override
-        public void deliverIncomingMessage(IIPCHandle handle, long mid, long rmid, Object payload, Exception exception) {
+        public void deliverIncomingMessage(IIPCHandle handle, long mid, long rmid, Object payload,
+                Exception exception) {
             HyracksClientInterfaceFunctions.Function fn = (HyracksClientInterfaceFunctions.Function) payload;
             switch (fn.getFunctionId()) {
                 case GET_CLUSTER_CONTROLLER_INFO: {
@@ -381,8 +389,8 @@
                 case START_JOB: {
                     HyracksClientInterfaceFunctions.StartJobFunction sjf = (HyracksClientInterfaceFunctions.StartJobFunction) fn;
                     JobId jobId = createJobId();
-                    workQueue.schedule(new JobStartWork(ClusterControllerService.this, sjf.getDeploymentId(), sjf
-                            .getACGGFBytes(), sjf.getJobFlags(), jobId, new IPCResponder<JobId>(handle, mid)));
+                    workQueue.schedule(new JobStartWork(ClusterControllerService.this, sjf.getDeploymentId(),
+                            sjf.getACGGFBytes(), sjf.getJobFlags(), jobId, new IPCResponder<JobId>(handle, mid)));
                     return;
                 }
 
@@ -394,15 +402,15 @@
 
                 case GET_DATASET_RESULT_STATUS: {
                     HyracksClientInterfaceFunctions.GetDatasetResultStatusFunction gdrlf = (HyracksClientInterfaceFunctions.GetDatasetResultStatusFunction) fn;
-                    workQueue.schedule(new GetResultStatusWork(ClusterControllerService.this, gdrlf.getJobId(), gdrlf
-                            .getResultSetId(), new IPCResponder<Status>(handle, mid)));
+                    workQueue.schedule(new GetResultStatusWork(ClusterControllerService.this, gdrlf.getJobId(),
+                            gdrlf.getResultSetId(), new IPCResponder<Status>(handle, mid)));
                     return;
                 }
 
                 case GET_DATASET_RESULT_LOCATIONS: {
                     HyracksClientInterfaceFunctions.GetDatasetResultLocationsFunction gdrlf = (HyracksClientInterfaceFunctions.GetDatasetResultLocationsFunction) fn;
-                    workQueue.schedule(new GetResultPartitionLocationsWork(ClusterControllerService.this, gdrlf
-                            .getJobId(), gdrlf.getResultSetId(), gdrlf.getKnownRecords(),
+                    workQueue.schedule(new GetResultPartitionLocationsWork(ClusterControllerService.this,
+                            gdrlf.getJobId(), gdrlf.getResultSetId(), gdrlf.getKnownRecords(),
                             new IPCResponder<DatasetDirectoryRecord[]>(handle, mid)));
                     return;
                 }
@@ -431,8 +439,8 @@
 
                 case CLI_DEPLOY_BINARY: {
                     HyracksClientInterfaceFunctions.CliDeployBinaryFunction dbf = (HyracksClientInterfaceFunctions.CliDeployBinaryFunction) fn;
-                    workQueue.schedule(new CliDeployBinaryWork(ClusterControllerService.this, dbf.getBinaryURLs(), dbf
-                            .getDeploymentId(), new IPCResponder<DeploymentId>(handle, mid)));
+                    workQueue.schedule(new CliDeployBinaryWork(ClusterControllerService.this, dbf.getBinaryURLs(),
+                            dbf.getDeploymentId(), new IPCResponder<DeploymentId>(handle, mid)));
                     return;
                 }
 
@@ -476,22 +484,22 @@
 
                 case NODE_HEARTBEAT: {
                     CCNCFunctions.NodeHeartbeatFunction nhf = (CCNCFunctions.NodeHeartbeatFunction) fn;
-                    workQueue.schedule(new NodeHeartbeatWork(ClusterControllerService.this, nhf.getNodeId(), nhf
-                            .getHeartbeatData()));
+                    workQueue.schedule(new NodeHeartbeatWork(ClusterControllerService.this, nhf.getNodeId(),
+                            nhf.getHeartbeatData()));
                     return;
                 }
 
                 case NOTIFY_JOBLET_CLEANUP: {
                     CCNCFunctions.NotifyJobletCleanupFunction njcf = (CCNCFunctions.NotifyJobletCleanupFunction) fn;
-                    workQueue.schedule(new JobletCleanupNotificationWork(ClusterControllerService.this,
-                            njcf.getJobId(), njcf.getNodeId()));
+                    workQueue.schedule(new JobletCleanupNotificationWork(ClusterControllerService.this, njcf.getJobId(),
+                            njcf.getNodeId()));
                     return;
                 }
 
                 case NOTIFY_DEPLOY_BINARY: {
                     CCNCFunctions.NotifyDeployBinaryFunction ndbf = (CCNCFunctions.NotifyDeployBinaryFunction) fn;
-                    workQueue.schedule(new NotifyDeployBinaryWork(ClusterControllerService.this,
-                            ndbf.getDeploymentId(), ndbf.getNodeId(), ndbf.getDeploymentStatus()));
+                    workQueue.schedule(new NotifyDeployBinaryWork(ClusterControllerService.this, ndbf.getDeploymentId(),
+                            ndbf.getNodeId(), ndbf.getDeploymentStatus()));
                     return;
                 }
 
@@ -503,35 +511,35 @@
 
                 case NOTIFY_TASK_COMPLETE: {
                     CCNCFunctions.NotifyTaskCompleteFunction ntcf = (CCNCFunctions.NotifyTaskCompleteFunction) fn;
-                    workQueue.schedule(new TaskCompleteWork(ClusterControllerService.this, ntcf.getJobId(), ntcf
-                            .getTaskId(), ntcf.getNodeId(), ntcf.getStatistics()));
+                    workQueue.schedule(new TaskCompleteWork(ClusterControllerService.this, ntcf.getJobId(),
+                            ntcf.getTaskId(), ntcf.getNodeId(), ntcf.getStatistics()));
                     return;
                 }
                 case NOTIFY_TASK_FAILURE: {
                     CCNCFunctions.NotifyTaskFailureFunction ntff = (CCNCFunctions.NotifyTaskFailureFunction) fn;
-                    workQueue.schedule(new TaskFailureWork(ClusterControllerService.this, ntff.getJobId(), ntff
-                            .getTaskId(), ntff.getNodeId(), ntff.getExceptions()));
+                    workQueue.schedule(new TaskFailureWork(ClusterControllerService.this, ntff.getJobId(),
+                            ntff.getTaskId(), ntff.getNodeId(), ntff.getExceptions()));
                     return;
                 }
 
                 case REGISTER_PARTITION_PROVIDER: {
                     CCNCFunctions.RegisterPartitionProviderFunction rppf = (CCNCFunctions.RegisterPartitionProviderFunction) fn;
-                    workQueue.schedule(new RegisterPartitionAvailibilityWork(ClusterControllerService.this, rppf
-                            .getPartitionDescriptor()));
+                    workQueue.schedule(new RegisterPartitionAvailibilityWork(ClusterControllerService.this,
+                            rppf.getPartitionDescriptor()));
                     return;
                 }
 
                 case REGISTER_PARTITION_REQUEST: {
                     CCNCFunctions.RegisterPartitionRequestFunction rprf = (CCNCFunctions.RegisterPartitionRequestFunction) fn;
-                    workQueue.schedule(new RegisterPartitionRequestWork(ClusterControllerService.this, rprf
-                            .getPartitionRequest()));
+                    workQueue.schedule(new RegisterPartitionRequestWork(ClusterControllerService.this,
+                            rprf.getPartitionRequest()));
                     return;
                 }
 
                 case REGISTER_RESULT_PARTITION_LOCATION: {
                     CCNCFunctions.RegisterResultPartitionLocationFunction rrplf = (CCNCFunctions.RegisterResultPartitionLocationFunction) fn;
-                    workQueue.schedule(new RegisterResultPartitionLocationWork(ClusterControllerService.this, rrplf
-                            .getJobId(), rrplf.getResultSetId(), rrplf.getOrderedResult(), rrplf.getEmptyResult(),
+                    workQueue.schedule(new RegisterResultPartitionLocationWork(ClusterControllerService.this,
+                            rrplf.getJobId(), rrplf.getResultSetId(), rrplf.getOrderedResult(), rrplf.getEmptyResult(),
                             rrplf.getPartition(), rrplf.getNPartitions(), rrplf.getNetworkAddress()));
                     return;
                 }
@@ -545,15 +553,15 @@
 
                 case REPORT_RESULT_PARTITION_FAILURE: {
                     CCNCFunctions.ReportResultPartitionFailureFunction rrplf = (CCNCFunctions.ReportResultPartitionFailureFunction) fn;
-                    workQueue.schedule(new ReportResultPartitionFailureWork(ClusterControllerService.this, rrplf
-                            .getJobId(), rrplf.getResultSetId(), rrplf.getPartition()));
+                    workQueue.schedule(new ReportResultPartitionFailureWork(ClusterControllerService.this,
+                            rrplf.getJobId(), rrplf.getResultSetId(), rrplf.getPartition()));
                     return;
                 }
 
                 case SEND_APPLICATION_MESSAGE: {
                     CCNCFunctions.SendApplicationMessageFunction rsf = (CCNCFunctions.SendApplicationMessageFunction) fn;
-                    workQueue.schedule(new ApplicationMessageWork(ClusterControllerService.this, rsf.getMessage(), rsf
-                            .getDeploymentId(), rsf.getNodeId()));
+                    workQueue.schedule(new ApplicationMessageWork(ClusterControllerService.this, rsf.getMessage(),
+                            rsf.getDeploymentId(), rsf.getNodeId()));
                     return;
                 }
 
@@ -604,7 +612,7 @@
 
     /**
      * Add a deployment run
-     * 
+     *
      * @param deploymentKey
      * @param nodeControllerIds
      */
@@ -614,7 +622,7 @@
 
     /**
      * Get a deployment run
-     * 
+     *
      * @param deploymentKey
      */
     public synchronized DeploymentRun getDeploymentRun(DeploymentId deploymentKey) {
@@ -623,7 +631,7 @@
 
     /**
      * Remove a deployment run
-     * 
+     *
      * @param deploymentKey
      */
     public synchronized void removeDeploymentRun(DeploymentId deploymentKey) {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/NodeControllerState.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/NodeControllerState.java
index e8596ae..d93ba0d 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/NodeControllerState.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/NodeControllerState.java
@@ -321,4 +321,4 @@
 
         return o;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/HyracksAdminConsoleApplication.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/HyracksAdminConsoleApplication.java
index 3655327..fbd5e25 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/HyracksAdminConsoleApplication.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/HyracksAdminConsoleApplication.java
@@ -40,4 +40,4 @@
     public ClusterControllerService getClusterControllerService() {
         return ccs;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/AbstractPage.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/AbstractPage.java
index 75b2052..db40465 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/AbstractPage.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/AbstractPage.java
@@ -28,4 +28,4 @@
     public HyracksAdminConsoleApplication getAdminConsoleApplication() {
         return (HyracksAdminConsoleApplication) getApplication();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/IndexPage.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/IndexPage.java
index 18d83b5..224ecd7 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/IndexPage.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/IndexPage.java
@@ -87,4 +87,4 @@
         };
         add(jobList);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
index f7a9dde..aff8719 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
@@ -331,4 +331,4 @@
             this.resolution = resolution;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.java
index 80df3bf..e13f5fd 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/adminconsole/pages/NodeDetailsPage.java
@@ -25,4 +25,4 @@
 
     public NodeDetailsPage(PageParameters params) throws Exception {
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/application/CCApplicationContext.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/application/CCApplicationContext.java
index 988b678..61505eb 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/application/CCApplicationContext.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/application/CCApplicationContext.java
@@ -33,6 +33,8 @@
 import org.apache.hyracks.api.job.IActivityClusterGraphGeneratorFactory;
 import org.apache.hyracks.api.job.IJobLifecycleListener;
 import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.api.service.IControllerService;
+import org.apache.hyracks.control.cc.ClusterControllerService;
 import org.apache.hyracks.control.common.application.ApplicationContext;
 import org.apache.hyracks.control.common.context.ServerContext;
 import org.apache.hyracks.control.common.work.IResultCallback;
@@ -48,10 +50,13 @@
 
     private List<IJobLifecycleListener> jobLifecycleListeners;
     private List<IClusterLifecycleListener> clusterLifecycleListeners;
+    private final ClusterControllerService ccs;
 
-    public CCApplicationContext(ServerContext serverCtx, ICCContext ccContext) throws IOException {
+    public CCApplicationContext(ClusterControllerService ccs, ServerContext serverCtx, ICCContext ccContext)
+            throws IOException {
         super(serverCtx);
         this.ccContext = ccContext;
+        this.ccs = ccs;
         initPendingNodeIds = new HashSet<String>();
         deinitPendingNodeIds = new HashSet<String>();
         jobLifecycleListeners = new ArrayList<IJobLifecycleListener>();
@@ -107,4 +112,9 @@
             l.notifyNodeFailure(deadNodeIds);
         }
     }
-}
\ No newline at end of file
+
+    @Override
+    public IControllerService getControllerService() {
+        return ccs;
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/dataset/DatasetDirectoryService.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/dataset/DatasetDirectoryService.java
index 353ad21..5d45920 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/dataset/DatasetDirectoryService.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/dataset/DatasetDirectoryService.java
@@ -168,8 +168,7 @@
         final Waiters waiters = jobResultLocations.get(jobId).waiters;
         if (waiters != null) {
             for (ResultSetId rsId : waiters.keySet()) {
-                waiters.get(rsId).callback.setException(exceptions.get(0));
-                waiters.remove(rsId);
+                waiters.remove(rsId).callback.setException(exceptions.get(0));
             }
         }
         notifyAll();
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityClusterPlan.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityClusterPlan.java
index ae08edf..cd7a7b7 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityClusterPlan.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityClusterPlan.java
@@ -39,4 +39,4 @@
     public TaskCluster[] getTaskClusters() {
         return taskClusters;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityPlan.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityPlan.java
index 6c563a6..d4df923 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityPlan.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/ActivityPlan.java
@@ -40,4 +40,4 @@
     public void setTasks(Task[] tasks) {
         this.tasks = tasks;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobStatusConditionVariable.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobStatusConditionVariable.java
index 276cf8c..dd4d18e 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobStatusConditionVariable.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/IJobStatusConditionVariable.java
@@ -20,4 +20,4 @@
 
 public interface IJobStatusConditionVariable {
     public void waitForCompletion() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/Task.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/Task.java
index 3e466bb..69eddae 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/Task.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/Task.java
@@ -69,4 +69,4 @@
     public String toString() {
         return String.valueOf(taskId);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskAttempt.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskAttempt.java
index 752f5fe..c834029 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskAttempt.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskAttempt.java
@@ -103,4 +103,4 @@
     public void setEndTime(long endTime) {
         this.endTime = endTime;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskCluster.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskCluster.java
index f619d30..f7a325e 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskCluster.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskCluster.java
@@ -91,4 +91,4 @@
     public String toString() {
         return "TC:" + Arrays.toString(tasks);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterAttempt.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterAttempt.java
index e2cb659..cad200d 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterAttempt.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterAttempt.java
@@ -102,4 +102,4 @@
     public int decrementPendingTasksCounter() {
         return --pendingTaskCounter;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterId.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterId.java
index 287e0d3..4709309 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterId.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/job/TaskClusterId.java
@@ -74,4 +74,4 @@
     public String toString() {
         return "TC:" + activityClusterId + ":" + id;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionMatchMaker.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionMatchMaker.java
index e3f110f..cca56fc 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionMatchMaker.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionMatchMaker.java
@@ -208,4 +208,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionUtils.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionUtils.java
index 667d15e..807798e 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionUtils.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/partitions/PartitionUtils.java
@@ -40,4 +40,4 @@
         final INodeController requestorNC = requestorNCS.getNodeController();
         requestorNC.reportPartitionAvailability(pid, dataport);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityClusterPlanner.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityClusterPlanner.java
index 30008e9..c13a458 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityClusterPlanner.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityClusterPlanner.java
@@ -445,4 +445,4 @@
     public Map<? extends PartitionId, ? extends TaskCluster> getPartitionProducingTaskClusterMap() {
         return partitionProducingTaskClusterMap;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityPartitionDetails.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityPartitionDetails.java
index 14a2976..97b459c 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityPartitionDetails.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/ActivityPartitionDetails.java
@@ -50,4 +50,4 @@
         return nPartitions + ":" + (nInputPartitions == null ? "[]" : Arrays.toString(nInputPartitions)) + ":"
                 + (nOutputPartitions == null ? "[]" : Arrays.toString(nOutputPartitions));
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java
index f221530..5813700 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java
@@ -221,7 +221,7 @@
      * Runnability rank has the following semantics
      * Runnability(Runnable TaskCluster depending on completed TaskClusters) = {RUNNABLE, 0}
      * Runnability(Runnable TaskCluster) = max(Rank(Dependent TaskClusters)) + 1
-     * Runnability(Non-schedulable TaskCluster) = {NOT_RUNNABLE, _} 
+     * Runnability(Non-schedulable TaskCluster) = {NOT_RUNNABLE, _}
      */
     private Runnability assignRunnabilityRank(TaskCluster goal, Map<TaskCluster, Runnability> runnabilityMap) {
         if (LOGGER.isLoggable(Level.FINE)) {
@@ -626,7 +626,7 @@
 
     /**
      * Indicates that a single task attempt has encountered a failure.
-     * 
+     *
      * @param ta
      *            - Failed Task Attempt
      * @param ac
@@ -661,7 +661,7 @@
 
     /**
      * Indicates that the provided set of nodes have left the cluster.
-     * 
+     *
      * @param deadNodes
      *            - Set of failed nodes
      */
@@ -749,4 +749,4 @@
         }
         return jobLogObject;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/PartitionConstraintSolver.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/PartitionConstraintSolver.java
index 8154983..6a41d01 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/PartitionConstraintSolver.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/PartitionConstraintSolver.java
@@ -126,4 +126,4 @@
             this.status = status;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/RankedRunnableTaskCluster.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/RankedRunnableTaskCluster.java
index 69b9570..a79bf50 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/RankedRunnableTaskCluster.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/RankedRunnableTaskCluster.java
@@ -48,4 +48,4 @@
         int cmp = rank - o.rank;
         return cmp < 0 ? -1 : (cmp > 0 ? 1 : 0);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/Runnability.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/Runnability.java
index 5ee2e37..70d3f16 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/Runnability.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/Runnability.java
@@ -102,4 +102,4 @@
     public String toString() {
         return "{" + tag + ", " + priority + "}";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/ApplicationInstallationHandler.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/ApplicationInstallationHandler.java
index ac77ea0..aa15c38 100755
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/ApplicationInstallationHandler.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/ApplicationInstallationHandler.java
@@ -122,4 +122,4 @@
             throw e;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/JobsRESTAPIFunction.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/JobsRESTAPIFunction.java
index eaaa9c0..bab77ca 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/JobsRESTAPIFunction.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/JobsRESTAPIFunction.java
@@ -67,4 +67,4 @@
         }
         return result;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/NodesRESTAPIFunction.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/NodesRESTAPIFunction.java
index 73ed28e..8423ea6 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/NodesRESTAPIFunction.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/NodesRESTAPIFunction.java
@@ -51,4 +51,4 @@
         }
         return result;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/WebServer.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/WebServer.java
index 63ba68d..71ae37d 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/WebServer.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/WebServer.java
@@ -125,4 +125,4 @@
     public void addHandler(Handler handler) {
         handlerCollection.addHandler(handler);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/IJSONOutputFunction.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/IJSONOutputFunction.java
index 3251c77..f55bf84 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/IJSONOutputFunction.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/IJSONOutputFunction.java
@@ -22,4 +22,4 @@
 
 public interface IJSONOutputFunction {
     public JSONObject invoke(String[] arguments) throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONOutputRequestHandler.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONOutputRequestHandler.java
index a9e2a47..b00eeae 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONOutputRequestHandler.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONOutputRequestHandler.java
@@ -54,4 +54,4 @@
             e.printStackTrace();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONUtils.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONUtils.java
index 01fb1a2..5da4d9d 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONUtils.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/JSONUtils.java
@@ -33,4 +33,4 @@
         }
         return list;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/RoutingHandler.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/RoutingHandler.java
index bf793a9..55fda84 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/RoutingHandler.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/web/util/RoutingHandler.java
@@ -66,4 +66,4 @@
             h.handle(rest, baseRequest, request, response);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/AbstractTaskLifecycleWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/AbstractTaskLifecycleWork.java
index 457438a..9134a91 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/AbstractTaskLifecycleWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/AbstractTaskLifecycleWork.java
@@ -76,4 +76,4 @@
     }
 
     protected abstract void performEvent(TaskAttempt ta);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ApplicationMessageWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ApplicationMessageWork.java
index 8718e4f..40a83a2 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ApplicationMessageWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ApplicationMessageWork.java
@@ -38,7 +38,8 @@
     private String nodeId;
     private ClusterControllerService ccs;
 
-    public ApplicationMessageWork(ClusterControllerService ccs, byte[] message, DeploymentId deploymentId, String nodeId) {
+    public ApplicationMessageWork(ClusterControllerService ccs, byte[] message, DeploymentId deploymentId,
+            String nodeId) {
         super(ccs, nodeId, null);
         this.ccs = ccs;
         this.deploymentId = deploymentId;
@@ -54,7 +55,11 @@
             ccs.getExecutor().execute(new Runnable() {
                 @Override
                 public void run() {
-                    ctx.getMessageBroker().receivedMessage(data, nodeId);
+                    try {
+                        ctx.getMessageBroker().receivedMessage(data, nodeId);
+                    } catch (Exception e) {
+                        throw new RuntimeException(e);
+                    }
                 }
             });
         } catch (Exception e) {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java
index 880878d..741c641 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java
@@ -39,7 +39,7 @@
  * It first deploys the jar to CC application context.
  * Then, it remotely calls each NC service to deploy the jars listed as http URLs.
  * NOTE: in current implementation, a user cannot deploy with the same deployment id simultaneously.
- * 
+ *
  * @author yingyib
  */
 public class CliDeployBinaryWork extends SynchronizableWork {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java
index 685501e..5f97ce2 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java
@@ -37,7 +37,7 @@
  * It first undeploys the jar to CC application context by giving it a deployment id.
  * Then, it remotely calls each NC service to undeploy by giving them a deployment id.
  * NOTE: in current implementation, a user cannot undeploy with the same deployment id simultaneously.
- * 
+ *
  * @author yingyib
  */
 public class CliUnDeployBinaryWork extends SynchronizableWork {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetActivityClusterGraphJSONWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetActivityClusterGraphJSONWork.java
index b9b2adc..951e67e 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetActivityClusterGraphJSONWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetActivityClusterGraphJSONWork.java
@@ -51,4 +51,4 @@
     public JSONObject getJSON() {
         return json;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetDatasetDirectoryServiceInfoWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetDatasetDirectoryServiceInfoWork.java
index 693e3d6..fb1febf 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetDatasetDirectoryServiceInfoWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetDatasetDirectoryServiceInfoWork.java
@@ -42,4 +42,4 @@
             callback.setException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetIpAddressNodeNameMapWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetIpAddressNodeNameMapWork.java
index 3a498f8..31a829c 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetIpAddressNodeNameMapWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetIpAddressNodeNameMapWork.java
@@ -38,4 +38,4 @@
     protected void doRun() throws Exception {
         map.putAll(ccs.getIpAddressNodeNameMap());
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobInfoWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobInfoWork.java
index da71bed..e072c21 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobInfoWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobInfoWork.java
@@ -50,4 +50,4 @@
             callback.setException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobRunJSONWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobRunJSONWork.java
index 833dfab..f2119c3 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobRunJSONWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobRunJSONWork.java
@@ -51,4 +51,4 @@
     public JSONObject getJSON() {
         return json;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobStatusWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobStatusWork.java
index adeba31..d45a9cc 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobStatusWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobStatusWork.java
@@ -49,4 +49,4 @@
             callback.setException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobSummariesJSONWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobSummariesJSONWork.java
index 2a3a4cb..f71a701 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobSummariesJSONWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetJobSummariesJSONWork.java
@@ -59,4 +59,4 @@
     public JSONArray getSummaries() {
         return summaries;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeControllersInfoWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeControllersInfoWork.java
index afc28c76a..785a202 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeControllersInfoWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeControllersInfoWork.java
@@ -48,4 +48,4 @@
         }
         callback.setValue(result);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeDetailsJSONWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeDetailsJSONWork.java
index 7f48901..ca3f1e5 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeDetailsJSONWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeDetailsJSONWork.java
@@ -47,4 +47,4 @@
     public JSONObject getDetail() {
         return detail;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeSummariesJSONWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeSummariesJSONWork.java
index 8593ea4..4b81ad0 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeSummariesJSONWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/GetNodeSummariesJSONWork.java
@@ -43,4 +43,4 @@
     public JSONArray getSummaries() {
         return summaries;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobStartWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobStartWork.java
index ae269c7..e145aad 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobStartWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobStartWork.java
@@ -75,4 +75,4 @@
             callback.setException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobletCleanupNotificationWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobletCleanupNotificationWork.java
index 4b8ee96..40a1c29 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobletCleanupNotificationWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/JobletCleanupNotificationWork.java
@@ -73,4 +73,4 @@
             ccs.getRunHistory().put(jobId, run.getExceptions());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NodeHeartbeatWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NodeHeartbeatWork.java
index 579b9f3..120f415 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NodeHeartbeatWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NodeHeartbeatWork.java
@@ -38,4 +38,4 @@
     public Level logLevel() {
         return Level.FINEST;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java
index 75dfe03..f4b80b1 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java
@@ -26,7 +26,7 @@
 
 /***
  * This is the work happens on the CC when CC gets a deployment or undeployment notification status message from one NC.
- * 
+ *
  * @author yingyib
  */
 public class NotifyDeployBinaryWork extends AbstractHeartbeatWork {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java
index 7ac0641..dd26ea4 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterNodeWork.java
@@ -72,7 +72,7 @@
             }
             ncConfiguration = new HashMap<String, String>();
             state.getNCConfig().toMap(ncConfiguration);
-            Set<String> nodes = ipAddressNodeNameMap.get(ipAddress);
+            Set<String> nodes = ipAddressNodeNameMap.get(InetAddress.getByName(ipAddress));
             if (nodes == null) {
                 nodes = new HashSet<String>();
                 ipAddressNodeNameMap.put(InetAddress.getByName(ipAddress), nodes);
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterPartitionRequestWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterPartitionRequestWork.java
index c925992..44fc40d 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterPartitionRequestWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterPartitionRequestWork.java
@@ -60,4 +60,4 @@
     public String toString() {
         return getName() + ": " + partitionRequest;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterResultPartitionLocationWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterResultPartitionLocationWork.java
index 3548fc3..4e4732d 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterResultPartitionLocationWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RegisterResultPartitionLocationWork.java
@@ -64,4 +64,4 @@
         return getName() + ": JobId@" + jobId + " ResultSetId@" + rsId + " Partition@" + partition + " NPartitions@" + nPartitions
                 + " ResultPartitionLocation@" + networkAddress + " OrderedResult@" + orderedResult + " EmptyResult@" + emptyResult;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RemoveDeadNodesWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RemoveDeadNodesWork.java
index 2cd0476..dca6bc2 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RemoveDeadNodesWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/RemoveDeadNodesWork.java
@@ -78,4 +78,4 @@
     public Level logLevel() {
         return Level.FINE;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ReportProfilesWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ReportProfilesWork.java
index c279f6d..2278389 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ReportProfilesWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/ReportProfilesWork.java
@@ -53,4 +53,4 @@
     public Level logLevel() {
         return Level.FINEST;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/UnregisterNodeWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/UnregisterNodeWork.java
index 9f70004..839dc45 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/UnregisterNodeWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/UnregisterNodeWork.java
@@ -38,4 +38,4 @@
         Map<String, NodeControllerState> nodeMap = ccs.getNodeMap();
         nodeMap.remove(nodeId);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/WaitForJobCompletionWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/WaitForJobCompletionWork.java
index 66f5868..c1fa945 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/WaitForJobCompletionWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/WaitForJobCompletionWork.java
@@ -81,4 +81,4 @@
             }
         }
     }
-}
\ 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 f304520..a6b25dc 100644
--- a/hyracks/hyracks-control/hyracks-control-common/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-common/pom.xml
@@ -16,7 +16,6 @@
  ! specific language governing permissions and limitations
  ! under the License.
  !-->
-
 <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>
   <artifactId>hyracks-control-common</artifactId>
@@ -28,20 +27,6 @@
     <version>0.2.18-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.7</source>
-          <target>1.7</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <properties>
       <root.dir>${basedir}/../../..</root.dir>
   </properties>
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationContext.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationContext.java
index 9938ee3..c4e9ea2 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationContext.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationContext.java
@@ -74,4 +74,4 @@
     public void setThreadFactory(ThreadFactory threadFactory) {
         this.threadFactory = threadFactory;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationStatus.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationStatus.java
index dc311e6..659a324 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationStatus.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/application/ApplicationStatus.java
@@ -24,4 +24,4 @@
     INITIALIZED,
     IN_DEINITIALIZATION,
     DEINITIALIZED
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/IClusterController.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/IClusterController.java
index 7cb3c6f..ec1613d 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/IClusterController.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/IClusterController.java
@@ -70,4 +70,4 @@
     public void reportResultPartitionFailure(JobId jobId, ResultSetId rsId, int partition) throws Exception;
 
     public void getNodeControllerInfos() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java
index ec58b63..7fe2f58 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/base/INodeController.java
@@ -36,8 +36,8 @@
 
 public interface INodeController {
     public void startTasks(DeploymentId deploymentId, JobId jobId, byte[] planBytes,
-            List<TaskAttemptDescriptor> taskDescriptors,
-            Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies, EnumSet<JobFlag> flags) throws Exception;
+            List<TaskAttemptDescriptor> taskDescriptors, Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies,
+            EnumSet<JobFlag> flags) throws Exception;
 
     public void abortTasks(JobId jobId, List<TaskAttemptId> tasks) throws Exception;
 
@@ -52,4 +52,6 @@
     public void dumpState(String stateDumpId) throws Exception;
 
     public void shutDown() throws Exception;
-}
\ No newline at end of file
+
+    public void sendApplicationMessageToNC(byte[] data, DeploymentId deploymentId, String nodeId) throws Exception;
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/context/ServerContext.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/context/ServerContext.java
index 98b1b1e..d4dc054 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/context/ServerContext.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/context/ServerContext.java
@@ -41,4 +41,4 @@
     public File getBaseDir() {
         return baseDir;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeParameters.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeParameters.java
index 3da3a18..2264a3f 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeParameters.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeParameters.java
@@ -64,4 +64,4 @@
     public void setProfileDumpPeriod(int profileDumpPeriod) {
         this.profileDumpPeriod = profileDumpPeriod;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
index f4deb86..5a23455 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/controllers/NodeRegistration.java
@@ -160,4 +160,4 @@
     public Map<String, String> getSystemProperties() {
         return systemProperties;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
index 2880cb6..bcd90bd 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
@@ -20,7 +20,6 @@
 package org.apache.hyracks.control.common.deployment;
 
 import java.io.Serializable;
-import java.lang.reflect.Method;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Collections;
@@ -33,12 +32,12 @@
 
 /**
  * This is the IJobSerializerDeserializer implementation for jobs with dynamic deployed jars.
- * 
+ *
  * @author yingyib
  */
 public class ClassLoaderJobSerializerDeserializer implements IJobSerializerDeserializer {
 
-    private URLClassLoader classLoader;
+    private MutableURLClassLoader classLoader;
 
     @Override
     public Object deserialize(byte[] jsBytes) throws HyracksException {
@@ -76,13 +75,12 @@
             if (classLoader == null) {
                 /** crate a new classloader */
                 URL[] urls = binaryURLs.toArray(new URL[binaryURLs.size()]);
-                classLoader = new URLClassLoader(urls, this.getClass().getClassLoader());
+                classLoader = new MutableURLClassLoader(urls, this.getClass().getClassLoader());
             } else {
                 /** add URLs to the existing classloader */
-                Object[] urls = binaryURLs.toArray(new URL[binaryURLs.size()]);
-                Method method = classLoader.getClass().getDeclaredMethod("addURL", new Class[] { URL.class });
-                method.setAccessible(true);
-                method.invoke(classLoader, urls);
+                for (URL url : binaryURLs) {
+                    classLoader.addURL(url);
+                }
             }
         } catch (Exception e) {
             throw new HyracksException(e);
@@ -107,4 +105,16 @@
     public String toString() {
         return classLoader.toString();
     }
+
+    private static class MutableURLClassLoader extends URLClassLoader {
+
+        public MutableURLClassLoader(URL[] urls, ClassLoader classLoader) {
+            super(urls, classLoader);
+        }
+
+        @Override
+        protected void addURL(URL url) {
+            super.addURL(url);
+        }
+    }
 }
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java
index a50233f..416b0e6 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java
@@ -25,7 +25,7 @@
 /**
  * The class maintain the status of a deployment process and the states
  * of all slave machines involved in the deployment.
- * 
+ *
  * @author yingyib
  */
 public class DeploymentRun implements IDeploymentStatusConditionVariable {
@@ -39,7 +39,7 @@
 
     /**
      * One notify the deployment status
-     * 
+     *
      * @param nodeId
      * @param status
      */
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
index fba5b54..aaf2e20 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
@@ -44,7 +44,7 @@
 
 /**
  * A utility class which is in charge of the actual work of deployments.
- * 
+ *
  * @author yingyib
  */
 public class DeploymentUtils {
@@ -53,7 +53,7 @@
 
     /**
      * undeploy an existing deployment
-     * 
+     *
      * @param deploymentId
      *            the deployment id
      * @param container
@@ -78,7 +78,7 @@
 
     /**
      * Deploying jars in NC or CC
-     * 
+     *
      * @param deploymentId
      *            the deployment id
      * @param urls
@@ -106,7 +106,7 @@
 
     /**
      * Deserialize bytes to an object according to a specific deployment
-     * 
+     *
      * @param bytes
      *            the bytes to be deserialized
      * @param deploymentId
@@ -130,7 +130,7 @@
 
     /**
      * Load a class from its class name
-     * 
+     *
      * @param className
      * @param deploymentId
      * @param appCtx
@@ -153,7 +153,7 @@
 
     /**
      * Get the classloader of a specific deployment
-     * 
+     *
      * @param deploymentId
      * @param appCtx
      * @return
@@ -174,7 +174,7 @@
 
     /**
      * Download remote Http URLs and return the stored local file URLs
-     * 
+     *
      * @param urls
      *            the remote Http URLs
      * @param deploymentDir
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java
index 0020d60..2652701 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java
@@ -21,14 +21,14 @@
 
 /**
  * The conditional variable interface for deployment
- * 
+ *
  * @author yingyib
  */
 public interface IDeploymentStatusConditionVariable {
 
     /**
      * synchronously wait the deployment to complete
-     * 
+     *
      * @return the deployment status
      * @throws Exception
      */
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatData.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatData.java
index 7b760b2..cfb9a86 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatData.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatData.java
@@ -131,4 +131,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatSchema.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatSchema.java
index 2d8e779..12eb39f 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatSchema.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/heartbeat/HeartbeatSchema.java
@@ -46,4 +46,4 @@
             return name;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/ClusterControllerRemoteProxy.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/ClusterControllerRemoteProxy.java
index 691eac6..416b064 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/ClusterControllerRemoteProxy.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/ClusterControllerRemoteProxy.java
@@ -154,4 +154,4 @@
         ipcHandle.send(-1,sdrf,null);
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java
index 331d9ef..f7f73d7 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/ipc/NodeControllerRemoteProxy.java
@@ -45,8 +45,8 @@
 
     @Override
     public void startTasks(DeploymentId deploymentId, JobId jobId, byte[] planBytes,
-            List<TaskAttemptDescriptor> taskDescriptors,
-            Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies, EnumSet<JobFlag> flags) throws Exception {
+            List<TaskAttemptDescriptor> taskDescriptors, Map<ConnectorDescriptorId, IConnectorPolicy> connectorPolicies,
+            EnumSet<JobFlag> flags) throws Exception {
         CCNCFunctions.StartTasksFunction stf = new CCNCFunctions.StartTasksFunction(deploymentId, jobId, planBytes,
                 taskDescriptors, connectorPolicies, flags);
         ipcHandle.send(-1, stf, null);
@@ -94,4 +94,11 @@
         CCNCFunctions.ShutdownRequestFunction sdrf = new CCNCFunctions.ShutdownRequestFunction();
         ipcHandle.send(-1, sdrf, null);
     }
-}
\ No newline at end of file
+
+    @Override
+    public void sendApplicationMessageToNC(byte[] data, DeploymentId deploymentId, String nodeId) throws Exception {
+        CCNCFunctions.SendApplicationMessageFunction fn = new CCNCFunctions.SendApplicationMessageFunction(data,
+                deploymentId, nodeId);
+        ipcHandle.send(-1, fn, null);
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionDescriptor.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionDescriptor.java
index e5028be..15f3f2f 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionDescriptor.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionDescriptor.java
@@ -72,4 +72,4 @@
         return "[" + pid + ":" + nodeId + ":" + producingTaskAttemptId + (reusable ? "reusable" : "non-reusable") + " "
                 + state + "]";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionRequest.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionRequest.java
index 4061e16..45c0b7c 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionRequest.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionRequest.java
@@ -62,4 +62,4 @@
     public String toString() {
         return "[" + pid + ":" + requestingNodeId + ":" + requestingTaskAttemptId + ":" + minState + "]";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionState.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionState.java
index f4bf00e..616f447 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionState.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/PartitionState.java
@@ -32,4 +32,4 @@
         }
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/TaskAttemptDescriptor.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/TaskAttemptDescriptor.java
index 5b356e7..83a54c0 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/TaskAttemptDescriptor.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/TaskAttemptDescriptor.java
@@ -158,4 +158,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/Counter.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/Counter.java
index fe75caa..e914878 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/Counter.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/Counter.java
@@ -52,4 +52,4 @@
     public long get() {
         return counter.get();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/MultiResolutionEventProfiler.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/MultiResolutionEventProfiler.java
index 758dd96..0bb803d 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/MultiResolutionEventProfiler.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/counters/MultiResolutionEventProfiler.java
@@ -122,4 +122,4 @@
             times[i] = input.readInt();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/AbstractProfile.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/AbstractProfile.java
index df7050e..525be8c 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/AbstractProfile.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/AbstractProfile.java
@@ -81,4 +81,4 @@
             counters.put(key, value);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobProfile.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobProfile.java
index cc35772..e8fec1b 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobProfile.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobProfile.java
@@ -108,4 +108,4 @@
             entry.getValue().writeFields(output);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobletProfile.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobletProfile.java
index 4b0a542..33d5a6c 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobletProfile.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/JobletProfile.java
@@ -110,4 +110,4 @@
             entry.getValue().writeFields(output);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/PartitionProfile.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/PartitionProfile.java
index b1cd16d..9552a26 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/PartitionProfile.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/PartitionProfile.java
@@ -86,4 +86,4 @@
         mrep = MultiResolutionEventProfiler.create(input);
         pid = PartitionId.create(input);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java
index 08287d9..a77c56f 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/om/TaskProfile.java
@@ -126,4 +126,4 @@
             entry.getValue().writeFields(output);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/logs/LogFile.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/logs/LogFile.java
index 13f5039..7eb0674 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/logs/LogFile.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/logs/LogFile.java
@@ -48,4 +48,4 @@
         out.flush();
         out.close();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java
index 8bd7407..6912892 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java
@@ -54,7 +54,7 @@
         wait(SHUTDOWN_TIMER_MS);
         return shutdownSuccess;
     }
-    
+
     public synchronized Set<String> getRemainingNodes(){
         return shutdownNodeIds;
     }
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/FutureValue.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/FutureValue.java
index d5d05fb..150e0e8 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/FutureValue.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/FutureValue.java
@@ -63,4 +63,4 @@
         }
         return value;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IPCResponder.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IPCResponder.java
index ecee580..dd9aa34 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IPCResponder.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IPCResponder.java
@@ -48,4 +48,4 @@
             e1.printStackTrace();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IResultCallback.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IResultCallback.java
index a6078d8..0ccaf1d 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IResultCallback.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/IResultCallback.java
@@ -22,4 +22,4 @@
     public void setValue(T result);
 
     public void setException(Exception e);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/SynchronizableWork.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/SynchronizableWork.java
index cedd08e..02a789a 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/SynchronizableWork.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/SynchronizableWork.java
@@ -56,4 +56,4 @@
             throw e;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java
index e0d0eb0..7786db7 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/work/WorkQueue.java
@@ -36,8 +36,14 @@
     private boolean stopped;
     private AtomicInteger enqueueCount;
     private AtomicInteger dequeueCount;
+    private int threadPriority = Thread.MAX_PRIORITY;
 
-    public WorkQueue() {
+    public WorkQueue(int threadPriority) {
+        if (threadPriority != Thread.MAX_PRIORITY && threadPriority != Thread.NORM_PRIORITY
+                && threadPriority != Thread.MIN_PRIORITY) {
+            throw new IllegalArgumentException("Illegal thread priority number.");
+        }
+        this.threadPriority = threadPriority;
         queue = new LinkedBlockingQueue<AbstractWork>();
         thread = new WorkerThread();
         stopSemaphore = new Semaphore(1);
@@ -96,7 +102,7 @@
     private class WorkerThread extends Thread {
         WorkerThread() {
             setDaemon(true);
-            setPriority(MAX_PRIORITY);
+            setPriority(threadPriority);
         }
 
         @Override
@@ -133,4 +139,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/pom.xml b/hyracks/hyracks-control/hyracks-control-nc/pom.xml
index 3245742..e59262f 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/pom.xml
+++ b/hyracks/hyracks-control/hyracks-control-nc/pom.xml
@@ -27,20 +27,6 @@
     <version>0.2.18-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.7</source>
-          <target>1.7</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <properties>
       <root.dir>${basedir}/../../..</root.dir>
   </properties>
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java
index 0034bc9..7412e36 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Joblet.java
@@ -218,7 +218,7 @@
             LOGGER.warning("Freeing leaked " + stillAllocated + " bytes");
             appCtx.getMemoryManager().deallocate(stillAllocated);
         }
-        nodeController.getExecutor().execute(new Runnable() {
+        nodeController.getExecutorService().execute(new Runnable() {
             @Override
             public void run() {
                 deallocatableRegistry.close();
@@ -342,4 +342,4 @@
             throw new RuntimeException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
index 99494a0..db759cb 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCDriver.java
@@ -64,4 +64,4 @@
             System.exit(1);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
index e7689d4..7b5758c 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NodeControllerService.java
@@ -26,6 +26,7 @@
 import java.lang.management.OperatingSystemMXBean;
 import java.lang.management.RuntimeMXBean;
 import java.lang.management.ThreadMXBean;
+import java.lang.reflect.Field;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Hashtable;
@@ -34,15 +35,14 @@
 import java.util.StringTokenizer;
 import java.util.Timer;
 import java.util.TimerTask;
-import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.api.application.INCApplicationEntryPoint;
 import org.apache.hyracks.api.client.NodeControllerInfo;
 import org.apache.hyracks.api.comm.NetworkAddress;
@@ -53,7 +53,7 @@
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.api.lifecycle.ILifeCycleComponentManager;
 import org.apache.hyracks.api.lifecycle.LifeCycleComponentManager;
-import org.apache.hyracks.control.common.AbstractRemoteService;
+import org.apache.hyracks.api.service.IControllerService;
 import org.apache.hyracks.control.common.base.IClusterController;
 import org.apache.hyracks.control.common.context.ServerContext;
 import org.apache.hyracks.control.common.controllers.NCConfig;
@@ -93,7 +93,7 @@
 import org.apache.hyracks.ipc.impl.IPCSystem;
 import org.apache.hyracks.net.protocols.muxdemux.MuxDemuxPerformanceCounters;
 
-public class NodeControllerService extends AbstractRemoteService {
+public class NodeControllerService implements IControllerService {
     private static Logger LOGGER = Logger.getLogger(NodeControllerService.class.getName());
 
     private static final double MEMORY_FUDGE_FACTOR = 0.8;
@@ -170,15 +170,15 @@
             throw new Exception("id not set");
         }
         partitionManager = new PartitionManager(this);
-        netManager = new NetworkManager(ncConfig.dataIPAddress, ncConfig.dataPort, partitionManager, ncConfig.nNetThreads,
-                                        ncConfig.nNetBuffers, ncConfig.dataPublicIPAddress, ncConfig.dataPublicPort);
+        netManager = new NetworkManager(ncConfig.dataIPAddress, ncConfig.dataPort, partitionManager,
+                ncConfig.nNetThreads, ncConfig.nNetBuffers, ncConfig.dataPublicIPAddress, ncConfig.dataPublicPort);
 
         lccm = new LifeCycleComponentManager();
-        queue = new WorkQueue();
+        queue = new WorkQueue(Thread.NORM_PRIORITY); // Reserves MAX_PRIORITY of the heartbeat thread.
         jobletMap = new Hashtable<JobId, Joblet>();
         timer = new Timer(true);
-        serverCtx = new ServerContext(ServerContext.ServerType.NODE_CONTROLLER, new File(new File(
-                NodeControllerService.class.getName()), id));
+        serverCtx = new ServerContext(ServerContext.ServerType.NODE_CONTROLLER,
+                new File(new File(NodeControllerService.class.getName()), id));
         memoryMXBean = ManagementFactory.getMemoryMXBean();
         gcMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
         threadMXBean = ManagementFactory.getThreadMXBean();
@@ -243,11 +243,11 @@
 
     private void init() throws Exception {
         ctx.getIOManager().setExecutor(executor);
-        datasetPartitionManager = new DatasetPartitionManager
-            (this, executor, ncConfig.resultManagerMemory, ncConfig.resultTTL, ncConfig.resultSweepThreshold);
-        datasetNetworkManager = new DatasetNetworkManager
-            (ncConfig.resultIPAddress, ncConfig.resultPort, datasetPartitionManager,
-             ncConfig.nNetThreads, ncConfig.nNetBuffers, ncConfig.resultPublicIPAddress, ncConfig.resultPublicPort);
+        datasetPartitionManager = new DatasetPartitionManager(this, executor, ncConfig.resultManagerMemory,
+                ncConfig.resultTTL, ncConfig.resultSweepThreshold);
+        datasetNetworkManager = new DatasetNetworkManager(ncConfig.resultIPAddress, ncConfig.resultPort,
+                datasetPartitionManager, ncConfig.nNetThreads, ncConfig.nNetBuffers, ncConfig.resultPublicIPAddress,
+                ncConfig.resultPublicPort);
     }
 
     @Override
@@ -273,12 +273,11 @@
         if (ncConfig.dataPublicIPAddress != null) {
             netAddress = new NetworkAddress(ncConfig.dataPublicIPAddress, ncConfig.dataPublicPort);
         }
-        ccs.registerNode(new NodeRegistration(ipc.getSocketAddress(), id, ncConfig, netAddress,
-                datasetAddress, osMXBean.getName(), osMXBean.getArch(), osMXBean
-                        .getVersion(), osMXBean.getAvailableProcessors(), runtimeMXBean.getVmName(), runtimeMXBean
-                        .getVmVersion(), runtimeMXBean.getVmVendor(), runtimeMXBean.getClassPath(), runtimeMXBean
-                        .getLibraryPath(), runtimeMXBean.getBootClassPath(), runtimeMXBean.getInputArguments(),
-                runtimeMXBean.getSystemProperties(), hbSchema));
+        ccs.registerNode(new NodeRegistration(ipc.getSocketAddress(), id, ncConfig, netAddress, datasetAddress,
+                osMXBean.getName(), osMXBean.getArch(), osMXBean.getVersion(), osMXBean.getAvailableProcessors(),
+                runtimeMXBean.getVmName(), runtimeMXBean.getVmVersion(), runtimeMXBean.getVmVendor(),
+                runtimeMXBean.getClassPath(), runtimeMXBean.getLibraryPath(), runtimeMXBean.getBootClassPath(),
+                runtimeMXBean.getInputArguments(), runtimeMXBean.getSystemProperties(), hbSchema));
 
         synchronized (this) {
             while (registrationPending) {
@@ -294,6 +293,11 @@
 
         heartbeatTask = new HeartbeatTask(ccs);
 
+        // Use reflection to set the priority of the timer thread.
+        Field threadField = timer.getClass().getDeclaredField("thread");
+        threadField.setAccessible(true);
+        Thread timerThread = (Thread) threadField.get(timer); // The internal timer thread of the Timer object.
+        timerThread.setPriority(Thread.MAX_PRIORITY);
         // Schedule heartbeat generator.
         timer.schedule(heartbeatTask, 0, nodeParameters.getHeartbeatPeriod());
 
@@ -312,13 +316,13 @@
     }
 
     private void startApplication() throws Exception {
-        appCtx = new NCApplicationContext(serverCtx, ctx, id, memoryManager, lccm);
+        appCtx = new NCApplicationContext(this, serverCtx, ctx, id, memoryManager, lccm);
         String className = ncConfig.appNCMainClass;
         if (className != null) {
             Class<?> c = Class.forName(className);
             ncAppEntryPoint = (INCApplicationEntryPoint) c.newInstance();
-            String[] args = ncConfig.appArgs == null ? new String[0] : ncConfig.appArgs
-                    .toArray(new String[ncConfig.appArgs.size()]);
+            String[] args = ncConfig.appArgs == null ? new String[0]
+                    : ncConfig.appArgs.toArray(new String[ncConfig.appArgs.size()]);
             ncAppEntryPoint.start(appCtx, args);
         }
         executor = Executors.newCachedThreadPool(appCtx.getThreadFactory());
@@ -329,6 +333,9 @@
         if (!shuttedDown) {
             LOGGER.log(Level.INFO, "Stopping NodeControllerService");
             executor.shutdownNow();
+            if (!executor.awaitTermination(10, TimeUnit.SECONDS)) {
+                LOGGER.log(Level.SEVERE, "Some jobs failed to exit, continuing shutdown abnormally");
+            }
             partitionManager.close();
             datasetPartitionManager.close();
             heartbeatTask.cancel();
@@ -374,7 +381,7 @@
         return nodeParameters;
     }
 
-    public Executor getExecutor() {
+    public ExecutorService getExecutorService() {
         return executor;
     }
 
@@ -481,15 +488,14 @@
             switch (fn.getFunctionId()) {
                 case SEND_APPLICATION_MESSAGE: {
                     CCNCFunctions.SendApplicationMessageFunction amf = (CCNCFunctions.SendApplicationMessageFunction) fn;
-                    queue.schedule(new ApplicationMessageWork(NodeControllerService.this, amf.getMessage(), amf
-                            .getDeploymentId(), amf.getNodeId()));
+                    queue.schedule(new ApplicationMessageWork(NodeControllerService.this, amf.getMessage(),
+                            amf.getDeploymentId(), amf.getNodeId()));
                     return;
                 }
                 case START_TASKS: {
                     CCNCFunctions.StartTasksFunction stf = (CCNCFunctions.StartTasksFunction) fn;
-                    queue.schedule(new StartTasksWork(NodeControllerService.this, stf.getDeploymentId(),
-                            stf.getJobId(), stf.getPlanBytes(), stf.getTaskDescriptors(), stf.getConnectorPolicies(),
-                            stf.getFlags()));
+                    queue.schedule(new StartTasksWork(NodeControllerService.this, stf.getDeploymentId(), stf.getJobId(),
+                            stf.getPlanBytes(), stf.getTaskDescriptors(), stf.getConnectorPolicies(), stf.getFlags()));
                     return;
                 }
 
@@ -507,8 +513,8 @@
 
                 case REPORT_PARTITION_AVAILABILITY: {
                     CCNCFunctions.ReportPartitionAvailabilityFunction rpaf = (CCNCFunctions.ReportPartitionAvailabilityFunction) fn;
-                    queue.schedule(new ReportPartitionAvailabilityWork(NodeControllerService.this, rpaf
-                            .getPartitionId(), rpaf.getNetworkAddress()));
+                    queue.schedule(new ReportPartitionAvailabilityWork(NodeControllerService.this,
+                            rpaf.getPartitionId(), rpaf.getNetworkAddress()));
                     return;
                 }
 
@@ -526,8 +532,8 @@
 
                 case DEPLOY_BINARY: {
                     CCNCFunctions.DeployBinaryFunction ndbf = (CCNCFunctions.DeployBinaryFunction) fn;
-                    queue.schedule(new DeployBinaryWork(NodeControllerService.this, ndbf.getDeploymentId(), ndbf
-                            .getBinaryURLs()));
+                    queue.schedule(new DeployBinaryWork(NodeControllerService.this, ndbf.getDeploymentId(),
+                            ndbf.getBinaryURLs()));
                     return;
                 }
 
@@ -552,8 +558,8 @@
         }
     }
 
-    public void sendApplicationMessageToCC(byte[] data, DeploymentId deploymentId, String nodeId) throws Exception {
-        ccs.sendApplicationMessageToCC(data, deploymentId, nodeId);
+    public void sendApplicationMessageToCC(byte[] data, DeploymentId deploymentId) throws Exception {
+        ccs.sendApplicationMessageToCC(data, deploymentId, id);
     }
 
     public IDatasetPartitionManager getDatasetPartitionManager() {
@@ -571,6 +577,7 @@
             this.nodeControllerService = ncAppEntryPoint;
         }
 
+        @Override
         public void run() {
             if (LOGGER.isLoggable(Level.INFO)) {
                 LOGGER.info("Shutdown hook in progress");
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
index 7178ce6..7855945 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
@@ -26,14 +26,14 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Semaphore;
 
-import org.apache.hyracks.api.comm.VSizeFrame;
 import org.apache.hyracks.api.comm.IFrameReader;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.IPartitionCollector;
 import org.apache.hyracks.api.comm.PartitionChannel;
+import org.apache.hyracks.api.comm.VSizeFrame;
 import org.apache.hyracks.api.context.IHyracksJobletContext;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
@@ -69,7 +69,7 @@
 
     private final String displayName;
 
-    private final Executor executor;
+    private final ExecutorService executorService;
 
     private final IWorkspaceFileFactory fileFactory;
 
@@ -89,20 +89,20 @@
 
     private final List<Exception> exceptions;
 
-    private List<Throwable> caughtExceptions;
-
     private volatile boolean aborted;
 
     private NodeControllerService ncs;
 
     private List<List<PartitionChannel>> inputChannelsFromConnectors;
 
-    public Task(Joblet joblet, TaskAttemptId taskId, String displayName, Executor executor, NodeControllerService ncs,
-            List<List<PartitionChannel>> inputChannelsFromConnectors) {
+    private Object sharedObject;
+
+    public Task(Joblet joblet, TaskAttemptId taskId, String displayName, ExecutorService executor,
+            NodeControllerService ncs, List<List<PartitionChannel>> inputChannelsFromConnectors) {
         this.joblet = joblet;
         this.taskAttemptId = taskId;
         this.displayName = displayName;
-        this.executor = executor;
+        this.executorService = executor;
         fileFactory = new WorkspaceFileFactory(this, (IOManager) joblet.getIOManager());
         deallocatableRegistry = new DefaultDeallocatableRegistry();
         counterMap = new HashMap<String, Counter>();
@@ -151,6 +151,11 @@
     }
 
     @Override
+    public ExecutorService getExecutorService() {
+        return executorService;
+    }
+
+    @Override
     public FileReference createUnmanagedWorkspaceFile(String prefix) throws HyracksDataException {
         return fileFactory.createUnmanagedWorkspaceFile(prefix);
     }
@@ -215,7 +220,7 @@
 
     public void start() throws HyracksException {
         aborted = false;
-        executor.execute(this);
+        executorService.execute(this);
     }
 
     public synchronized void abort() {
@@ -252,8 +257,8 @@
         addPendingThread(ct);
         try {
             ct.setName(displayName + ":" + taskAttemptId + ":" + 0);
-            operator.initialize();
             try {
+                operator.initialize();
                 if (collectors.length > 0) {
                     final Semaphore sem = new Semaphore(collectors.length - 1);
                     for (int i = 1; i < collectors.length; ++i) {
@@ -261,7 +266,7 @@
                         final IFrameWriter writer = operator.getInputFrameWriter(i);
                         sem.acquire();
                         final int cIdx = i;
-                        executor.execute(new Runnable() {
+                        executorService.execute(new Runnable() {
                             @Override
                             public void run() {
                                 if (aborted) {
@@ -334,7 +339,7 @@
                     writer.open();
                     try {
                         VSizeFrame frame = new VSizeFrame(this);
-                        while( reader.nextFrame(frame)){
+                        while (reader.nextFrame(frame)) {
                             if (aborted) {
                                 return;
                             }
@@ -377,7 +382,17 @@
     }
 
     @Override
-    public void sendApplicationMessageToCC(byte[] message, DeploymentId deploymentId, String nodeId) throws Exception {
-        this.ncs.sendApplicationMessageToCC(message, deploymentId, nodeId);
+    public void sendApplicationMessageToCC(byte[] message, DeploymentId deploymentId) throws Exception {
+        this.ncs.sendApplicationMessageToCC(message, deploymentId);
     }
-}
\ No newline at end of file
+
+    @Override
+    public void setSharedObject(Object sharedObject) {
+        this.sharedObject = sharedObject;
+    }
+
+    @Override
+    public Object getSharedObject() {
+        return sharedObject;
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/application/NCApplicationContext.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/application/NCApplicationContext.java
index 0a2aaec..d0fd524 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/application/NCApplicationContext.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/application/NCApplicationContext.java
@@ -27,8 +27,10 @@
 import org.apache.hyracks.api.context.IHyracksRootContext;
 import org.apache.hyracks.api.lifecycle.ILifeCycleComponentManager;
 import org.apache.hyracks.api.resources.memory.IMemoryManager;
+import org.apache.hyracks.api.service.IControllerService;
 import org.apache.hyracks.control.common.application.ApplicationContext;
 import org.apache.hyracks.control.common.context.ServerContext;
+import org.apache.hyracks.control.nc.NodeControllerService;
 import org.apache.hyracks.control.nc.resources.memory.MemoryManager;
 
 public class NCApplicationContext extends ApplicationContext implements INCApplicationContext {
@@ -38,14 +40,17 @@
     private final MemoryManager memoryManager;
     private Object appObject;
     private IStateDumpHandler sdh;
+    private final NodeControllerService ncs;
 
-    public NCApplicationContext(ServerContext serverCtx, IHyracksRootContext rootCtx, String nodeId,
-            MemoryManager memoryManager, ILifeCycleComponentManager lifeCyclecomponentManager) throws IOException {
+    public NCApplicationContext(NodeControllerService ncs, ServerContext serverCtx, IHyracksRootContext rootCtx,
+            String nodeId, MemoryManager memoryManager, ILifeCycleComponentManager lifeCyclecomponentManager)
+                    throws IOException {
         super(serverCtx);
         this.lccm = lifeCyclecomponentManager;
         this.nodeId = nodeId;
         this.rootCtx = rootCtx;
         this.memoryManager = memoryManager;
+        this.ncs = ncs;
         sdh = new IStateDumpHandler() {
 
             @Override
@@ -97,4 +102,9 @@
     public IMemoryManager getMemoryManager() {
         return memoryManager;
     }
-}
\ No newline at end of file
+
+    @Override
+    public IControllerService getControllerService() {
+        return ncs;
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionManager.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionManager.java
index b4b6229..55fa56e 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionManager.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionManager.java
@@ -196,8 +196,8 @@
             return;
         }
 
-        for (ResultSetId rsId : rsIdMap.keySet()) {
-            ResultState[] resultStates = rsIdMap.get(rsId);
+        for (Entry<ResultSetId, ResultState[]> mapEntry : rsIdMap.entrySet()) {
+            ResultState[] resultStates = mapEntry.getValue();
             if (resultStates != null) {
                 for (ResultState state : resultStates) {
                     if (state != null) {
@@ -240,8 +240,8 @@
     private void deinit(JobId jobId) {
         ResultSetMap rsIdMap = (ResultSetMap) partitionResultStateMap.get(jobId);
         if (rsIdMap != null) {
-            for (ResultSetId rsId : rsIdMap.keySet()) {
-                ResultState[] resultStates = rsIdMap.get(rsId);
+            for (Entry<ResultSetId, ResultState[]> mapEntry : rsIdMap.entrySet()) {
+                ResultState[] resultStates = mapEntry.getValue();
                 if (resultStates != null) {
                     for (int i = 0; i < resultStates.length; i++) {
                         ResultState state = resultStates[i];
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java
index 9fa511c..e007050 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/DatasetPartitionWriter.java
@@ -41,8 +41,6 @@
 
     private final ResultSetId resultSetId;
 
-    private final boolean asyncMode;
-
     private final boolean orderedResult;
 
     private final int partition;
@@ -63,7 +61,6 @@
         this.manager = manager;
         this.jobId = jobId;
         this.resultSetId = rsId;
-        this.asyncMode = asyncMode;
         this.orderedResult = orderedResult;
         this.partition = partition;
         this.nPartitions = nPartitions;
@@ -139,5 +136,4 @@
             }
         }
     }
-
 }
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java
index 19f89db..be7ed3d 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/dataset/ResultState.java
@@ -320,4 +320,4 @@
         readFileHandle = ioManager.open(fileRef, IIOManager.FileReadWriteMode.READ_ONLY,
                 IIOManager.FileSyncMode.METADATA_ASYNC_DATA_ASYNC);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/FileHandle.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/FileHandle.java
index d66829b..f0e7f0e 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/FileHandle.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/FileHandle.java
@@ -91,4 +91,4 @@
     public void sync(boolean metadata) throws IOException {
         channel.force(metadata);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
index c4e462d..519a9d7 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
@@ -19,6 +19,7 @@
 package org.apache.hyracks.control.nc.io;
 
 import java.io.File;
+import java.io.FilenameFilter;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -35,12 +36,10 @@
 import org.apache.hyracks.api.io.IODeviceHandle;
 
 public class IOManager implements IIOManager {
+    private static final String WORKSPACE_FILE_SUFFIX = ".waf";
     private final List<IODeviceHandle> ioDevices;
-
     private Executor executor;
-
     private final List<IODeviceHandle> workAreaIODevices;
-
     private int workAreaDeviceIndex;
 
     public IOManager(List<IODeviceHandle> devices, Executor executor) throws HyracksException {
@@ -87,13 +86,16 @@
     @Override
     public int syncWrite(IFileHandle fHandle, long offset, ByteBuffer data) throws HyracksDataException {
         try {
+            if (fHandle == null) {
+                throw new IllegalStateException("Trying to write to a deleted file.");
+            }
             int n = 0;
             int remaining = data.remaining();
             while (remaining > 0) {
                 int len = ((FileHandle) fHandle).getFileChannel().write(data, offset);
                 if (len < 0) {
-                    throw new HyracksDataException("Error writing to file: "
-                            + ((FileHandle) fHandle).getFileReference().toString());
+                    throw new HyracksDataException(
+                            "Error writing to file: " + ((FileHandle) fHandle).getFileReference().toString());
                 }
                 remaining -= len;
                 offset += len;
@@ -167,7 +169,7 @@
         String waPath = dev.getWorkAreaPath();
         File waf;
         try {
-            waf = File.createTempFile(prefix, ".waf", new File(dev.getPath(), waPath));
+            waf = File.createTempFile(prefix, WORKSPACE_FILE_SUFFIX, new File(dev.getPath(), waPath));
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
@@ -256,4 +258,34 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+
+    @Override
+    public long getSize(IFileHandle fileHandle) {
+        return ((FileHandle) fileHandle).getFileReference().getFile().length();
+    }
+
+    @Override
+    public void deleteWorkspaceFiles() {
+        for (IODeviceHandle ioDevice : workAreaIODevices) {
+            File workspaceFolder = new File(ioDevice.getPath(), ioDevice.getWorkAreaPath());
+            if (workspaceFolder.exists() && workspaceFolder.isDirectory()) {
+                File[] workspaceFiles = workspaceFolder.listFiles(WORKSPACE_FILES_FILTER);
+                for (File workspaceFile : workspaceFiles) {
+                    workspaceFile.delete();
+                }
+            }
+        }
+    }
+
+    private static final FilenameFilter WORKSPACE_FILES_FILTER = new FilenameFilter() {
+        public boolean accept(File dir, String name) {
+            return name.endsWith(WORKSPACE_FILE_SUFFIX);
+        }
+    };
+
+    @Override
+    public FileReference getAbsoluteFileRef(int ioDeviceId, String relativePath) {
+        IODeviceHandle devHandle = ioDevices.get(ioDeviceId);
+        return new FileReference(devHandle, relativePath);
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/WorkspaceFileFactory.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/WorkspaceFileFactory.java
index 5b1bc02..4f9eb29 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/WorkspaceFileFactory.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/WorkspaceFileFactory.java
@@ -18,6 +18,7 @@
  */
 package org.apache.hyracks.control.nc.io;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.io.IWorkspaceFileFactory;
@@ -39,7 +40,8 @@
         registry.registerDeallocatable(new IDeallocatable() {
             @Override
             public void deallocate() {
-                fRef.delete();
+                // Delete the created managed file.
+                FileUtils.deleteQuietly(fRef.getFile());
             }
         });
         return fRef;
@@ -49,4 +51,4 @@
     public FileReference createUnmanagedWorkspaceFile(String prefix) throws HyracksDataException {
         return ioManager.createWorkspaceFile(prefix);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java
index 8e5b0d7..1b7cf8f 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java
@@ -23,7 +23,7 @@
 
     /**
      * Get the IOCounter for the specific underlying OS
-     * 
+     *
      * @return an IIOCounter instance
      */
     public IIOCounter getIOCounter() {
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartition.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartition.java
index 5d9292e..20b5bbe 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartition.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartition.java
@@ -106,4 +106,4 @@
     public boolean isReusable() {
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java
index ef4c552..d40de19 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionInputChannel.java
@@ -118,7 +118,7 @@
                 ByteBuffer destFrame = emptyQueue.poll();
                 buffer.position(0);
                 buffer.limit(buffer.capacity());
-                if (destFrame.capacity() < buffer.capacity()){
+                if (destFrame.capacity() < buffer.capacity()) {
                     throw new HyracksDataException("should never happen");
                 }
                 destFrame.clear();
@@ -137,5 +137,10 @@
         public void close() throws HyracksDataException {
             monitor.notifyEndOfStream(MaterializedPartitionInputChannel.this);
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+            // materialize operators should only send their output once all of their input has been consumed. hence, this is a no op
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionWriter.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionWriter.java
index 291064d..74aa350 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionWriter.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializedPartitionWriter.java
@@ -103,4 +103,9 @@
 
         }
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        // materialize writer is kind of a sink operator, hence, flush() is a no op.
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializingPipelinedPartition.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializingPipelinedPartition.java
index 07b5c53..7d12296 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializingPipelinedPartition.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/MaterializingPipelinedPartition.java
@@ -60,6 +60,8 @@
 
     private boolean failed;
 
+    protected boolean flushRequest;
+
     public MaterializingPipelinedPartition(IHyracksTaskContext ctx, PartitionManager manager, PartitionId pid,
             TaskAttemptId taId, Executor executor) {
         this.ctx = ctx;
@@ -93,8 +95,9 @@
                             MaterializingPipelinedPartition.this.wait();
                         }
                     }
-                    IFileHandle fh = fRef == null ? null : ioManager.open(fRef,
-                            IIOManager.FileReadWriteMode.READ_ONLY, IIOManager.FileSyncMode.METADATA_ASYNC_DATA_ASYNC);
+                    IFileHandle fh = fRef == null ? null
+                            : ioManager.open(fRef, IIOManager.FileReadWriteMode.READ_ONLY,
+                                    IIOManager.FileSyncMode.METADATA_ASYNC_DATA_ASYNC);
                     try {
                         writer.open();
                         try {
@@ -103,9 +106,14 @@
                                 ByteBuffer buffer = ctx.allocateFrame();
                                 boolean fail = false;
                                 boolean done = false;
+                                boolean flush = false;
                                 while (!fail && !done) {
                                     synchronized (MaterializingPipelinedPartition.this) {
-                                        while (offset >= size && !eos && !failed) {
+                                        if (flushRequest) {
+                                            flushRequest = false;
+                                            flush = true;
+                                        }
+                                        while (offset >= size && !eos && !failed && !flush) {
                                             try {
                                                 MaterializingPipelinedPartition.this.wait();
                                             } catch (InterruptedException e) {
@@ -126,6 +134,10 @@
                                         offset += readLen;
                                         buffer.flip();
                                         writer.nextFrame(buffer);
+                                        if (flush) {
+                                            writer.flush();
+                                            flush = false;
+                                        }
                                     }
                                 }
                             }
@@ -195,4 +207,10 @@
             notifyAll();
         }
     }
-}
\ No newline at end of file
+
+    @Override
+    public synchronized void flush() throws HyracksDataException {
+        flushRequest = true;
+        notifyAll();
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
index fc6691f..76eaad3 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PartitionManager.java
@@ -152,4 +152,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PipelinedPartition.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PipelinedPartition.java
index 7f6dd10..84d2283 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PipelinedPartition.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/PipelinedPartition.java
@@ -80,8 +80,10 @@
 
     @Override
     public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-        ensureConnected();
-        delegate.nextFrame(buffer);
+        if (!failed) {
+            ensureConnected();
+            delegate.nextFrame(buffer);
+        }
     }
 
     private void ensureConnected() throws HyracksDataException {
@@ -115,4 +117,12 @@
             delegate.close();
         }
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        if (!failed) {
+            ensureConnected();
+            delegate.flush();
+        }
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java
index e20c709..b8bdda7 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/partitions/ReceiveSideMaterializingCollector.java
@@ -138,7 +138,9 @@
                     } else if (eos.get()) {
                         break;
                     } else if (failed.get()) {
-                        throw new HyracksDataException("Failure occurred on input");
+                        // Sends failure notification to its downstream.
+                        // It's not supposed to throw exception here because it is on the failure notification channel.
+                        mpw.fail();
                     } else {
                         try {
                             synchronized (this) {
@@ -153,8 +155,8 @@
                 }
                 mpw.close();
                 channel.close();
-                delegate.addPartitions(Collections.singleton(new PartitionChannel(pid,
-                        new MaterializedPartitionInputChannel(1, pid, manager))));
+                delegate.addPartitions(Collections
+                        .singleton(new PartitionChannel(pid, new MaterializedPartitionInputChannel(1, pid, manager))));
             } catch (HyracksException e) {
             }
         }
@@ -179,4 +181,4 @@
     public void abort() {
         delegate.abort();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorReceiverProfilingFrameReader.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorReceiverProfilingFrameReader.java
index 1dc64e3..45e1236 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorReceiverProfilingFrameReader.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorReceiverProfilingFrameReader.java
@@ -60,4 +60,4 @@
         reader.close();
         closeCounter.update(1);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorSenderProfilingFrameWriter.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorSenderProfilingFrameWriter.java
index 09dd03d..be3a65c 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorSenderProfilingFrameWriter.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ConnectorSenderProfilingFrameWriter.java
@@ -32,16 +32,16 @@
     private final ICounter closeCounter;
     private final ICounter frameCounter;
 
-    public ConnectorSenderProfilingFrameWriter(IHyracksTaskContext ctx, IFrameWriter writer,
-            ConnectorDescriptorId cdId, int senderIndex, int receiverIndex) {
+    public ConnectorSenderProfilingFrameWriter(IHyracksTaskContext ctx, IFrameWriter writer, ConnectorDescriptorId cdId,
+            int senderIndex, int receiverIndex) {
         this.writer = writer;
         int attempt = ctx.getTaskAttemptId().getAttempt();
-        this.openCounter = ctx.getCounterContext().getCounter(
-                cdId + ".sender." + attempt + "." + senderIndex + "." + receiverIndex + ".open", true);
-        this.closeCounter = ctx.getCounterContext().getCounter(
-                cdId + ".sender." + attempt + "." + senderIndex + "." + receiverIndex + ".close", true);
-        this.frameCounter = ctx.getCounterContext().getCounter(
-                cdId + ".sender." + attempt + "." + senderIndex + "." + receiverIndex + ".nextFrame", true);
+        this.openCounter = ctx.getCounterContext()
+                .getCounter(cdId + ".sender." + attempt + "." + senderIndex + "." + receiverIndex + ".open", true);
+        this.closeCounter = ctx.getCounterContext()
+                .getCounter(cdId + ".sender." + attempt + "." + senderIndex + "." + receiverIndex + ".close", true);
+        this.frameCounter = ctx.getCounterContext()
+                .getCounter(cdId + ".sender." + attempt + "." + senderIndex + "." + receiverIndex + ".nextFrame", true);
     }
 
     @Override
@@ -58,12 +58,20 @@
 
     @Override
     public void close() throws HyracksDataException {
-        closeCounter.update(1);
-        writer.close();
+        try {
+            closeCounter.update(1);
+        } finally {
+            writer.close();
+        }
     }
 
     @Override
     public void fail() throws HyracksDataException {
         writer.fail();
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        writer.flush();
+    }
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java
index 5e543fa..e5e81ab 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/profiling/ProfilingPartitionWriterFactory.java
@@ -80,10 +80,16 @@
             @Override
             public void close() throws HyracksDataException {
                 closeTime = System.currentTimeMillis();
-                ((Task) ctx).setPartitionSendProfile(new PartitionProfile(new PartitionId(ctx.getJobletContext()
-                        .getJobId(), cd.getConnectorId(), senderIndex, receiverIndex), openTime, closeTime, mrep));
+                ((Task) ctx)
+                        .setPartitionSendProfile(new PartitionProfile(new PartitionId(ctx.getJobletContext().getJobId(),
+                                cd.getConnectorId(), senderIndex, receiverIndex), openTime, closeTime, mrep));
                 writer.close();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                writer.flush();
+            }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/DefaultDeallocatableRegistry.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/DefaultDeallocatableRegistry.java
index aca85cc..d491836 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/DefaultDeallocatableRegistry.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/DefaultDeallocatableRegistry.java
@@ -45,4 +45,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/FrameManager.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/FrameManager.java
index 3d3ed8db..8df1f38 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/FrameManager.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/FrameManager.java
@@ -52,7 +52,8 @@
         ByteBuffer buffer = ByteBuffer.allocate(bytes);
         if (bytes / minFrameSize > FrameConstants.MAX_NUM_MINFRAME) {
             throw new HyracksDataException(
-                    "Unable to allocate frame larger than:" + FrameConstants.MAX_NUM_MINFRAME + " bytes");
+                    "Unable to allocate frame larger than:" + FrameConstants.MAX_NUM_MINFRAME * minFrameSize
+                            + " bytes");
         }
         FrameHelper.serializeFrameSize(buffer, (byte) (bytes / minFrameSize));
         return (ByteBuffer) buffer.clear();
@@ -74,8 +75,8 @@
             buffer.position(pos);
 
             if (newSizeInBytes / minFrameSize > FrameConstants.MAX_NUM_MINFRAME) {
-                throw new HyracksDataException("Unable to allocate frame of size bigger than MinFrameSize * "
-                        + FrameConstants.MAX_NUM_MINFRAME);
+                throw new HyracksDataException("Unable to allocate frame of size bigger than: "
+                        + FrameConstants.MAX_NUM_MINFRAME * minFrameSize + " bytes");
             }
             FrameHelper.serializeFrameSize(buffer, (byte) (newSizeInBytes / minFrameSize));
             return buffer;
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/MemoryManager.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/MemoryManager.java
index db3a955..b849e0e 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/MemoryManager.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/resources/memory/MemoryManager.java
@@ -56,4 +56,4 @@
     public void deallocate(long memory) {
         this.memory.addAndGet(memory);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/runtime/RootHyracksContext.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/runtime/RootHyracksContext.java
index c336692..0610a35 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/runtime/RootHyracksContext.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/runtime/RootHyracksContext.java
@@ -44,4 +44,4 @@
     public Map<String, NodeControllerInfo> getNodeControllerInfos() throws Exception {
         return ncs.getNodeControllersInfo();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/AbortTasksWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/AbortTasksWork.java
index 632e040..6566655 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/AbortTasksWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/AbortTasksWork.java
@@ -68,4 +68,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/ApplicationMessageWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/ApplicationMessageWork.java
index 3ddb28e..ecc37e8 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/ApplicationMessageWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/ApplicationMessageWork.java
@@ -65,4 +65,4 @@
     public String toString() {
         return getName() + ": nodeID: " + nodeId;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/BuildJobProfilesWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/BuildJobProfilesWork.java
index 604f995..582f058 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/BuildJobProfilesWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/BuildJobProfilesWork.java
@@ -58,4 +58,4 @@
         }
         fv.setValue(profiles);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/CleanupJobletWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/CleanupJobletWork.java
index 0eefe31..29d4e18 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/CleanupJobletWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/CleanupJobletWork.java
@@ -53,7 +53,7 @@
         }
         final List<IPartition> unregisteredPartitions = new ArrayList<IPartition>();
         ncs.getPartitionManager().unregisterPartitions(jobId, unregisteredPartitions);
-        ncs.getExecutor().execute(new Runnable() {
+        ncs.getExecutorService().execute(new Runnable() {
             @Override
             public void run() {
                 for (IPartition p : unregisteredPartitions) {
@@ -67,4 +67,4 @@
             joblet.cleanup(status);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java
index 3097687..264a131 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java
@@ -31,7 +31,7 @@
 
 /**
  * Deploy binary work that happens at each NC
- * 
+ *
  * @author yingyib
  *
  */
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskCompleteWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskCompleteWork.java
index 10bbac4..f4ee6b0 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskCompleteWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskCompleteWork.java
@@ -44,4 +44,4 @@
         }
         task.getJoblet().removeTask(task);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskFailureWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskFailureWork.java
index 21e9050..e81fa5a 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskFailureWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/NotifyTaskFailureWork.java
@@ -53,4 +53,4 @@
         }
         task.getJoblet().removeTask(task);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
index 745c2ab..b585199 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
@@ -129,7 +129,7 @@
                 }
                 final int partition = tid.getPartition();
                 List<IConnectorDescriptor> inputs = ac.getActivityInputMap().get(aid);
-                Task task = new Task(joblet, taId, han.getClass().getName(), ncs.getExecutor(), ncs,
+                Task task = new Task(joblet, taId, han.getClass().getName(), ncs.getExecutorService(), ncs,
                         createInputChannels(td, inputs));
                 IOperatorNodePushable operator = han.createPushRuntime(task, rdp, partition, td.getPartitionCount());
 
@@ -201,7 +201,7 @@
                 td.getInputPartitionCounts()[i], td.getPartitionCount());
         if (cPolicy.materializeOnReceiveSide()) {
             return new ReceiveSideMaterializingCollector(task, ncs.getPartitionManager(), collector,
-                    task.getTaskAttemptId(), ncs.getExecutor());
+                    task.getTaskAttemptId(), ncs.getExecutorService());
         } else {
             return collector;
         }
@@ -217,7 +217,7 @@
                     @Override
                     public IFrameWriter createFrameWriter(int receiverIndex) throws HyracksDataException {
                         return new MaterializedPartitionWriter(ctx, ncs.getPartitionManager(), new PartitionId(jobId,
-                                conn.getConnectorId(), senderIndex, receiverIndex), taId, ncs.getExecutor());
+                                conn.getConnectorId(), senderIndex, receiverIndex), taId, ncs.getExecutorService());
                     }
                 };
             } else {
@@ -225,7 +225,7 @@
                     @Override
                     public IFrameWriter createFrameWriter(int receiverIndex) throws HyracksDataException {
                         return new MaterializingPipelinedPartition(ctx, ncs.getPartitionManager(), new PartitionId(
-                                jobId, conn.getConnectorId(), senderIndex, receiverIndex), taId, ncs.getExecutor());
+                                jobId, conn.getConnectorId(), senderIndex, receiverIndex), taId, ncs.getExecutorService());
                     }
                 };
             }
@@ -246,7 +246,7 @@
 
     /**
      * Create a list of known channels for each input connector
-     * 
+     *
      * @param td
      *            the task attempt id
      * @param inputs
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java
index 381fb39..f564ff4 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java
@@ -28,7 +28,7 @@
 
 /**
  * undeploy binaries regarding to a deployment id
- * 
+ *
  * @author yingyib
  */
 public class UnDeployBinaryWork extends AbstractWork {
diff --git a/hyracks/hyracks-data/hyracks-data-std/pom.xml b/hyracks/hyracks-data/hyracks-data-std/pom.xml
index ccb37d3..ddd77c8 100644
--- a/hyracks/hyracks-data/hyracks-data-std/pom.xml
+++ b/hyracks/hyracks-data/hyracks-data-std/pom.xml
@@ -17,39 +17,37 @@
  ! under the License.
  !-->
 
-<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>
-  <artifactId>hyracks-data-std</artifactId>
-  <name>hyracks-data-std</name>
+<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>
+    <artifactId>hyracks-data-std</artifactId>
+    <name>hyracks-data-std</name>
 
-  <parent>
-    <groupId>org.apache.hyracks</groupId>
-    <artifactId>hyracks-data</artifactId>
-    <version>0.2.18-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.7</source>
-          <target>1.7</target>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <properties>
-      <root.dir>${basedir}/../../..</root.dir>
-  </properties>
-  <dependencies>
-  <dependency>
-  	<groupId>org.apache.hyracks</groupId>
-  	<artifactId>hyracks-api</artifactId>
-  	<version>0.2.18-SNAPSHOT</version>
-  </dependency>
-  </dependencies>
+    <parent>
+        <groupId>org.apache.hyracks</groupId>
+        <artifactId>hyracks-data</artifactId>
+        <version>0.2.18-SNAPSHOT</version>
+    </parent>
+    <properties>
+        <root.dir>${basedir}/../../..</root.dir>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-util</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-api</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-util</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHash.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHash.java
index 17e58a2..b720fbc 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHash.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHash.java
@@ -73,4 +73,4 @@
         h ^= (h >>> 16);
         return h;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHashFunctionFamily.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHashFunctionFamily.java
index 3910d31..e4100eb 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHashFunctionFamily.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/MurmurHash3BinaryHashFunctionFamily.java
@@ -47,4 +47,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryComparatorFactory.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryComparatorFactory.java
index 29940cc..7082e77 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryComparatorFactory.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryComparatorFactory.java
@@ -52,4 +52,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryHashFunctionFactory.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryHashFunctionFactory.java
index 22a7a05..61f2772 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryHashFunctionFactory.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/PointableBinaryHashFunctionFactory.java
@@ -48,4 +48,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/UTF8StringBinaryHashFunctionFamily.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/UTF8StringBinaryHashFunctionFamily.java
index affafea..8ab7c54 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/UTF8StringBinaryHashFunctionFamily.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/accessors/UTF8StringBinaryHashFunctionFamily.java
@@ -20,7 +20,7 @@
 
 import org.apache.hyracks.api.dataflow.value.IBinaryHashFunction;
 import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class UTF8StringBinaryHashFunctionFamily implements IBinaryHashFunctionFamily {
     public static final IBinaryHashFunctionFamily INSTANCE = new UTF8StringBinaryHashFunctionFamily();
@@ -40,18 +40,8 @@
         return new IBinaryHashFunction() {
             @Override
             public int hash(byte[] bytes, int offset, int length) {
-                int h = 0;
-                int utflen = UTF8StringPointable.getUTFLength(bytes, offset);
-                int sStart = offset + 2;
-                int c = 0;
-
-                while (c < utflen) {
-                    char ch = UTF8StringPointable.charAt(bytes, sStart + c);
-                    h = (coefficient * h + ch) % r;
-                    c += UTF8StringPointable.charSize(bytes, sStart + c);
-                }
-                return h;
+                return UTF8StringUtil.hash(bytes, offset, coefficient, r);
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java
index dca83a6..245fbd8 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java
@@ -25,7 +25,7 @@
  * Performs Binary Search over a vector of value references.
  * Assumption: The items in the vector are sorted in ascending order with respect
  * to the specified key.
- * 
+ *
  * @author vinayakb
  */
 public class BinarySearchAlgorithm {
@@ -39,7 +39,7 @@
      * and sets the {@link #index} value that is retrievable by calling {@link #getIndex()} to refer to
      * the index in the array where the key was found (if it was found), and where it should have been (if
      * not found).
-     * 
+     *
      * @param vector
      *            - Sorted vector of items
      * @param key
@@ -68,11 +68,11 @@
 
     /**
      * Get the index as a result of binary search.
-     * 
+     *
      * @return the index in the array where the key was found (if it was found), and where it should have been (if
      *         not found).
      */
     public int getIndex() {
         return index;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/AbstractPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/AbstractPointable.java
index a10b0da..05417a8 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/AbstractPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/AbstractPointable.java
@@ -30,6 +30,7 @@
         this.bytes = bytes;
         this.start = start;
         this.length = length;
+        afterReset();
     }
 
     @Override
@@ -37,6 +38,13 @@
         set(pointer.getByteArray(), pointer.getStartOffset(), pointer.getLength());
     }
 
+    /**
+     * This method will be called after set the new bytes values.
+     * It could be used to reset the state of the inherited Pointable object.
+     */
+    protected void afterReset() {
+    }
+
     @Override
     public byte[] getByteArray() {
         return bytes;
@@ -51,4 +59,4 @@
     public int getLength() {
         return length;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IComparable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IComparable.java
index 6d5a675..563451c 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IComparable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IComparable.java
@@ -22,4 +22,4 @@
     public int compareTo(IPointable pointer);
 
     public int compareTo(byte[] bytes, int start, int length);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IDataOutputProvider.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IDataOutputProvider.java
index 1a0af93..9762d5a 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IDataOutputProvider.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IDataOutputProvider.java
@@ -22,4 +22,4 @@
 
 public interface IDataOutputProvider {
     public DataOutput getDataOutput();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IHashable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IHashable.java
index cbb052a..e125346 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IHashable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IHashable.java
@@ -20,4 +20,4 @@
 
 public interface IHashable {
     public int hash();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IMutableValueStorage.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IMutableValueStorage.java
index 9fa9bb6..862356e 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IMutableValueStorage.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IMutableValueStorage.java
@@ -20,4 +20,4 @@
 
 public interface IMutableValueStorage extends IValueReference, IDataOutputProvider {
     public void reset();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/INumeric.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/INumeric.java
index 7be6680..245c43f 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/INumeric.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/INumeric.java
@@ -30,4 +30,4 @@
     public float floatValue();
 
     public double doubleValue();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointable.java
index f2534dd..74ced4f 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointable.java
@@ -22,4 +22,4 @@
     public void set(byte[] bytes, int start, int length);
 
     public void set(IValueReference pointer);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java
index 9228809..5294d17 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java
@@ -24,6 +24,6 @@
 
 public interface IPointableFactory extends Serializable {
     public IPointable createPointable();
-    
+
     public ITypeTraits getTypeTraits();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IValueReference.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IValueReference.java
index 97256cc..e83d2ad 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IValueReference.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IValueReference.java
@@ -24,4 +24,4 @@
     public int getStartOffset();
 
     public int getLength();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java
index fb82166..f03dcc8 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java
@@ -22,20 +22,20 @@
  * Represents an immutable vector of ValueReferences. Users of this interface make the assumption
  * that it provides random access to the items in it. In other words, each of the getXXX(index) calls
  * have O(1) complexity.
- * 
+ *
  * @author vinayakb
  */
 public interface IValueReferenceVector {
     /**
      * Number of items in this vector.
-     * 
+     *
      * @return - the number of items in this vector.
      */
     public int getSize();
 
     /**
      * Get the byte array that contains the item referenced by <code>index</code>
-     * 
+     *
      * @param index
      *            - Index of the item in the vector
      * @return Byte Array that contains the item.
@@ -44,7 +44,7 @@
 
     /**
      * Get the start offset of the item referenced by <code>index</code>
-     * 
+     *
      * @param index
      *            - Index of the item in the vector
      * @return Start Offset in the Byte Array of the item
@@ -53,10 +53,10 @@
 
     /**
      * Get the length of the item referenced by <code>index</code>
-     * 
+     *
      * @param index
      *            - Index of the item in the vector
      * @return Length in the Byte Array of the item
      */
     public int getLength(int index);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BooleanPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BooleanPointable.java
index 711f461..db0b483 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BooleanPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BooleanPointable.java
@@ -86,4 +86,4 @@
     public int hash() {
         return getBoolean() ? Boolean.TRUE.hashCode() : Boolean.FALSE.hashCode();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ByteArrayPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ByteArrayPointable.java
index 0a2a723..af54c7e 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ByteArrayPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ByteArrayPointable.java
@@ -19,10 +19,33 @@
 
 package org.apache.hyracks.data.std.primitive;
 
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.data.std.api.*;
+import java.io.Serializable;
+import java.util.Arrays;
 
-public class ByteArrayPointable extends AbstractPointable implements IHashable, IComparable {
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.data.std.api.AbstractPointable;
+import org.apache.hyracks.data.std.api.IComparable;
+import org.apache.hyracks.data.std.api.IHashable;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.api.IPointableFactory;
+import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+
+public class ByteArrayPointable extends AbstractPointable implements IHashable, IComparable, Serializable {
+
+    // These three values are cached to speed up the length data access.
+    // Since the we are using the variable-length encoding, we can save the repeated decoding efforts.
+    // WARNING: must call the resetConstants() method after each reset().
+    private int contentLength = -1;
+    private int metaLength = -1;
+    private int hash = 0;
+
+    @Override
+    protected void afterReset() {
+        contentLength = getContentLength(getByteArray(), getStartOffset());
+        metaLength = getNumberBytesToStoreMeta(contentLength);
+        hash = 0;
+    }
 
     public static final ITypeTraits TYPE_TRAITS = new ITypeTraits() {
         private static final long serialVersionUID = 1L;
@@ -58,48 +81,106 @@
     }
 
     @Override
-    public int compareTo(byte[] bytes, int start, int length) {
-        int thislen = getLength(this.bytes, this.start);
-        int thatlen = getLength(bytes, start);
+    public int compareTo(byte[] thatBytes, int thatStart, int thatLength) {
+        int thisArrayLen = getContentLength(this.bytes, this.start);
+        int thatArrayLen = getContentLength(thatBytes, thatStart);
 
-        for (int thisIndex = 0, thatIndex = 0; thisIndex < thislen && thatIndex < thatlen; ++thisIndex, ++thatIndex) {
-            if (this.bytes[this.start + SIZE_OF_LENGTH + thisIndex] != bytes[start + SIZE_OF_LENGTH + thatIndex]) {
-                return (0xff & this.bytes[this.start + SIZE_OF_LENGTH + thisIndex]) - (0xff & bytes[start + SIZE_OF_LENGTH
-                        + thatIndex]);
+        int thisArrayStart = this.getContentStartOffset();
+        int thatArrayStart = thatStart + getNumberBytesToStoreMeta(thatArrayLen);
+
+        for (int thisIndex = 0, thatIndex = 0;
+             thisIndex < thisArrayLen && thatIndex < thatArrayLen; ++thisIndex, ++thatIndex) {
+            if (this.bytes[thisArrayStart + thisIndex] != thatBytes[thatArrayStart + thatIndex]) {
+                return (0xff & this.bytes[thisArrayStart + thisIndex]) - (0xff & thatBytes[thatArrayStart + thatIndex]);
             }
         }
-        return thislen - thatlen;
+        return thisArrayLen - thatArrayLen;
+    }
+
+    public int getContentLength() {
+        return contentLength;
+    }
+
+    public int getMetaLength() {
+        return metaLength;
     }
 
     @Override
     public int hash() {
-        int h = 0;
-        int realLength = getLength(bytes, start);
-        for (int i = 0; i < realLength; ++i) {
-            h = 31 * h + bytes[start + SIZE_OF_LENGTH + i];
+        if (hash == 0) {
+            int h = 0;
+            int realLength = getContentLength();
+            int startOffset = getContentStartOffset();
+            for (int i = 0; i < realLength; ++i) {
+                h = 31 * h + bytes[startOffset + i];
+            }
+            hash = h;
         }
-        return h;
+        return hash;
     }
 
     @Override
-    public int getLength(){
-        return getFullLength(getByteArray(), getStartOffset());
+    public int getLength() {
+        return getContentLength() + getMetaLength();
     }
 
-    public static final int SIZE_OF_LENGTH = 2;
-    public static final int MAX_LENGTH = 65535;
-
-    public static int getLength(byte[] bytes, int offset) {
-        return ((0xFF & bytes[offset]) << 8) + (0xFF & bytes[offset + 1]);
+    public int getContentStartOffset() {
+        return getStartOffset() + getMetaLength();
     }
 
-    public static int getFullLength(byte[] bytes, int offset){
-        return getLength(bytes, offset) + SIZE_OF_LENGTH;
+    ///////////////// helper functions ////////////////////////////////
+    public static byte[] copyContent(ByteArrayPointable bytePtr) {
+        return Arrays.copyOfRange(bytePtr.getByteArray(), bytePtr.getContentStartOffset(),
+                bytePtr.getContentStartOffset() + bytePtr.getContentLength());
     }
 
-    public static void putLength(int length, byte[] bytes, int offset) {
-        bytes[offset] = (byte) ((length >>> 8) & 0xFF);
-        bytes[offset + 1] = (byte) ((length >>> 0) & 0xFF);
+    public static ByteArrayPointable generatePointableFromPureBytes(byte[] bytes) {
+        return generatePointableFromPureBytes(bytes, 0, bytes.length);
+    }
+
+    public static ByteArrayPointable generatePointableFromPureBytes(byte[] bytes, int start, int length) {
+        int metaLen = getNumberBytesToStoreMeta(length);
+        byte[] ret = new byte[length + metaLen];
+        VarLenIntEncoderDecoder.encode(length, ret, 0);
+        for (int i = 0; i < length; ++i) {
+            ret[i + metaLen] = bytes[start + i];
+        }
+        ByteArrayPointable ptr = new ByteArrayPointable();
+        ptr.set(ret, 0, ret.length);
+        return ptr;
+    }
+
+    public static int getContentLength(byte[] bytes, int offset) {
+        return VarLenIntEncoderDecoder.decode(bytes, offset);
+    }
+
+    public static int getNumberBytesToStoreMeta(int length) {
+        return VarLenIntEncoderDecoder.getBytesRequired(length);
+    }
+
+    /**
+     * Compute the normalized key of the byte array.
+     * The normalized key in Hyracks is mainly used to speedup the comparison between pointable data.
+     * In the ByteArray case, we compute the integer value by using the first 4 bytes.
+     * The comparator will first use this integer to get the result ( <,>, or =), it will check
+     * the actual bytes only if the normalized key is equal. Thus this normalized key must be
+     * consistent with the comparison result.
+     *
+     * @param bytesPtr
+     * @param start
+     * @return
+     */
+    public static int normalize(byte[] bytesPtr, int start) {
+        int len = getContentLength(bytesPtr, start);
+        long nk = 0;
+        start = start + getNumberBytesToStoreMeta(len);
+        for (int i = 0; i < 4; ++i) {
+            nk <<= 8;
+            if (i < len) {
+                nk |= bytesPtr[start + i] & 0xff;
+            }
+        }
+        return (int) (nk >> 1); // make it always positive.
     }
 
 }
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BytePointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BytePointable.java
index 61a81a0..5b623e7 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BytePointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/BytePointable.java
@@ -131,4 +131,4 @@
     public double doubleValue() {
         return getByte();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/DoublePointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/DoublePointable.java
index f9eef09..3464a9f 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/DoublePointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/DoublePointable.java
@@ -152,4 +152,4 @@
     public static double getEpsilon() {
         return machineEpsilon;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/FloatPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/FloatPointable.java
index f4e66b06..b0f686f 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/FloatPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/FloatPointable.java
@@ -137,4 +137,4 @@
     public double doubleValue() {
         return getFloat();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
index ee0d72e..34bf494 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
@@ -135,4 +135,4 @@
     public double doubleValue() {
         return getInteger();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
index bf83c02..fee0667 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
@@ -142,4 +142,4 @@
     public double doubleValue() {
         return getLong();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/RawUTF8StringPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/RawUTF8StringPointable.java
index 2b1f557..70bac4d 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/RawUTF8StringPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/RawUTF8StringPointable.java
@@ -24,6 +24,7 @@
 import org.apache.hyracks.data.std.api.IHashable;
 import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.data.std.api.IPointableFactory;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 /**
  * This class provides the raw bytes-based comparison and hash function for UTF8 strings.
@@ -66,44 +67,16 @@
 
     @Override
     public int compareTo(byte[] bytes, int start, int length) {
-        int utflen1 = UTF8StringPointable.getUTFLength(this.bytes, this.start);
-        int utflen2 = UTF8StringPointable.getUTFLength(bytes, start);
-
-        int c1 = 0;
-        int c2 = 0;
-
-        int s1Start = this.start + 2;
-        int s2Start = start + 2;
-
-        while (c1 < utflen1 && c2 < utflen2) {
-            char ch1 = (char) this.bytes[s1Start + c1];
-            char ch2 = (char) bytes[s2Start + c2];
-
-            if (ch1 != ch2) {
-                return ch1 - ch2;
-            }
-            c1++;
-            c2++;
-        }
-        return utflen1 - utflen2;
+        return UTF8StringUtil.rawByteCompareTo(this.bytes, this.start, bytes, start);
     }
 
     @Override
     public int hash() {
-        int h = 0;
-        int utflen = UTF8StringPointable.getUTFLength(bytes, start);
-        int sStart = start + 2;
-        int c = 0;
-
-        while (c < utflen) {
-            char ch = (char) bytes[sStart + c];
-            h = 31 * h + ch;
-            c++;
-        }
-        return h;
+        return UTF8StringUtil.rawBytehash(this.bytes, this.start);
     }
 
     public void toString(StringBuilder buffer) {
-        UTF8StringPointable.toString(buffer, bytes, start);
+        UTF8StringUtil.toString(buffer, bytes, start);
     }
+
 }
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ShortPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ShortPointable.java
index e582ba5..70ad44c 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ShortPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/ShortPointable.java
@@ -132,4 +132,4 @@
     public double doubleValue() {
         return getShort();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringLowercasePointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringLowercasePointable.java
new file mode 100644
index 0000000..6e4810c
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringLowercasePointable.java
@@ -0,0 +1,73 @@
+/*
+ * 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.hyracks.data.std.primitive;
+
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.data.std.api.AbstractPointable;
+import org.apache.hyracks.data.std.api.IComparable;
+import org.apache.hyracks.data.std.api.IHashable;
+import org.apache.hyracks.data.std.api.IPointable;
+import org.apache.hyracks.data.std.api.IPointableFactory;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+
+public final class UTF8StringLowercasePointable extends AbstractPointable implements IHashable, IComparable {
+    public static final ITypeTraits TYPE_TRAITS = new ITypeTraits() {
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public boolean isFixedLength() {
+            return false;
+        }
+
+        @Override
+        public int getFixedLength() {
+            return 0;
+        }
+    };
+
+    public static final IPointableFactory FACTORY = new IPointableFactory() {
+        private static final long serialVersionUID = 1L;
+
+        @Override
+        public IPointable createPointable() {
+            return new UTF8StringLowercasePointable();
+        }
+
+        @Override
+        public ITypeTraits getTypeTraits() {
+            return TYPE_TRAITS;
+        }
+    };
+
+    @Override
+    public int compareTo(IPointable pointer) {
+        return compareTo(pointer.getByteArray(), pointer.getStartOffset(), pointer.getLength());
+    }
+
+    @Override
+    public int compareTo(byte[] bytes, int start, int length) {
+        return UTF8StringUtil.lowerCaseCompareTo(this.bytes, this.start, bytes, start);
+    }
+
+    @Override
+    public int hash() {
+        return UTF8StringUtil.lowerCaseHash(bytes, start);
+    }
+
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java
index 8b41206..7e834db 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringPointable.java
@@ -18,14 +18,42 @@
  */
 package org.apache.hyracks.data.std.primitive;
 
+import java.io.IOException;
+import java.nio.charset.Charset;
+
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.data.std.api.AbstractPointable;
 import org.apache.hyracks.data.std.api.IComparable;
 import org.apache.hyracks.data.std.api.IHashable;
 import org.apache.hyracks.data.std.api.IPointable;
 import org.apache.hyracks.data.std.api.IPointableFactory;
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public final class UTF8StringPointable extends AbstractPointable implements IHashable, IComparable {
+
+    // These values are cached to speed up the length data access.
+    // Since we are using the variable-length encoding, we can save the repeated decoding efforts.
+    // WARNING: must call the resetConstants() method after each reset().
+    private int utf8Length;
+    private int metaLength;
+    private int hashValue;
+    private int stringLength;
+
+    /**
+     * reset those meta length.
+     * Since the {@code utf8Length} and the {@code metaLength} are often used, we compute those two values in advance.
+     * As for the {@code stringLength} and the {@code hashValue}, they will be lazily initialized after the first call.
+     */
+    @Override
+    protected void afterReset() {
+        utf8Length = UTF8StringUtil.getUTFLength(bytes, start);
+        metaLength = UTF8StringUtil.getNumBytesToStoreLength(getUTF8Length());
+        hashValue = 0;
+        stringLength = -1;
+    }
+
     public static final ITypeTraits TYPE_TRAITS = new ITypeTraits() {
         private static final long serialVersionUID = 1L;
 
@@ -54,111 +82,58 @@
         }
     };
 
+    public static UTF8StringPointable generateUTF8Pointable(String string) {
+        byte[] bytes;
+        bytes = UTF8StringUtil.writeStringToBytes(string);
+        UTF8StringPointable ptr = new UTF8StringPointable();
+        ptr.set(bytes, 0, bytes.length);
+        return ptr;
+    }
+
     /**
      * Returns the character at the given byte offset. The caller is responsible for making sure that
      * the provided offset is within bounds and points to the beginning of a valid UTF8 character.
-     * 
+     *
      * @param offset
      *            - Byte offset
      * @return Character at the given offset.
      */
     public char charAt(int offset) {
-        return charAt(bytes, start + offset);
-    }
-
-    public static char charAt(byte[] b, int s) {
-        int c = b[s] & 0xff;
-        switch (c >> 4) {
-            case 0:
-            case 1:
-            case 2:
-            case 3:
-            case 4:
-            case 5:
-            case 6:
-            case 7:
-                return (char) c;
-
-            case 12:
-            case 13:
-                return (char) (((c & 0x1F) << 6) | ((b[s + 1]) & 0x3F));
-
-            case 14:
-                return (char) (((c & 0x0F) << 12) | (((b[s + 1]) & 0x3F) << 6) | (((b[s + 2]) & 0x3F) << 0));
-
-            default:
-                throw new IllegalArgumentException();
-        }
+        return UTF8StringUtil.charAt(bytes, start + offset);
     }
 
     public int charSize(int offset) {
-        return charSize(bytes, start + offset);
-    }
-
-    public static int charSize(byte[] b, int s) {
-        int c = b[s] & 0xff;
-        switch (c >> 4) {
-            case 0:
-            case 1:
-            case 2:
-            case 3:
-            case 4:
-            case 5:
-            case 6:
-            case 7:
-                return 1;
-
-            case 12:
-            case 13:
-                return 2;
-
-            case 14:
-                return 3;
-        }
-        throw new IllegalStateException();
-    }
-
-    public static int getModifiedUTF8Len(char c) {
-        if (c >= 0x0000 && c <= 0x007F) {
-            return 1;
-        } else if (c <= 0x07FF) {
-            return 2;
-        } else {
-            return 3;
-        }
+        return UTF8StringUtil.charSize(bytes, start + offset);
     }
 
     /**
      * Gets the length of the string in characters.
-     * 
+     * The first time call will need to go through the entire string, the following call will just return the pre-caculated result
+     *
      * @return length of string in characters
      */
     public int getStringLength() {
-        return getStringLength(bytes, start);
-    }
-
-    public static int getStringLength(byte[] b, int s) {
-        int pos = s + 2;
-        int end = pos + getUTFLength(b, s);
-        int charCount = 0;
-        while (pos < end) {
-            charCount++;
-            pos += charSize(b, pos);
+        if (stringLength < 0) {
+            stringLength = UTF8StringUtil.getStringLength(bytes, start);
         }
-        return charCount;
+        return stringLength;
     }
 
     /**
      * Gets the length of the UTF-8 encoded string in bytes.
-     * 
+     *
      * @return length of UTF-8 encoded string in bytes
      */
-    public int getUTFLength() {
-        return getUTFLength(bytes, start);
+    public int getUTF8Length() {
+        return utf8Length;
     }
 
-    public static int getUTFLength(byte[] b, int s) {
-        return ((b[s] & 0xff) << 8) + ((b[s + 1] & 0xff) << 0);
+    public int getMetaDataLength() {
+        return metaLength;
+    }
+
+    public int getCharStartOffset() {
+        return getStartOffset() + getMetaDataLength();
     }
 
     @Override
@@ -168,56 +143,304 @@
 
     @Override
     public int compareTo(byte[] bytes, int start, int length) {
-        int utflen1 = getUTFLength(this.bytes, this.start);
-        int utflen2 = getUTFLength(bytes, start);
-
-        int c1 = 0;
-        int c2 = 0;
-
-        int s1Start = this.start + 2;
-        int s2Start = start + 2;
-
-        while (c1 < utflen1 && c2 < utflen2) {
-            char ch1 = charAt(this.bytes, s1Start + c1);
-            char ch2 = charAt(bytes, s2Start + c2);
-
-            if (ch1 != ch2) {
-                return ch1 - ch2;
-            }
-            c1 += charSize(this.bytes, s1Start + c1);
-            c2 += charSize(bytes, s2Start + c2);
-        }
-        return utflen1 - utflen2;
+        return UTF8StringUtil.compareTo(this.bytes, this.start, bytes, start);
     }
 
     @Override
     public int hash() {
-        int h = 0;
-        int utflen = getUTFLength(bytes, start);
-        int sStart = start + 2;
-        int c = 0;
-
-        while (c < utflen) {
-            char ch = charAt(bytes, sStart + c);
-            h = 31 * h + ch;
-            c += charSize(bytes, sStart + c);
+        if (hashValue == 0) {
+            hashValue = UTF8StringUtil.hash(this.bytes, this.start);
         }
-        return h;
-    }
-
-    public static void toString(StringBuilder buffer, byte[] bytes, int start) {
-        int utfLen = getUTFLength(bytes, start);
-        int offset = 2;
-        while (utfLen > 0) {
-            char c = charAt(bytes, start + offset);
-            buffer.append(c);
-            int cLen = UTF8StringPointable.getModifiedUTF8Len(c);
-            offset += cLen;
-            utfLen -= cLen;
-        }
+        return hashValue;
     }
 
     public void toString(StringBuilder buffer) {
-        toString(buffer, bytes, start);
+        UTF8StringUtil.toString(buffer, bytes, start);
     }
+
+    @Override
+    public String toString() {
+        return new String(this.bytes, this.getCharStartOffset(), this.getUTF8Length(), Charset.forName("UTF-8"));
+    }
+
+    /****
+     * String functions
+     */
+
+    public int ignoreCaseCompareTo(UTF8StringPointable other) {
+        return UTF8StringUtil.lowerCaseCompareTo(this.getByteArray(), this.getStartOffset(), other.getByteArray(),
+                other.getStartOffset());
+    }
+
+    public int find(UTF8StringPointable pattern, boolean ignoreCase) {
+        return find(this, pattern, ignoreCase);
+    }
+
+    /**
+     * return the byte offset of the first character of the matching string. Not including the MetaLength
+     *
+     * @param src
+     * @param pattern
+     * @param ignoreCase
+     * @return
+     */
+    public static int find(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase) {
+        final int srcUtfLen = src.getUTF8Length();
+        final int pttnUtfLen = pattern.getUTF8Length();
+        final int srcStart = src.getMetaDataLength();
+        final int pttnStart = pattern.getMetaDataLength();
+
+        int startMatch = 0;
+        int maxStart = srcUtfLen - pttnUtfLen;
+        while (startMatch <= maxStart) {
+            int c1 = startMatch;
+            int c2 = 0;
+            while (c1 < srcUtfLen && c2 < pttnUtfLen) {
+                char ch1 = src.charAt(srcStart + c1);
+                char ch2 = pattern.charAt(pttnStart + c2);
+
+                if (ch1 != ch2) {
+                    if (!ignoreCase || ignoreCase && Character.toLowerCase(ch1) != Character.toLowerCase(ch2)) {
+                        break;
+                    }
+                }
+                c1 += src.charSize(srcStart + c1);
+                c2 += pattern.charSize(pttnStart + c2);
+            }
+            if (c2 == pttnUtfLen) {
+                return startMatch;
+            }
+            startMatch += src.charSize(srcStart + startMatch);
+        }
+        return -1;
+    }
+
+    public boolean contains(UTF8StringPointable pattern, boolean ignoreCase) {
+        return contains(this, pattern, ignoreCase);
+    }
+
+    public static boolean contains(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase) {
+        return find(src, pattern, ignoreCase) >= 0;
+    }
+
+    public boolean startsWith(UTF8StringPointable pattern, boolean ignoreCase) {
+        return startsWith(this, pattern, ignoreCase);
+    }
+
+    public static boolean startsWith(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase) {
+        int utflen1 = src.getUTF8Length();
+        int utflen2 = pattern.getUTF8Length();
+        if (utflen2 > utflen1) {
+            return false;
+        }
+
+        int s1Start = src.getMetaDataLength();
+        int s2Start = pattern.getMetaDataLength();
+
+        int c1 = 0;
+        int c2 = 0;
+        while (c1 < utflen1 && c2 < utflen2) {
+            char ch1 = src.charAt(s1Start + c1);
+            char ch2 = pattern.charAt(s2Start + c2);
+            if (ch1 != ch2) {
+                if (!ignoreCase || ignoreCase && Character.toLowerCase(ch1) != Character.toLowerCase(ch2)) {
+                    break;
+                }
+            }
+            c1 += src.charSize(s1Start + c1);
+            c2 += pattern.charSize(s2Start + c2);
+        }
+        return (c2 == utflen2);
+    }
+
+    public boolean endsWith(UTF8StringPointable pattern, boolean ignoreCase) {
+        return endsWith(this, pattern, ignoreCase);
+    }
+
+    public static boolean endsWith(UTF8StringPointable src, UTF8StringPointable pattern, boolean ignoreCase) {
+        int len1 = src.getUTF8Length();
+        int len2 = pattern.getUTF8Length();
+        if (len2 > len1) {
+            return false;
+        }
+
+        int s1Start = src.getMetaDataLength();
+        int s2Start = pattern.getMetaDataLength();
+
+        int c1 = len1 - len2;
+        int c2 = 0;
+        while (c1 < len1 && c2 < len2) {
+            char ch1 = src.charAt(s1Start + c1);
+            char ch2 = pattern.charAt(s2Start + c2);
+
+            if (ch1 != ch2) {
+                if (!ignoreCase || ignoreCase && Character.toLowerCase(ch1) != Character.toLowerCase(ch2)) {
+                    break;
+                }
+            }
+            c1 += src.charSize(s1Start + c1);
+            c2 += pattern.charSize(s2Start + c2);
+        }
+        return (c2 == len2);
+    }
+
+    public void concat(UTF8StringPointable next, UTF8StringBuilder builder, GrowableArray out) throws IOException {
+        concat(this, next, builder, out);
+    }
+
+    public static void concat(UTF8StringPointable first, UTF8StringPointable next, UTF8StringBuilder builder,
+            GrowableArray out) throws IOException {
+        int firstUtfLen = first.getUTF8Length();
+        int nextUtfLen = next.getUTF8Length();
+
+        builder.reset(out, firstUtfLen + nextUtfLen);
+        builder.appendUtf8StringPointable(first);
+        builder.appendUtf8StringPointable(next);
+        builder.finish();
+    }
+
+    public void substr(int charOffset, int charLength, UTF8StringBuilder builder, GrowableArray out)
+            throws IOException {
+        substr(this, charOffset, charLength, builder, out);
+    }
+
+    public static void substr(UTF8StringPointable src, int charOffset, int charLength, UTF8StringBuilder builder,
+            GrowableArray out) throws IOException {
+        // Really don't understand why we need to support the charOffset < 0 case.
+        // At this time, usually there is mistake on user side, we'd better give him a warning.
+        // assert charOffset >= 0;
+        if (charOffset < 0) {
+            charOffset = 0;
+        }
+        if (charLength < 0) {
+            charLength = 0;
+        }
+
+        int utfLen = src.getUTF8Length();
+        int chIdx = 0;
+        int byteIdx = 0;
+        while (byteIdx < utfLen && chIdx < charOffset) {
+            byteIdx += src.charSize(src.getMetaDataLength() + byteIdx);
+            chIdx++;
+        }
+        if (byteIdx >= utfLen) {
+            // Again, why do we tolerant this kind of mistakes?
+            // throw new StringIndexOutOfBoundsException(charOffset);
+            builder.reset(out, 0);
+            builder.finish();
+            return;
+        }
+
+        builder.reset(out, Math.min(utfLen - byteIdx, (int) (charLength * 1.0 * byteIdx / chIdx)));
+        chIdx = 0;
+        while (byteIdx < utfLen && chIdx < charLength) {
+            builder.appendChar(src.charAt(src.getMetaDataLength() + byteIdx));
+            chIdx++;
+            byteIdx += src.charSize(src.getMetaDataLength() + byteIdx);
+        }
+        builder.finish();
+    }
+
+    public void substrBefore(UTF8StringPointable match, UTF8StringBuilder builder, GrowableArray out)
+            throws IOException {
+        substrBefore(this, match, builder, out);
+    }
+
+    /**
+     * Write the substring before the given pattern. It will write a empty string if the matching fails.
+     *
+     * @param src
+     * @param match
+     * @param builder
+     * @param out
+     * @throws IOException
+     */
+    public static void substrBefore(UTF8StringPointable src, UTF8StringPointable match, UTF8StringBuilder builder,
+            GrowableArray out) throws IOException {
+
+        int byteOffset = find(src, match, false);
+        if (byteOffset < 0) {
+            builder.reset(out, 0);
+            builder.finish();
+            return;
+        }
+
+        final int srcMetaLen = src.getMetaDataLength();
+
+        builder.reset(out, byteOffset);
+        for (int idx = 0; idx < byteOffset;) {
+            builder.appendChar(src.charAt(srcMetaLen + idx));
+            idx += src.charSize(srcMetaLen + idx);
+        }
+        builder.finish();
+    }
+
+    public void substrAfter(UTF8StringPointable match, UTF8StringBuilder builder, GrowableArray out)
+            throws IOException {
+        substrAfter(this, match, builder, out);
+    }
+
+    /**
+     * Write the substring after the given pattern. It will write a empty string if the matching fails.
+     *
+     * @param src
+     * @param match
+     * @param builder
+     * @param out
+     */
+    public static void substrAfter(UTF8StringPointable src, UTF8StringPointable match, UTF8StringBuilder builder,
+            GrowableArray out) throws IOException {
+
+        int byteOffset = find(src, match, false);
+        if (byteOffset < 0) {
+            builder.reset(out, 0);
+            builder.finish();
+            return;
+        }
+
+        final int srcUtfLen = src.getUTF8Length();
+        final int matchUtfLen = match.getUTF8Length();
+
+        final int resultLen = srcUtfLen - byteOffset - matchUtfLen;
+        builder.reset(out, resultLen);
+        builder.appendUtf8StringPointable(src, src.getCharStartOffset() + byteOffset + matchUtfLen, resultLen);
+        builder.finish();
+    }
+
+    public void lowercase(UTF8StringBuilder builder, GrowableArray out) throws IOException {
+        lowercase(this, builder, out);
+    }
+
+    public static void lowercase(UTF8StringPointable src, UTF8StringBuilder builder, GrowableArray out)
+            throws IOException {
+        final int srcUtfLen = src.getUTF8Length();
+        final int srcStart = src.getMetaDataLength();
+
+        builder.reset(out, srcUtfLen);
+        int byteIndex = 0;
+        while (byteIndex < srcUtfLen) {
+            builder.appendChar(Character.toLowerCase(src.charAt(srcStart + byteIndex)));
+            byteIndex += src.charSize(srcStart + byteIndex);
+        }
+        builder.finish();
+    }
+
+    public void uppercase(UTF8StringBuilder builder, GrowableArray out) throws IOException {
+        uppercase(this, builder, out);
+    }
+
+    public static void uppercase(UTF8StringPointable src, UTF8StringBuilder builder, GrowableArray out)
+            throws IOException {
+        final int srcUtfLen = src.getUTF8Length();
+        final int srcStart = src.getMetaDataLength();
+
+        builder.reset(out, srcUtfLen);
+        int byteIndex = 0;
+        while (byteIndex < srcUtfLen) {
+            builder.appendChar(Character.toUpperCase(src.charAt(srcStart + byteIndex)));
+            byteIndex += src.charSize(srcStart + byteIndex);
+        }
+        builder.finish();
+    }
+
 }
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringWriter.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringWriter.java
deleted file mode 100644
index ae7e903..0000000
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/UTF8StringWriter.java
+++ /dev/null
@@ -1,79 +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.hyracks.data.std.primitive;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.UTFDataFormatException;
-
-public class UTF8StringWriter {
-    private byte[] tempBytes;
-
-    public void writeUTF8String(CharSequence str, DataOutput out) throws IOException {
-        int strlen = str.length();
-        int utflen = 0;
-        int c, count = 0;
-
-        for (int i = 0; i < strlen; i++) {
-            c = str.charAt(i);
-            if ((c >= 0x0001) && (c <= 0x007F)) {
-                utflen++;
-            } else if (c > 0x07FF) {
-                utflen += 3;
-            } else {
-                utflen += 2;
-            }
-        }
-
-        if (utflen > 65535) {
-            throw new UTFDataFormatException("encoded string too long: " + utflen + " bytes");
-        }
-
-        if (tempBytes == null || tempBytes.length < utflen + 2) {
-            tempBytes = new byte[utflen + 2];
-        }
-
-        tempBytes[count++] = (byte) ((utflen >>> 8) & 0xFF);
-        tempBytes[count++] = (byte) ((utflen >>> 0) & 0xFF);
-
-        int i = 0;
-        for (i = 0; i < strlen; i++) {
-            c = str.charAt(i);
-            if (!((c >= 0x0001) && (c <= 0x007F))) {
-                break;
-            }
-            tempBytes[count++] = (byte) c;
-        }
-
-        for (; i < strlen; i++) {
-            c = str.charAt(i);
-            if ((c >= 0x0001) && (c <= 0x007F)) {
-                tempBytes[count++] = (byte) c;
-            } else if (c > 0x07FF) {
-                tempBytes[count++] = (byte) (0xE0 | ((c >> 12) & 0x0F));
-                tempBytes[count++] = (byte) (0x80 | ((c >> 6) & 0x3F));
-                tempBytes[count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
-            } else {
-                tempBytes[count++] = (byte) (0xC0 | ((c >> 6) & 0x1F));
-                tempBytes[count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
-            }
-        }
-        out.write(tempBytes, 0, utflen + 2);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VoidPointable.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VoidPointable.java
index 251aaf7..ee00163 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VoidPointable.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/VoidPointable.java
@@ -51,4 +51,4 @@
             return TYPE_TRAITS;
         }
     };
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/AbstractVarLenObjectBuilder.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/AbstractVarLenObjectBuilder.java
new file mode 100644
index 0000000..452710e
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/AbstractVarLenObjectBuilder.java
@@ -0,0 +1,96 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+
+/**
+ * This builder is used to build the variable length encoding object (e.g. UTF8String or ByteArray).
+ * The caller needs to give an estimated length when {@link #reset(GrowableArray, int)}.
+ * Then it can append the content byte by byte.
+ * Since the actual byte length to store the content length is not precise at the beginning, the caller need
+ * to explicitly call the {@link #finish()} function to notify that one object has finished building.
+ * Then internally this builder will take care of storing the actual length field at the beginning of the
+ * given storage array.
+ */
+public abstract class AbstractVarLenObjectBuilder {
+    protected GrowableArray ary;
+    protected DataOutput out;
+    protected int startOffset;
+    protected int estimateMetaLen;
+
+    /**
+     * Start to build an variable length object
+     *
+     * @param ary            the destination storage array
+     * @param estimateLength the estimate length of this object
+     * @throws IOException
+     */
+    public void reset(GrowableArray ary, int estimateLength) throws IOException {
+        this.ary = ary;
+        this.out = ary.getDataOutput();
+        this.startOffset = ary.getLength();
+        this.estimateMetaLen = VarLenIntEncoderDecoder.getBytesRequired(estimateLength);
+
+        // increase the offset
+        for (int i = 0; i < estimateMetaLen; i++) {
+            out.writeByte(0);
+        }
+    }
+
+    /**
+     * Finish building an variable length object.
+     * It will write the correct length of the object at the beginning of the storage array.
+     * Since the actual byte size for storing the length could be changed ( if the given estimated length varies too
+     * far from the actual length), we need to shift the data around in some cases.
+     * Specifically, if the varlength(actual length) > varlength(estimated length) we need to grow the storage and
+     * shift the content rightward. Else we need to shift the data leftward and tell the storage to rewind the
+     * difference to mark the correct position.
+     *
+     * @throws IOException
+     */
+    public void finish() throws IOException {
+        int actualDataLength = ary.getLength() - startOffset - estimateMetaLen;
+        int actualMetaLen = VarLenIntEncoderDecoder.getBytesRequired(actualDataLength);
+        if (actualMetaLen != estimateMetaLen) {// ugly but rare situation if the estimate vary a lot
+            int diff = estimateMetaLen - actualMetaLen;
+            int actualDataStart = startOffset + actualMetaLen;
+            if (diff > 0) { // shrink
+                for (int i = 0; i < actualDataLength; i++) {
+                    ary.getByteArray()[actualDataStart + i] = ary.getByteArray()[actualDataStart + i + diff];
+                }
+                ary.rewindPositionBy(diff);
+            } else { // increase space
+                diff = -diff;
+                for (int i = 0; i < diff; i++) {
+                    out.writeByte(0);
+                }
+                for (int i = ary.getLength() - 1; i >= actualDataStart + diff; i--) {
+                    ary.getByteArray()[i] = ary.getByteArray()[i - diff];
+                }
+            }
+        }
+        VarLenIntEncoderDecoder.encode(actualDataLength, ary.getByteArray(), startOffset);
+    }
+
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
index 868e402..250d21a 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
@@ -25,7 +25,7 @@
 import org.apache.hyracks.data.std.api.IValueReference;
 
 public class ArrayBackedValueStorage implements IMutableValueStorage {
-   
+
     private final GrowableArray data = new GrowableArray();
 
     @Override
@@ -65,4 +65,4 @@
         reset();
         append(value);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
index 2f1ad1d..370f936 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
@@ -35,12 +35,38 @@
         return buf;
     }
 
+    // Override to make it not synchronized.
+    @Override
+    public void reset() {
+        count = 0;
+    }
+
+    @Override
     public void write(int b) {
         ensureCapacity(count + 1);
         buf[count] = (byte) b;
         count += 1;
     }
 
+    /**
+     * Rewind the current position by {@code delta} to a previous position.
+     * This function is used to drop the already written delta bytes.
+     * In some cases, we write some bytes, and afterward we found we've written more than expected.
+     * Then we need to fix the position by rewind the current position to the expected one.
+     * Currently, it is used by the {@link AbstractVarLenObjectBuilder} which may take more space than required
+     * at beginning, and it will shift the data and fix the position whenever required.
+     * It will throw {@link IndexOutOfBoundsException} if the {@code delta} is negative.
+     * Evil function, use with caution.
+     *
+     * @param delta
+     */
+    public void rewindPositionBy(int delta) {
+        if (delta < 0 || count < delta) {
+            throw new IndexOutOfBoundsException();
+        }
+        count -= delta;
+    }
+
     @Override
     public void write(byte[] b, int off, int len) {
         if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) {
@@ -60,7 +86,7 @@
     /**
      * Increases the capacity to ensure that it can hold at least the
      * number of elements specified by the minimum capacity argument.
-     * 
+     *
      * @param minCapacity
      *            the desired minimum capacity
      */
@@ -77,4 +103,4 @@
         }
         buf = Arrays.copyOf(buf, newCapacity);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/AbstractRemoteService.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayBuilder.java
similarity index 69%
rename from hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/AbstractRemoteService.java
rename to hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayBuilder.java
index 2f63416..61b15d4 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/AbstractRemoteService.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayBuilder.java
@@ -16,11 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.control.common;
 
-import org.apache.hyracks.control.common.service.IService;
+package org.apache.hyracks.data.std.util;
 
-public abstract class AbstractRemoteService implements IService {
-    public AbstractRemoteService() {
+import java.io.IOException;
+
+public class ByteArrayBuilder extends AbstractVarLenObjectBuilder {
+
+    public void appendByte(byte b) throws IOException {
+        out.writeByte(b);
     }
-}
\ No newline at end of file
+
+    public void appendBytes(byte[] bytes, int start, int length) throws IOException {
+        out.write(bytes, start, length);
+    }
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
index d08412e..6e329ab 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
@@ -20,7 +20,6 @@
 package org.apache.hyracks.data.std.util;
 
 import java.io.DataOutput;
-import java.io.DataOutputStream;
 import java.io.IOException;
 
 import org.apache.hyracks.data.std.api.IDataOutputProvider;
@@ -28,7 +27,7 @@
 
 public class GrowableArray implements IDataOutputProvider {
     private final ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
-    private final DataOutputStream dos = new DataOutputStream(baaos);
+    private final RewindableDataOutputStream dos = new RewindableDataOutputStream(baaos);
 
     @Override
     public DataOutput getDataOutput() {
@@ -39,6 +38,24 @@
         baaos.reset();
     }
 
+    /**
+     * Rewind the current position by {@code delta} to a previous position.
+     * This function is used to drop the already written delta bytes.
+     * In some cases, we write some bytes, and afterward we found we've written more than expected.
+     * Then we need to fix the position by rewind the current position to the expected one.
+     *
+     * Currently, it is used by the {@link AbstractVarLenObjectBuilder} which may take more space than required
+     * at beginning, and it will shift the data and fix the position whenever required.
+     * It will throw {@link IndexOutOfBoundsException} if the {@code delta} is negative.
+     * Evil function, use with caution.
+     *
+     * @param delta
+     */
+    public void rewindPositionBy(int delta) {
+        baaos.rewindPositionBy(delta);
+        dos.rewindWrittenBy(delta);
+    }
+
     public byte[] getByteArray() {
         return baaos.getByteArray();
     }
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/AbstractService.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ICharIterator.java
similarity index 86%
copy from hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/AbstractService.java
copy to hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ICharIterator.java
index d2d0243..118893b 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/AbstractService.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ICharIterator.java
@@ -16,7 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.control.common.service;
 
-public abstract class AbstractService implements IService {
-}
\ No newline at end of file
+package org.apache.hyracks.data.std.util;
+
+public interface ICharIterator {
+
+    boolean hasNext();
+
+    char next();
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/RewindableDataOutputStream.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/RewindableDataOutputStream.java
new file mode 100644
index 0000000..dcd5458
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/RewindableDataOutputStream.java
@@ -0,0 +1,56 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import java.io.DataOutputStream;
+import java.io.FilterOutputStream;
+import java.io.OutputStream;
+
+public class RewindableDataOutputStream extends DataOutputStream {
+    /**
+     * Creates a new data output stream to write data to the specified
+     * underlying output stream. The counter <code>written</code> is
+     * set to zero.
+     *
+     * @param out the underlying output stream, to be saved for later
+     *            use.
+     * @see FilterOutputStream#out
+     */
+    public RewindableDataOutputStream(OutputStream out) {
+        super(out);
+    }
+
+    /**
+     * Rewind the current position by {@code delta} to a previous position.
+     * This function is used to drop the already written delta bytes.
+     * In some cases, we write some bytes, and afterward we found we've written more than expected.
+     * Then we need to fix the position by rewind the current position to the expected one.
+     * Currently, it is used by the {@link AbstractVarLenObjectBuilder} which may take more space than required
+     * at beginning, and it will shift the data and fix the position whenever required.
+     *
+     * @param delta
+     */
+    public void rewindWrittenBy(int delta) {
+        if (written < delta) {
+            throw new IndexOutOfBoundsException();
+        }
+        written -= delta;
+    }
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8CharSequence.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8CharSequence.java
new file mode 100644
index 0000000..9dafef1
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8CharSequence.java
@@ -0,0 +1,71 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class UTF8CharSequence implements CharSequence {
+
+    private char[] buf;
+    private int length;
+
+    @Override
+    public char charAt(int index) {
+        if (index >= length || index < 0) {
+            throw new IndexOutOfBoundsException("No index " + index + " for string of length " + length);
+        }
+        return buf[index];
+    }
+
+    @Override
+    public int length() {
+        return length;
+    }
+
+    @Override
+    public CharSequence subSequence(int start, int end) {
+        UTF8CharSequence carSeq = new UTF8CharSequence();
+        carSeq.length = end - start;
+        if (end != start) {
+            carSeq.buf = new char[carSeq.length];
+            System.arraycopy(buf, start, carSeq.buf, 0, carSeq.length);
+        }
+        return carSeq;
+    }
+
+    public void reset(UTF8StringPointable valuePtr) {
+        int utfLen = valuePtr.getUTF8Length();
+        if (buf == null || buf.length < utfLen) {
+            buf = new char[utfLen];
+        }
+        int bytePos = 0;
+        int charPos = 0;
+        while (bytePos < utfLen) {
+            buf[charPos++] = valuePtr.charAt(valuePtr.getMetaDataLength() + bytePos);
+            bytePos += valuePtr.charSize(valuePtr.getMetaDataLength() + bytePos);
+        }
+        this.length = charPos;
+    }
+
+    @Override
+    public String toString() {
+        return new String(buf, 0, length);
+    }
+
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java
new file mode 100644
index 0000000..fe04146
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringBuilder.java
@@ -0,0 +1,43 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import java.io.IOException;
+
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+
+public class UTF8StringBuilder extends AbstractVarLenObjectBuilder {
+
+    public void appendChar(char ch) throws IOException {
+        UTF8StringUtil.writeCharAsModifiedUTF8(ch, out);
+    }
+
+    public void appendString(String string) throws IOException {
+        for (int i = 0; i < string.length(); i++) {
+            appendChar(string.charAt(i));
+        }
+    }
+
+    public void appendUtf8StringPointable(UTF8StringPointable src, int byteStartOffset, int byteLength) throws IOException {
+        out.write(src.getByteArray(), byteStartOffset, byteLength);
+    }
+
+    public void appendUtf8StringPointable(UTF8StringPointable src) throws IOException {
+        appendUtf8StringPointable(src, src.getCharStartOffset(), src.getUTF8Length());
+    }
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringCharacterIterator.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringCharacterIterator.java
new file mode 100644
index 0000000..317527e
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/UTF8StringCharacterIterator.java
@@ -0,0 +1,50 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class UTF8StringCharacterIterator implements ICharIterator {
+
+    private UTF8StringPointable utf8Ptr;
+    private int pos;
+
+    public UTF8StringCharacterIterator reset(UTF8StringPointable utf8Ptr) {
+        this.utf8Ptr = utf8Ptr;
+        return reset();
+    }
+
+    public UTF8StringCharacterIterator reset() {
+        this.pos = utf8Ptr.getMetaDataLength();
+        return this;
+    }
+
+    @Override
+    public boolean hasNext() {
+        return pos < utf8Ptr.getMetaDataLength() + utf8Ptr.getUTF8Length();
+    }
+
+    @Override
+    public char next() {
+        char ret = utf8Ptr.charAt(pos);
+        pos += utf8Ptr.charSize(pos);
+        return ret;
+    }
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/ByteArrayPointableTest.java b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/ByteArrayPointableTest.java
index f58c8da..fbc7aea 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/ByteArrayPointableTest.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/ByteArrayPointableTest.java
@@ -19,51 +19,39 @@
 
 package org.apache.hyracks.data.std.primitive;
 
+import static org.junit.Assert.assertTrue;
+
 import org.junit.Test;
 
-import javax.xml.bind.DatatypeConverter;
-
-import static org.junit.Assert.*;
-
 public class ByteArrayPointableTest {
 
-    public static byte[] generatePointableBytes(byte[] bytes){
-        byte[] ret = new byte[bytes.length + ByteArrayPointable.SIZE_OF_LENGTH];
-        for (int i = 0; i < bytes.length; ++i){
-            ret[i+ ByteArrayPointable.SIZE_OF_LENGTH] = bytes[i];
-        }
-        ByteArrayPointable.putLength(bytes.length, ret, 0);
-        return ret;
-    }
-
     @Test
     public void testCompareTo() throws Exception {
-        byte [] bytes = generatePointableBytes(new byte[] { 1, 2, 3, 4});
-        ByteArrayPointable byteArrayPointable = new ByteArrayPointable();
-        byteArrayPointable.set(bytes, 0, bytes.length);
+        ByteArrayPointable byteArrayPointable = ByteArrayPointable
+                .generatePointableFromPureBytes(new byte[] { 1, 2, 3, 4 });
 
-        testEqual(byteArrayPointable, generatePointableBytes(new byte[] { 1,2 ,3,4}));
+        testEqual(byteArrayPointable, ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 1, 2, 3, 4 }));
 
-        testLessThan(byteArrayPointable, generatePointableBytes(new byte[] {2}));
-        testLessThan(byteArrayPointable, generatePointableBytes(new byte[] {1,2,3,5}));
-        testLessThan(byteArrayPointable, generatePointableBytes(new byte[] {1,2,3,4,5}));
+        testLessThan(byteArrayPointable, ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 2 }, 0, 1));
+        testLessThan(byteArrayPointable, ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 1, 2, 3, 5 }));
+        testLessThan(byteArrayPointable,
+                ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 1, 2, 3, 4, 5 }));
 
-        testGreaterThan(byteArrayPointable, generatePointableBytes(new byte[] { }));
-        testGreaterThan(byteArrayPointable, generatePointableBytes(new byte[] { 0}));
-        testGreaterThan(byteArrayPointable, generatePointableBytes(new byte[] { 1,2,3}));
+        testGreaterThan(byteArrayPointable, ByteArrayPointable.generatePointableFromPureBytes(new byte[] {}));
+        testGreaterThan(byteArrayPointable, ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 0 }));
+        testGreaterThan(byteArrayPointable, ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 1, 2, 3 }));
 
     }
 
-
-    void testEqual(ByteArrayPointable pointable, byte [] bytes){
-        assertTrue(pointable.compareTo(bytes, 0, bytes.length) == 0);
+    void testEqual(ByteArrayPointable pointable, ByteArrayPointable bytes) {
+        assertTrue(pointable.compareTo(bytes) == 0);
     }
 
-    void testLessThan(ByteArrayPointable pointable, byte[] bytes){
-        assertTrue(pointable.compareTo(bytes, 0, bytes.length) < 0);
+    void testLessThan(ByteArrayPointable pointable, ByteArrayPointable bytes) {
+        assertTrue(pointable.compareTo(bytes) < 0);
     }
 
-    void testGreaterThan(ByteArrayPointable pointable, byte[] bytes){
-        assertTrue(pointable.compareTo(bytes, 0, bytes.length) > 0);
+    void testGreaterThan(ByteArrayPointable pointable, ByteArrayPointable bytes) {
+        assertTrue(pointable.compareTo(bytes) > 0);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java
new file mode 100644
index 0000000..c47cc36
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/primitive/UTF8StringPointableTest.java
@@ -0,0 +1,193 @@
+/*
+ * 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.hyracks.data.std.primitive;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
+import org.apache.hyracks.util.string.UTF8StringSample;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+import org.junit.Test;
+
+public class UTF8StringPointableTest {
+    public static UTF8StringPointable STRING_EMPTY = UTF8StringPointable
+            .generateUTF8Pointable(UTF8StringSample.EMPTY_STRING);
+    public static UTF8StringPointable STRING_UTF8_MIX = UTF8StringPointable
+            .generateUTF8Pointable(UTF8StringSample.STRING_UTF8_MIX);
+    public static UTF8StringPointable STRING_UTF8_MIX_LOWERCASE = UTF8StringPointable.generateUTF8Pointable(
+            UTF8StringSample.STRING_UTF8_MIX_LOWERCASE);
+
+    public static UTF8StringPointable STRING_LEN_127 = UTF8StringPointable
+            .generateUTF8Pointable(UTF8StringSample.STRING_LEN_127);
+    public static UTF8StringPointable STRING_LEN_128 = UTF8StringPointable
+            .generateUTF8Pointable(UTF8StringSample.STRING_LEN_128);
+
+    @Test
+    public void testGetStringLength() throws Exception {
+        UTF8StringPointable utf8Ptr = UTF8StringPointable.generateUTF8Pointable(UTF8StringSample.STRING_LEN_127);
+        assertEquals(127, utf8Ptr.getUTF8Length());
+        assertEquals(1, utf8Ptr.getMetaDataLength());
+        assertEquals(127, utf8Ptr.getStringLength());
+
+        byte[] bytes = UTF8StringUtil.writeStringToBytes(UTF8StringSample.STRING_LEN_128);
+        utf8Ptr.set(bytes, 0, bytes.length);
+        assertEquals(128, utf8Ptr.getUTF8Length());
+        assertEquals(2, utf8Ptr.getMetaDataLength());
+        assertEquals(128, utf8Ptr.getStringLength());
+    }
+
+    @Test
+    public void testContains() throws Exception {
+        assertTrue(STRING_UTF8_MIX.contains(STRING_UTF8_MIX, false));
+        assertTrue(STRING_UTF8_MIX.contains(STRING_UTF8_MIX, true));
+        assertTrue(STRING_UTF8_MIX.contains(STRING_EMPTY, true));
+
+        assertTrue(STRING_UTF8_MIX.contains(STRING_UTF8_MIX_LOWERCASE, true));
+        assertTrue(STRING_UTF8_MIX_LOWERCASE.contains(STRING_UTF8_MIX, true));
+    }
+
+    @Test
+    public void testStartsWith() throws Exception {
+        assertTrue(STRING_LEN_128.startsWith(STRING_LEN_127, true));
+        assertFalse(STRING_LEN_127.startsWith(STRING_LEN_128, true));
+
+        assertTrue(STRING_LEN_127.startsWith(STRING_EMPTY, true));
+    }
+
+    @Test
+    public void testEndsWith() throws Exception {
+        assertTrue(STRING_LEN_128.endsWith(STRING_LEN_127, true));
+        assertFalse(STRING_LEN_127.endsWith(STRING_LEN_128, true));
+
+        assertTrue(STRING_LEN_127.startsWith(STRING_EMPTY, true));
+    }
+
+    @Test
+    public void testConcat() throws Exception {
+        UTF8StringPointable expected = UTF8StringPointable.generateUTF8Pointable(
+                UTF8StringSample.generateStringRepeatBy(UTF8StringSample.ONE_ASCII_CHAR, 127 + 128));
+
+        GrowableArray storage = new GrowableArray();
+        UTF8StringBuilder builder = new UTF8StringBuilder();
+        STRING_LEN_127.concat(STRING_LEN_128, builder, storage);
+
+        UTF8StringPointable actual = new UTF8StringPointable();
+        actual.set(storage.getByteArray(), 0, storage.getLength());
+
+        assertEquals(0, expected.compareTo(actual));
+
+        storage.reset();
+        STRING_LEN_127.concat(STRING_EMPTY, builder, storage);
+        actual.set(storage.getByteArray(), 0, storage.getLength());
+
+        assertEquals(0, STRING_LEN_127.compareTo(actual));
+    }
+
+    @Test
+    public void testSubstr() throws Exception {
+        GrowableArray storage = new GrowableArray();
+        UTF8StringBuilder builder = new UTF8StringBuilder();
+
+        STRING_LEN_128.substr(1, 127, builder, storage);
+        UTF8StringPointable result = new UTF8StringPointable();
+        result.set(storage.getByteArray(), 0, storage.getLength());
+
+        assertEquals(0, STRING_LEN_127.compareTo(result));
+
+        storage.reset();
+        STRING_UTF8_MIX.substr(0, UTF8StringSample.STRING_UTF8_MIX.length(), builder, storage);
+        result.set(storage.getByteArray(), 0, storage.getLength());
+        assertEquals(0, STRING_UTF8_MIX.compareTo(result));
+    }
+
+    @Test
+    public void testSubstrBefore() throws Exception {
+        UTF8StringBuilder builder = new UTF8StringBuilder();
+        GrowableArray storage = new GrowableArray();
+
+        STRING_LEN_128.substrBefore(STRING_LEN_127, builder, storage);
+        UTF8StringPointable result = new UTF8StringPointable();
+        result.set(storage.getByteArray(), 0, storage.getLength());
+
+        assertEquals(0, STRING_EMPTY.compareTo(result));
+
+        storage.reset();
+        UTF8StringPointable testPtr = UTF8StringPointable.generateUTF8Pointable("Mix中文123");
+        UTF8StringPointable pattern = UTF8StringPointable.generateUTF8Pointable("文");
+        UTF8StringPointable expect = UTF8StringPointable.generateUTF8Pointable("Mix中");
+        testPtr.substrBefore(pattern, builder, storage);
+        result.set(storage.getByteArray(), 0, storage.getLength());
+        assertEquals(0, expect.compareTo(result));
+    }
+
+    @Test
+    public void testSubstrAfter() throws Exception {
+        UTF8StringBuilder builder = new UTF8StringBuilder();
+        GrowableArray storage = new GrowableArray();
+
+        STRING_LEN_128.substrAfter(STRING_LEN_127, builder, storage);
+        UTF8StringPointable result = new UTF8StringPointable();
+        result.set(storage.getByteArray(), 0, storage.getLength());
+
+        UTF8StringPointable expect = UTF8StringPointable
+                .generateUTF8Pointable(Character.toString(UTF8StringSample.ONE_ASCII_CHAR));
+        assertEquals(0, expect.compareTo(result));
+
+        storage.reset();
+        UTF8StringPointable testPtr = UTF8StringPointable.generateUTF8Pointable("Mix中文123");
+        UTF8StringPointable pattern = UTF8StringPointable.generateUTF8Pointable("文");
+        expect = UTF8StringPointable.generateUTF8Pointable("123");
+        testPtr.substrAfter(pattern, builder, storage);
+        result.set(storage.getByteArray(), 0, storage.getLength());
+        assertEquals(0, expect.compareTo(result));
+    }
+
+    @Test
+    public void testLowercase() throws Exception {
+        UTF8StringBuilder builder = new UTF8StringBuilder();
+        GrowableArray storage = new GrowableArray();
+
+        UTF8StringPointable result = new UTF8StringPointable();
+        STRING_UTF8_MIX.lowercase(builder, storage);
+
+        result.set(storage.getByteArray(), 0, storage.getLength());
+
+        assertEquals(0, STRING_UTF8_MIX_LOWERCASE.compareTo(result));
+    }
+
+    @Test
+    public void testUppercase() throws Exception {
+        UTF8StringBuilder builder = new UTF8StringBuilder();
+        GrowableArray storage = new GrowableArray();
+
+        UTF8StringPointable result = new UTF8StringPointable();
+        STRING_UTF8_MIX_LOWERCASE.uppercase(builder, storage);
+
+        result.set(storage.getByteArray(), 0, storage.getLength());
+
+        UTF8StringPointable expected = UTF8StringPointable
+                .generateUTF8Pointable(UTF8StringSample.STRING_UTF8_MIX_LOWERCASE.toUpperCase());
+        assertEquals(0, expected.compareTo(result));
+
+    }
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/util/UTF8StringBuilderTest.java b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/util/UTF8StringBuilderTest.java
new file mode 100644
index 0000000..9fcf40f
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/util/UTF8StringBuilderTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+import org.apache.hyracks.util.string.UTF8StringSample;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+import org.junit.Test;
+
+public class UTF8StringBuilderTest {
+
+    UTF8StringBuilder utf8StringBuilder = new UTF8StringBuilder();
+    GrowableArray storage = new GrowableArray();
+
+    @Test
+    public void testNormalBuilder() throws IOException {
+        testOneString(UTF8StringSample.EMPTY_STRING, 0);
+        testOneString(UTF8StringSample.EMPTY_STRING, 127);
+
+        testOneString(UTF8StringSample.STRING_UTF8_MIX, 127);
+        testOneString(UTF8StringSample.STRING_LEN_128, 128);
+
+        testOneString(UTF8StringSample.STRING_LEN_MEDIUM, VarLenIntEncoderDecoder.BOUND_TWO_BYTE);
+        testOneString(UTF8StringSample.STRING_LEN_LARGE, VarLenIntEncoderDecoder.BOUND_THREE_BYTE);
+    }
+
+    @Test
+    public void testShrinkAfterFinish() throws IOException {
+        testOneString(UTF8StringSample.STRING_LEN_127, VarLenIntEncoderDecoder.BOUND_TWO_BYTE);
+        testOneString(UTF8StringSample.STRING_LEN_127, VarLenIntEncoderDecoder.BOUND_THREE_BYTE);
+        testOneString(UTF8StringSample.STRING_LEN_127, VarLenIntEncoderDecoder.BOUND_FOUR_BYTE);
+    }
+
+    @Test
+    public void testIncreaseAfterFinish() throws IOException {
+        testOneString(UTF8StringSample.STRING_LEN_128, VarLenIntEncoderDecoder.BOUND_ONE_BYTE);
+        testOneString(UTF8StringSample.STRING_LEN_MEDIUM, VarLenIntEncoderDecoder.BOUND_ONE_BYTE);
+        testOneString(UTF8StringSample.STRING_LEN_LARGE, VarLenIntEncoderDecoder.BOUND_TWO_BYTE);
+    }
+
+    public void testOneString(String testString, int estimateLength) throws IOException {
+        storage.reset();
+        utf8StringBuilder.reset(storage, estimateLength);
+        for (char c : testString.toCharArray()) {
+            utf8StringBuilder.appendChar(c);
+        }
+        utf8StringBuilder.finish();
+        assertEquals(testString, UTF8StringUtil.toString(new StringBuilder(), storage.getByteArray(), 0).toString());
+
+        UTF8StringPointable hyracksUtf = new UTF8StringPointable();
+        hyracksUtf.set(storage.getByteArray(), 0, storage.getLength());
+
+        GrowableArray storage2 = new GrowableArray();
+        utf8StringBuilder.reset(storage2, estimateLength);
+        utf8StringBuilder.appendUtf8StringPointable(hyracksUtf);
+        utf8StringBuilder.finish();
+        assertEquals(testString, UTF8StringUtil.toString(new StringBuilder(), storage.getByteArray(), 0).toString());
+    }
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/util/UTF8StringCharacterIteratorTest.java b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/util/UTF8StringCharacterIteratorTest.java
new file mode 100644
index 0000000..fc8a6ab
--- /dev/null
+++ b/hyracks/hyracks-data/hyracks-data-std/src/test/java/org/apache/hyracks/data/std/util/UTF8StringCharacterIteratorTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.hyracks.data.std.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringSample;
+import org.junit.Test;
+
+public class UTF8StringCharacterIteratorTest {
+
+    private UTF8StringCharacterIterator iterator = new UTF8StringCharacterIterator();
+
+    private void testEachIterator(String testString) {
+        UTF8StringPointable ptr = UTF8StringPointable.generateUTF8Pointable(testString);
+        iterator.reset(ptr);
+        for (char ch : testString.toCharArray()) {
+            assertTrue(iterator.hasNext());
+            assertEquals(ch, iterator.next());
+        }
+        assertFalse(iterator.hasNext());
+
+        iterator.reset();
+        for (char ch : testString.toCharArray()) {
+            assertTrue(iterator.hasNext());
+            assertEquals(ch, iterator.next());
+        }
+        assertFalse(iterator.hasNext());
+    }
+
+    @Test
+    public void testIterator(){
+        testEachIterator(UTF8StringSample.EMPTY_STRING);
+        testEachIterator(UTF8StringSample.STRING_UTF8_MIX);
+        testEachIterator(UTF8StringSample.STRING_LEN_128);
+        testEachIterator(UTF8StringSample.STRING_LEN_128);
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/pom.xml b/hyracks/hyracks-dataflow-common/pom.xml
index 7ecf569..859d5bc 100644
--- a/hyracks/hyracks-dataflow-common/pom.xml
+++ b/hyracks/hyracks-dataflow-common/pom.xml
@@ -27,51 +27,54 @@
     <version>0.2.18-SNAPSHOT</version>
   </parent>
 
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-      <comments>A business-friendly OSS license</comments>
-    </license>
-  </licenses>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+            <comments>A business-friendly OSS license</comments>
+        </license>
+    </licenses>
 
-  <properties>
-      <root.dir>${basedir}/../..</root.dir>
-  </properties>
+    <properties>
+        <root.dir>${basedir}/../..</root.dir>
+    </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-    </dependency>
-   	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-control-nc</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-        <scope>test</scope>
-  	</dependency>
-  </dependencies>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-util</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-util</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-api</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-data-std</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-control-nc</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
index 7b18c3a..1553605 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/AbstractFrameAppender.java
@@ -29,6 +29,18 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
 
+/*
+ * Frame
+ *  _____________________________________________
+ * |[tuple1][tuple2][tuple3].........            |
+ * |                      .                      |
+ * |                      .                      |
+ * |                      .                      |
+ * |                      .                      |
+ * |                      .                      |
+ * |..[tupleN][tuplesOffsets(4*N)][tupleCount(4)]|
+ * |_____________________________________________|
+ */
 public class AbstractFrameAppender implements IFrameAppender {
     protected IFrame frame;
     protected byte[] array; // cached the getBuffer().array to speed up byte array access a little
@@ -46,12 +58,11 @@
     }
 
     protected boolean hasEnoughSpace(int fieldCount, int tupleLength) {
-        return tupleDataEndOffset + FrameHelper.calcSpaceInFrame(fieldCount, tupleLength)
-                + tupleCount * FrameConstants.SIZE_LEN
-                <= FrameHelper.getTupleCountOffset(frame.getFrameSize());
+        return tupleDataEndOffset + FrameHelper.calcRequiredSpace(fieldCount, tupleLength)
+                + tupleCount * FrameConstants.SIZE_LEN <= FrameHelper.getTupleCountOffset(frame.getFrameSize());
     }
 
-    private void reset(ByteBuffer buffer, boolean clear) {
+    protected void reset(ByteBuffer buffer, boolean clear) {
         array = buffer.array();
         if (clear) {
             IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), 0);
@@ -59,9 +70,8 @@
             tupleDataEndOffset = FrameConstants.TUPLE_START_OFFSET;
         } else {
             tupleCount = IntSerDeUtils.getInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()));
-            tupleDataEndOffset = tupleCount == 0 ?
-                    FrameConstants.TUPLE_START_OFFSET :
-                    IntSerDeUtils.getInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize())
+            tupleDataEndOffset = tupleCount == 0 ? FrameConstants.TUPLE_START_OFFSET
+                    : IntSerDeUtils.getInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize())
                             - tupleCount * FrameConstants.SIZE_LEN);
         }
     }
@@ -77,7 +87,7 @@
     }
 
     @Override
-    public void flush(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
+    public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
         getBuffer().clear();
         if (getTupleCount() > 0) {
             outWriter.nextFrame(getBuffer());
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java
index 46536f1..e5f7d09 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java
@@ -26,13 +26,15 @@
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.data.std.api.IValueReference;
 import org.apache.hyracks.data.std.util.GrowableArray;
 
 /**
  * Array backed tuple builder.
- * 
- * @author vinayakb
+ *
+ * @deprecated Use IFrameFieldAppender.appendField to append fields directly.
  */
+@Deprecated
 public class ArrayTupleBuilder implements IDataOutputProvider {
     private final GrowableArray fieldData = new GrowableArray();
     private final int[] fEndOffsets;
@@ -53,7 +55,7 @@
 
     /**
      * Get the end offsets of the fields in this tuple.
-     * 
+     *
      * @return end offsets of the fields.
      */
     public int[] getFieldEndOffsets() {
@@ -62,7 +64,7 @@
 
     /**
      * Get the data area in this builder.
-     * 
+     *
      * @return Data byte array.
      */
     public byte[] getByteArray() {
@@ -71,7 +73,7 @@
 
     /**
      * Get the size of the data area.
-     * 
+     *
      * @return data area size.
      */
     public int getSize() {
@@ -80,7 +82,7 @@
 
     /**
      * Add a field to the tuple from a field in a frame.
-     * 
+     *
      * @param accessor
      *            - Frame that contains the field to be copied into the tuple
      *            builder.
@@ -110,7 +112,7 @@
     /**
      * Add a field to the tuple by serializing the given object using the given
      * serializer.
-     * 
+     *
      * @param serDeser
      *            - Serializer
      * @param instance
@@ -124,7 +126,7 @@
 
     /**
      * Add a field to the tuple by copying the data bytes from a byte array.
-     * 
+     *
      * @param bytes
      *            - Byte array to copy the field data from.
      * @param start
@@ -166,4 +168,11 @@
     public void addFieldEndOffset() {
         fEndOffsets[nextField++] = fieldData.getLength();
     }
-}
\ No newline at end of file
+
+    /**
+     * Adds a new field and fills it with the content of the passed value
+     */
+    public void addField(IValueReference data) throws HyracksDataException {
+        addField(data.getByteArray(), data.getStartOffset(), data.getLength());
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java
index f1398c0..8cb473d 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java
@@ -25,7 +25,7 @@
  * a frame. It is meant to be reset directly with the field slots and tuple data
  * provided by ArrayTupleBuilder. The purpose is to avoid coping the built tuple
  * into a frame before being able to use it as an ITupleReference.
- * 
+ *
  * @author alexander.behm
  */
 public class ArrayTupleReference implements ITupleReference {
@@ -36,7 +36,7 @@
 		this.fEndOffsets = fEndOffsets;
 		this.tupleData = tupleData;
 	}
-	
+
 	@Override
 	public int getFieldCount() {
 		return fEndOffsets.length;
@@ -49,7 +49,7 @@
 
 	@Override
 	public int getFieldStart(int fIdx) {
-		return (fIdx == 0) ? 0 : fEndOffsets[fIdx - 1]; 
+		return (fIdx == 0) ? 0 : fEndOffsets[fIdx - 1];
 	}
 
 	@Override
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluatorFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FixedSizeFrameTupleAppender.java
similarity index 65%
copy from algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluatorFactory.java
copy to hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FixedSizeFrameTupleAppender.java
index a81f351..60c6e6d 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopyEvaluatorFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FixedSizeFrameTupleAppender.java
@@ -16,13 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.runtime.base;
 
-import java.io.Serializable;
+package org.apache.hyracks.dataflow.common.comm.io;
 
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.data.std.api.IDataOutputProvider;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
-public interface ICopyEvaluatorFactory extends Serializable {
-    public ICopyEvaluator createEvaluator(IDataOutputProvider output) throws AlgebricksException;
-}
\ No newline at end of file
+public class FixedSizeFrameTupleAppender extends FrameTupleAppender {
+    @Override
+    protected boolean canHoldNewTuple(int fieldCount, int dataLength) throws HyracksDataException {
+        if (hasEnoughSpace(fieldCount, dataLength)) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializer.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializer.java
index 200a457..819d751 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializer.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializer.java
@@ -98,4 +98,4 @@
             e.printStackTrace();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataReader.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataReader.java
index 50296e3..c26f5ac 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataReader.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataReader.java
@@ -76,4 +76,4 @@
             first = false;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataWriter.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataWriter.java
index 7d9d643..a98bb5de 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataWriter.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameDeserializingDataWriter.java
@@ -58,4 +58,9 @@
     @Override
     public void fail() {
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        writer.flush();
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldAppender.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldAppender.java
index 996f296..e62e9e7 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldAppender.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldAppender.java
@@ -49,18 +49,22 @@
         leftOverSize = 0;
     }
 
+    /**
+     * Reset frame states and copy the left over data into the new frame
+     *
+     * @param frame
+     * @throws HyracksDataException
+     */
+    public void resetWithLeftOverData(IFrame frame) throws HyracksDataException {
+        super.reset(frame, true);
+        copyLeftOverDataFromeBufferToFrame();
+    }
+
     @Override
-    public void flush(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
-        super.flush(outWriter, clearFrame);
+    public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
+        super.write(outWriter, clearFrame);
         if (clearFrame) {
-            if (leftOverSize > 0) {
-                if (!canHoldNewTuple(0, leftOverSize)) {
-                    throw new HyracksDataException(
-                            "The given frame can not be extended to insert the leftover data from the last record");
-                }
-                System.arraycopy(cachedLeftOverFields, 0, array, tupleDataEndOffset, leftOverSize);
-                leftOverSize = 0;
-            }
+            copyLeftOverDataFromeBufferToFrame();
         }
     }
 
@@ -85,13 +89,13 @@
             return true;
         } else {
             if (currentField > 0) {
-                copyLeftOverData();
+                copyLeftOverDataFromFrameToBuffer();
             }
             return false;
         }
     }
 
-    private void copyLeftOverData() {
+    private void copyLeftOverDataFromFrameToBuffer() {
         leftOverSize = lastFieldEndOffset + fieldCount * 4;
         if (cachedLeftOverFields == null || cachedLeftOverFields.length < leftOverSize) {
             cachedLeftOverFields = new byte[leftOverSize];
@@ -99,6 +103,17 @@
         System.arraycopy(array, tupleDataEndOffset, cachedLeftOverFields, 0, leftOverSize);
     }
 
+    private void copyLeftOverDataFromeBufferToFrame() throws HyracksDataException {
+        if (leftOverSize > 0) {
+            if (!canHoldNewTuple(0, leftOverSize)) {
+                throw new HyracksDataException(
+                        "The given frame can not be extended to insert the leftover data from the last record");
+            }
+            System.arraycopy(cachedLeftOverFields, 0, array, tupleDataEndOffset, leftOverSize);
+            leftOverSize = 0;
+        }
+    }
+
     public boolean appendField(IFrameTupleAccessor fta, int tIndex, int fIndex) throws HyracksDataException {
         int startOffset = fta.getTupleStartOffset(tIndex);
         int fStartOffset = fta.getFieldStartOffset(tIndex, fIndex);
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldTupleAppender.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldTupleAppender.java
index 616b8ca..9b9e803 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldTupleAppender.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameFixedFieldTupleAppender.java
@@ -142,7 +142,7 @@
     }
 
     @Override
-    public void flush(IFrameWriter outWriter, boolean clear) throws HyracksDataException {
-        lastAppender.flush(outWriter, clear);
+    public void write(IFrameWriter outWriter, boolean clear) throws HyracksDataException {
+        lastAppender.write(outWriter, clear);
     }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
index 509fe6d..e8f826f 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameOutputStream.java
@@ -58,6 +58,6 @@
     }
 
     public void flush(IFrameWriter writer) throws HyracksDataException {
-        frameTupleAppender.flush(writer, true);
+        frameTupleAppender.write(writer, true);
     }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java
index a89e895..e314cd1 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAccessor.java
@@ -19,7 +19,9 @@
 package org.apache.hyracks.dataflow.common.comm.io;
 
 import java.io.DataInputStream;
+import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.Arrays;
 
 import org.apache.hyracks.api.comm.FrameConstants;
 import org.apache.hyracks.api.comm.FrameHelper;
@@ -27,6 +29,7 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
 
 /**
@@ -40,8 +43,8 @@
  * field slots.
  */
 public class FrameTupleAccessor implements IFrameTupleAccessor {
-    private int tupleCountOffset;
     private final RecordDescriptor recordDescriptor;
+    private int tupleCountOffset;
     private ByteBuffer buffer;
     private int start;
 
@@ -72,9 +75,8 @@
 
     @Override
     public int getTupleStartOffset(int tupleIndex) {
-        int offset = tupleIndex == 0 ?
-                FrameConstants.TUPLE_START_OFFSET :
-                IntSerDeUtils.getInt(buffer.array(), tupleCountOffset - 4 * tupleIndex);
+        int offset = tupleIndex == 0 ? FrameConstants.TUPLE_START_OFFSET
+                : IntSerDeUtils.getInt(buffer.array(), tupleCountOffset - 4 * tupleIndex);
         return start + offset;
     }
 
@@ -85,16 +87,15 @@
 
     @Override
     public int getTupleEndOffset(int tupleIndex) {
-        return start + IntSerDeUtils
-                .getInt(buffer.array(), tupleCountOffset - FrameConstants.SIZE_LEN * (tupleIndex + 1));
+        return start
+                + IntSerDeUtils.getInt(buffer.array(), tupleCountOffset - FrameConstants.SIZE_LEN * (tupleIndex + 1));
     }
 
     @Override
     public int getFieldStartOffset(int tupleIndex, int fIdx) {
-        return fIdx == 0 ?
-                0 :
-                IntSerDeUtils
-                        .getInt(buffer.array(), getTupleStartOffset(tupleIndex) + (fIdx - 1) * FrameConstants.SIZE_LEN);
+        return fIdx == 0 ? 0
+                : IntSerDeUtils.getInt(buffer.array(),
+                        getTupleStartOffset(tupleIndex) + (fIdx - 1) * FrameConstants.SIZE_LEN);
     }
 
     @Override
@@ -136,13 +137,18 @@
     protected void prettyPrint(int tid, ByteBufferInputStream bbis, DataInputStream dis, StringBuilder sb) {
         sb.append(" tid" + tid + ":(" + getTupleStartOffset(tid) + ", " + getTupleEndOffset(tid) + ")[");
         for (int j = 0; j < getFieldCount(); ++j) {
+            sb.append(" ");
+            if (j > 0) {
+                sb.append("|");
+            }
             sb.append("f" + j + ":(" + getFieldStartOffset(tid, j) + ", " + getFieldEndOffset(tid, j) + ") ");
             sb.append("{");
             bbis.setByteBuffer(buffer, getTupleStartOffset(tid) + getFieldSlotsLength() + getFieldStartOffset(tid, j));
             try {
                 sb.append(recordDescriptor.getFields()[j].deserialize(dis));
-            } catch (HyracksDataException e) {
+            } catch (Exception e) {
                 e.printStackTrace();
+                sb.append("Failed to deserialize field" + j);
             }
             sb.append("}");
         }
@@ -161,4 +167,83 @@
     public int getFieldCount() {
         return recordDescriptor.getFieldCount();
     }
+
+    /*
+     * The two methods below can be used for debugging.
+     * They are safe as they don't print records. Printing records
+     * using IserializerDeserializer can print incorrect results or throw exceptions.
+     * A better way yet would be to use record pointable.
+     */
+    public void prettyPrint(String prefix, int[] recordFields) throws IOException {
+        ByteBufferInputStream bbis = new ByteBufferInputStream();
+        DataInputStream dis = new DataInputStream(bbis);
+        int tc = getTupleCount();
+        StringBuilder sb = new StringBuilder();
+        sb.append(prefix).append("TC: " + tc).append("\n");
+        for (int i = 0; i < tc; ++i) {
+            prettyPrint(i, bbis, dis, sb, recordFields);
+        }
+        System.err.println(sb.toString());
+    }
+
+    public void prettyPrint(int tIdx, int[] recordFields) throws IOException {
+        ByteBufferInputStream bbis = new ByteBufferInputStream();
+        DataInputStream dis = new DataInputStream(bbis);
+        StringBuilder sb = new StringBuilder();
+        prettyPrint(tIdx, bbis, dis, sb, recordFields);
+        System.err.println(sb.toString());
+    }
+
+    public void prettyPrint(ITupleReference tuple, int fieldsIdx, int descIdx) throws HyracksDataException {
+        ByteBufferInputStream bbis = new ByteBufferInputStream();
+        DataInputStream dis = new DataInputStream(bbis);
+        StringBuilder sb = new StringBuilder();
+        sb.append("[");
+        sb.append("f" + fieldsIdx + ":(" + tuple.getFieldStart(fieldsIdx) + ", "
+                + (tuple.getFieldLength(fieldsIdx) + tuple.getFieldStart(fieldsIdx)) + ") ");
+        sb.append("{");
+        ByteBuffer bytebuff = ByteBuffer.wrap(tuple.getFieldData(fieldsIdx));
+        bbis.setByteBuffer(bytebuff, tuple.getFieldStart(fieldsIdx));
+        sb.append(recordDescriptor.getFields()[descIdx].deserialize(dis));
+        sb.append("}");
+        sb.append("\n");
+        System.err.println(sb.toString());
+    }
+
+    public void prettyPrint(ITupleReference tuple, int[] descF) throws HyracksDataException {
+        ByteBufferInputStream bbis = new ByteBufferInputStream();
+        DataInputStream dis = new DataInputStream(bbis);
+        StringBuilder sb = new StringBuilder();
+        sb.append("[");
+        for (int j = 0; j < descF.length; ++j) {
+            sb.append("f" + j + ":(" + tuple.getFieldStart(j) + ", "
+                    + (tuple.getFieldLength(j) + tuple.getFieldStart(j)) + ") ");
+            sb.append("{");
+            ByteBuffer bytebuff = ByteBuffer.wrap(tuple.getFieldData(j));
+            bbis.setByteBuffer(bytebuff, tuple.getFieldStart(j));
+            sb.append(recordDescriptor.getFields()[descF[j]].deserialize(dis));
+            sb.append("}");
+        }
+        sb.append("\n");
+        System.err.println(sb.toString());
+    }
+
+    protected void prettyPrint(int tid, ByteBufferInputStream bbis, DataInputStream dis, StringBuilder sb,
+            int[] recordFields) throws IOException {
+        Arrays.sort(recordFields);
+        sb.append(" tid" + tid + ":(" + getTupleStartOffset(tid) + ", " + getTupleEndOffset(tid) + ")[");
+        for (int j = 0; j < getFieldCount(); ++j) {
+            sb.append("f" + j + ":(" + getFieldStartOffset(tid, j) + ", " + getFieldEndOffset(tid, j) + ") ");
+            sb.append("{");
+            bbis.setByteBuffer(buffer, getTupleStartOffset(tid) + getFieldSlotsLength() + getFieldStartOffset(tid, j));
+            if (Arrays.binarySearch(recordFields, j) >= 0) {
+                sb.append("{a record field: only print using pointable:");
+                sb.append("tag->" + dis.readByte() + "}");
+            } else {
+                sb.append(recordDescriptor.getFields()[j].deserialize(dis));
+            }
+            sb.append("}");
+        }
+        sb.append("\n");
+    }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppender.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppender.java
index c9c51d3..136e231 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppender.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppender.java
@@ -40,6 +40,10 @@
         reset(frame, clear);
     }
 
+    /**
+     * append fieldSlots and bytes to the current frame
+     */
+    @Override
     public boolean append(int[] fieldSlots, byte[] bytes, int offset, int length) throws HyracksDataException {
         if (canHoldNewTuple(fieldSlots.length, length)) {
             for (int i = 0; i < fieldSlots.length; ++i) {
@@ -50,27 +54,28 @@
             IntSerDeUtils.putInt(getBuffer().array(),
                     FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(getBuffer().array(), FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(getBuffer().array(), FrameHelper.getTupleCountOffset(frame.getFrameSize()),
+                    tupleCount);
             return true;
         }
         return false;
     }
 
+    @Override
     public boolean append(byte[] bytes, int offset, int length) throws HyracksDataException {
         if (canHoldNewTuple(0, length)) {
             System.arraycopy(bytes, offset, getBuffer().array(), tupleDataEndOffset, length);
             tupleDataEndOffset += length;
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+                    tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
     }
 
+    @Override
     public boolean appendSkipEmptyField(int[] fieldSlots, byte[] bytes, int offset, int length)
             throws HyracksDataException {
         if (canHoldNewTuple(fieldSlots.length, length)) {
@@ -83,17 +88,16 @@
             }
             System.arraycopy(bytes, offset, array, tupleDataEndOffset + effectiveSlots * 4, length);
             tupleDataEndOffset += effectiveSlots * 4 + length;
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
                     tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
     }
 
+    @Override
     public boolean append(IFrameTupleAccessor tupleAccessor, int tStartOffset, int tEndOffset)
             throws HyracksDataException {
         int length = tEndOffset - tStartOffset;
@@ -101,25 +105,25 @@
             ByteBuffer src = tupleAccessor.getBuffer();
             System.arraycopy(src.array(), tStartOffset, array, tupleDataEndOffset, length);
             tupleDataEndOffset += length;
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
                     tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
     }
 
+    @Override
     public boolean append(IFrameTupleAccessor tupleAccessor, int tIndex) throws HyracksDataException {
         int tStartOffset = tupleAccessor.getTupleStartOffset(tIndex);
         int tEndOffset = tupleAccessor.getTupleEndOffset(tIndex);
         return append(tupleAccessor, tStartOffset, tEndOffset);
     }
 
-    public boolean appendConcat(IFrameTupleAccessor accessor0, int tIndex0, IFrameTupleAccessor accessor1,
-            int tIndex1) throws HyracksDataException {
+    @Override
+    public boolean appendConcat(IFrameTupleAccessor accessor0, int tIndex0, IFrameTupleAccessor accessor1, int tIndex1)
+            throws HyracksDataException {
         int startOffset0 = accessor0.getTupleStartOffset(tIndex0);
         int endOffset0 = accessor0.getTupleEndOffset(tIndex0);
         int length0 = endOffset0 - startOffset0;
@@ -143,22 +147,22 @@
                         src1.getInt(startOffset1 + i * 4) + dataLen0);
             }
             // Copy data0
-            System.arraycopy(src0.array(), startOffset0 + slotsLen0, array, tupleDataEndOffset + slotsLen0
-                    + slotsLen1, dataLen0);
+            System.arraycopy(src0.array(), startOffset0 + slotsLen0, array, tupleDataEndOffset + slotsLen0 + slotsLen1,
+                    dataLen0);
             // Copy data1
-            System.arraycopy(src1.array(), startOffset1 + slotsLen1, array, tupleDataEndOffset + slotsLen0
-                    + slotsLen1 + dataLen0, dataLen1);
+            System.arraycopy(src1.array(), startOffset1 + slotsLen1, array,
+                    tupleDataEndOffset + slotsLen0 + slotsLen1 + dataLen0, dataLen1);
             tupleDataEndOffset += (length0 + length1);
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+                    tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
     }
 
+    @Override
     public boolean appendConcat(IFrameTupleAccessor accessor0, int tIndex0, int[] fieldSlots1, byte[] bytes1,
             int offset1, int dataLen1) throws HyracksDataException {
         int startOffset0 = accessor0.getTupleStartOffset(tIndex0);
@@ -176,21 +180,19 @@
             System.arraycopy(src0.array(), startOffset0, array, tupleDataEndOffset, slotsLen0);
             // Copy fieldSlots1 with the following transformation: newSlotIdx = oldSlotIdx + dataLen0
             for (int i = 0; i < fieldSlots1.length; ++i) {
-                IntSerDeUtils.putInt(array, tupleDataEndOffset + slotsLen0 + i * 4,
-                        (fieldSlots1[i] + dataLen0));
+                IntSerDeUtils.putInt(array, tupleDataEndOffset + slotsLen0 + i * 4, (fieldSlots1[i] + dataLen0));
             }
             // Copy data0
-            System.arraycopy(src0.array(), startOffset0 + slotsLen0, array, tupleDataEndOffset + slotsLen0
-                    + slotsLen1, dataLen0);
+            System.arraycopy(src0.array(), startOffset0 + slotsLen0, array, tupleDataEndOffset + slotsLen0 + slotsLen1,
+                    dataLen0);
             // Copy bytes1
-            System.arraycopy(bytes1, offset1, array,
-                    tupleDataEndOffset + slotsLen0 + fieldSlots1.length * 4 + dataLen0, dataLen1);
+            System.arraycopy(bytes1, offset1, array, tupleDataEndOffset + slotsLen0 + fieldSlots1.length * 4 + dataLen0,
+                    dataLen1);
             tupleDataEndOffset += (length0 + length1);
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+                    tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
@@ -219,22 +221,21 @@
                         src1.getInt(startOffset1 + i * 4) + dataLen0);
             }
             // Copy bytes0
-            System.arraycopy(bytes0, offset0, array, tupleDataEndOffset + slotsLen0 + slotsLen1,
-                    dataLen0);
+            System.arraycopy(bytes0, offset0, array, tupleDataEndOffset + slotsLen0 + slotsLen1, dataLen0);
             // Copy data1
-            System.arraycopy(src1.array(), startOffset1 + slotsLen1, array, tupleDataEndOffset + slotsLen0
-                    + slotsLen1 + dataLen0, dataLen1);
+            System.arraycopy(src1.array(), startOffset1 + slotsLen1, array,
+                    tupleDataEndOffset + slotsLen0 + slotsLen1 + dataLen0, dataLen1);
             tupleDataEndOffset += (length0 + length1);
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+                    tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
     }
 
+    @Override
     public boolean appendProjection(IFrameTupleAccessor accessor, int tIndex, int[] fields)
             throws HyracksDataException {
         int fTargetSlotsLength = fields.length * 4;
@@ -253,18 +254,17 @@
                 int fSrcStart = tStartOffset + fSrcSlotsLength + accessor.getFieldStartOffset(tIndex, fields[i]);
                 int fLen = accessor.getFieldEndOffset(tIndex, fields[i])
                         - accessor.getFieldStartOffset(tIndex, fields[i]);
-                System.arraycopy(accessor.getBuffer().array(), fSrcStart, array, tupleDataEndOffset
-                        + fTargetSlotsLength + fStartOffset, fLen);
+                System.arraycopy(accessor.getBuffer().array(), fSrcStart, array,
+                        tupleDataEndOffset + fTargetSlotsLength + fStartOffset, fLen);
                 fEndOffset += fLen;
                 IntSerDeUtils.putInt(array, tupleDataEndOffset + i * 4, fEndOffset);
                 fStartOffset = fEndOffset;
             }
             tupleDataEndOffset += length;
-            IntSerDeUtils.putInt(array,
-                    FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1),
+                    tupleDataEndOffset);
             ++tupleCount;
-            IntSerDeUtils
-                    .putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+            IntSerDeUtils.putInt(array, FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
             return true;
         }
         return false;
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppenderWrapper.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppenderWrapper.java
index 847deb8..77495dd 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppenderWrapper.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTupleAppenderWrapper.java
@@ -46,8 +46,12 @@
         outputWriter.open();
     }
 
+    public void write() throws HyracksDataException {
+        frameTupleAppender.write(outputWriter, true);
+    }
+
     public void flush() throws HyracksDataException {
-        frameTupleAppender.flush(outputWriter, true);
+        frameTupleAppender.flush(outputWriter);
     }
 
     public void close() throws HyracksDataException {
@@ -64,8 +68,7 @@
 
     public void appendSkipEmptyField(int[] fieldSlots, byte[] bytes, int offset, int length)
             throws HyracksDataException {
-        FrameUtils.appendSkipEmptyFieldToWriter(outputWriter, frameTupleAppender,
-                fieldSlots, bytes, offset, length);
+        FrameUtils.appendSkipEmptyFieldToWriter(outputWriter, frameTupleAppender, fieldSlots, bytes, offset, length);
     }
 
     public void append(byte[] bytes, int offset, int length) throws HyracksDataException {
@@ -88,8 +91,8 @@
 
     public void appendConcat(IFrameTupleAccessor accessor0, int tIndex0, int[] fieldSlots1, byte[] bytes1, int offset1,
             int dataLen1) throws HyracksDataException {
-        FrameUtils.appendConcatToWriter(outputWriter, frameTupleAppender, accessor0, tIndex0,
-                fieldSlots1, bytes1, offset1, dataLen1);
+        FrameUtils.appendConcatToWriter(outputWriter, frameTupleAppender, accessor0, tIndex0, fieldSlots1, bytes1,
+                offset1, dataLen1);
     }
 
     public void appendProjection(IFrameTupleAccessor accessor, int tIndex, int[] fields) throws HyracksDataException {
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/SerializingDataWriter.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/SerializingDataWriter.java
index 918ebd9..365b01c 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/SerializingDataWriter.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/SerializingDataWriter.java
@@ -62,11 +62,12 @@
         if (!open) {
             throw new HyracksDataException("Closing SerializingDataWriter that has not been opened");
         }
-        tupleAppender.flush(frameWriter, true);
+        tupleAppender.write(frameWriter, true);
         frameWriter.close();
         open = false;
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public void writeData(Object[] data) throws HyracksDataException {
         if (!open) {
@@ -88,4 +89,9 @@
     public void fail() throws HyracksDataException {
         frameWriter.fail();
     }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        tupleAppender.flush(frameWriter);
+    }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/ByteBufferInputStream.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/ByteBufferInputStream.java
index 90993e8b..8741139 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/ByteBufferInputStream.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/ByteBufferInputStream.java
@@ -53,4 +53,4 @@
         position += l;
         return l;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/FrameUtils.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/FrameUtils.java
index 56eef43..063afe7 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/FrameUtils.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/util/FrameUtils.java
@@ -65,7 +65,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.appendSkipEmptyField(fieldSlots, bytes, offset, length)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.appendSkipEmptyField(fieldSlots, bytes, offset, length)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -91,7 +91,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.append(bytes, offset, length)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.append(bytes, offset, length)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -114,7 +114,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.append(tupleAccessor, tStartOffset, tEndOffset)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.append(tupleAccessor, tStartOffset, tEndOffset)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -135,7 +135,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.append(tupleAccessor, tIndex)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.append(tupleAccessor, tIndex)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -159,7 +159,7 @@
         if (!tupleAppender.append(fieldEndOffsets, byteArray, start, size)) {
 
             flushedBytes = tupleAppender.getBuffer().capacity();
-            tupleAppender.flush(writer, true);
+            tupleAppender.write(writer, true);
 
             if (!tupleAppender.append(fieldEndOffsets, byteArray, start, size)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
@@ -184,7 +184,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.appendConcat(accessor0, tIndex0, accessor1, tIndex1)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.appendConcat(accessor0, tIndex0, accessor1, tIndex1)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -210,7 +210,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.appendConcat(accessor0, tIndex0, fieldSlots1, bytes1, offset1, dataLen1)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.appendConcat(accessor0, tIndex0, fieldSlots1, bytes1, offset1, dataLen1)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -232,7 +232,7 @@
         int flushedBytes = 0;
         if (!frameTupleAppender.appendProjection(accessor, tIndex, fields)) {
             flushedBytes = frameTupleAppender.getBuffer().capacity();
-            frameTupleAppender.flush(writer, true);
+            frameTupleAppender.write(writer, true);
             if (!frameTupleAppender.appendProjection(accessor, tIndex, fields)) {
                 throw new HyracksDataException("The output cannot be fit into a frame.");
             }
@@ -254,7 +254,7 @@
         int flushedBytes = 0;
         if (!appender.appendField(array, start, length)) {
             flushedBytes = appender.getBuffer().capacity();
-            appender.flush(writer, true);
+            appender.write(writer, true);
             if (!appender.appendField(array, start, length)) {
                 throw new HyracksDataException("Could not write frame: the size of the tuple is too long");
             }
@@ -276,7 +276,7 @@
         int flushedBytes = 0;
         if (!appender.appendField(accessor, tid, fid)) {
             flushedBytes = appender.getBuffer().capacity();
-            appender.flush(writer, true);
+            appender.write(writer, true);
             if (!appender.appendField(accessor, tid, fid)) {
                 throw new HyracksDataException("Could not write frame: the size of the tuple is too long");
             }
@@ -284,4 +284,4 @@
         return flushedBytes;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleFieldValueReference.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleFieldValueReference.java
index 6d84524..9a0ba7a 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleFieldValueReference.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleFieldValueReference.java
@@ -49,4 +49,4 @@
     public int getLength() {
         return fta.getFieldLength(tupleIndex, fieldIndex);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleReference.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleReference.java
index abf9c37..e810e66 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleReference.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/FrameTupleReference.java
@@ -21,9 +21,9 @@
 
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 
-public final class FrameTupleReference implements IFrameTupleReference {
-    private IFrameTupleAccessor fta;
-    private int tIndex;
+public class FrameTupleReference implements IFrameTupleReference {
+    protected IFrameTupleAccessor fta;
+    protected int tIndex;
 
     public void reset(IFrameTupleAccessor fta, int tIndex) {
         this.fta = fta;
@@ -59,4 +59,4 @@
     public int getFieldLength(int fIdx) {
         return fta.getFieldLength(tIndex, fIdx);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/IFrameTupleReference.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/IFrameTupleReference.java
index 8cf2f39..18eb2e7 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/IFrameTupleReference.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/IFrameTupleReference.java
@@ -24,4 +24,4 @@
     public IFrameTupleAccessor getFrameTupleAccessor();
 
     public int getTupleIndex();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/ITupleReference.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/ITupleReference.java
index e9ee541..e8d02a1 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/ITupleReference.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/accessors/ITupleReference.java
@@ -26,4 +26,4 @@
     public int getFieldStart(int fIdx);
 
     public int getFieldLength(int fIdx);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java
index d8c25cd..a69cb01 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/BooleanSerializerDeserializer.java
@@ -50,4 +50,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
index 4c8bc1e..7b4f7b6 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializer.java
@@ -19,57 +19,73 @@
 
 package org.apache.hyracks.dataflow.common.data.marshalling;
 
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
-
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+
 public class ByteArraySerializerDeserializer implements ISerializerDeserializer<byte[]> {
 
     private static final long serialVersionUID = 1L;
-
-    public final static ByteArraySerializerDeserializer INSTANCE = new ByteArraySerializerDeserializer();
+    public static ByteArraySerializerDeserializer INSTANCE = new ByteArraySerializerDeserializer();
 
     private ByteArraySerializerDeserializer() {
     }
 
+    /**
+     * Return a pure byte array which doesn't have the length encoding prefix
+     *
+     * @param in
+     *            - Stream to read instance from.
+     * @return
+     * @throws HyracksDataException
+     */
     @Override
     public byte[] deserialize(DataInput in) throws HyracksDataException {
         try {
-            int length = in.readUnsignedShort();
-            byte[] bytes = new byte[length + ByteArrayPointable.SIZE_OF_LENGTH];
-            in.readFully(bytes, ByteArrayPointable.SIZE_OF_LENGTH, length);
-            ByteArrayPointable.putLength(length, bytes, 0);
+            int contentLength = VarLenIntEncoderDecoder.decode(in);
+            byte[] bytes = new byte[contentLength];
+            in.readFully(bytes, 0, contentLength);
             return bytes;
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
     }
 
+    /**
+     * a pure content only byte array which doesn't have the encoded length at the beginning.
+     * will write the entire array into the out
+     */
     @Override
     public void serialize(byte[] instance, DataOutput out) throws HyracksDataException {
-
-        if (instance.length > ByteArrayPointable.MAX_LENGTH) {
-            throw new HyracksDataException(
-                    "encoded byte array too long: " + instance.length + " bytes");
-        }
         try {
-            int realLength = ByteArrayPointable.getFullLength(instance, 0);
-            out.write(instance, 0, realLength);
+            byte[] metaBuffer = new byte[5];
+            int metaLength = VarLenIntEncoderDecoder.encode(instance.length, metaBuffer, 0);
+            out.write(metaBuffer, 0, metaLength);
+            out.write(instance);
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
     }
 
-    public void serialize(byte[] instance, int start, int length, DataOutput out) throws HyracksDataException {
-        if (length > ByteArrayPointable.MAX_LENGTH) {
-            throw new HyracksDataException(
-                    "encoded byte array too long: " + instance.length + " bytes");
-        }
+    public void serialize(ByteArrayPointable byteArrayPtr, DataOutput out) throws HyracksDataException {
         try {
+            out.write(byteArrayPtr.getByteArray(), byteArrayPtr.getStartOffset(), byteArrayPtr.getLength());
+        } catch (IOException e) {
+            throw new HyracksDataException(e);
+        }
+    }
+
+    // A pure byte array, which doesn't have the length information encoded at the beginning
+    public void serialize(byte[] instance, int start, int length, DataOutput out) throws HyracksDataException {
+        byte[] metaBuffer = new byte[5];
+        int metaLength = VarLenIntEncoderDecoder.encode(length, metaBuffer, 0);
+        try {
+            out.write(metaBuffer, 0, metaLength);
             out.write(instance, start, length);
         } catch (IOException e) {
             throw new HyracksDataException(e);
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java
index da8085c..3507bca 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/IntArraySerializerDeserializer.java
@@ -58,4 +58,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java
index 2435672..b36ee5a 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/marshalling/UTF8StringSerializerDeserializer.java
@@ -24,19 +24,19 @@
 
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class UTF8StringSerializerDeserializer implements ISerializerDeserializer<String> {
-    public static final UTF8StringSerializerDeserializer INSTANCE = new UTF8StringSerializerDeserializer();
 
     private static final long serialVersionUID = 1L;
 
-    private UTF8StringSerializerDeserializer() {
+    public UTF8StringSerializerDeserializer() {
     }
 
     @Override
     public String deserialize(DataInput in) throws HyracksDataException {
         try {
-            return in.readUTF();
+            return UTF8StringUtil.readUTF8(in);
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
@@ -45,9 +45,9 @@
     @Override
     public void serialize(String instance, DataOutput out) throws HyracksDataException {
         try {
-            out.writeUTF(instance);
+            UTF8StringUtil.writeUTF8(instance, out);
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactory.java
index b7d302b..3d081af 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactory.java
@@ -26,23 +26,12 @@
 public class ByteArrayNormalizedKeyComputerFactory implements INormalizedKeyComputerFactory {
     public static ByteArrayNormalizedKeyComputerFactory INSTANCE = new ByteArrayNormalizedKeyComputerFactory();
 
-    @Override public INormalizedKeyComputer createNormalizedKeyComputer() {
+    @Override
+    public INormalizedKeyComputer createNormalizedKeyComputer() {
         return new INormalizedKeyComputer() {
-            @Override public int normalize(byte[] bytes, int start, int length) {
-                int normalizedKey = 0;
-                int realLength = ByteArrayPointable.getLength(bytes, start);
-                for (int i = 0; i < 3; ++i) {
-                    normalizedKey <<= 8;
-                    if (i < realLength) {
-                        normalizedKey += bytes[start + ByteArrayPointable.SIZE_OF_LENGTH + i] & 0xff;
-                    }
-                }
-                // last byte, shift 7 instead of 8 to avoid negative number
-                normalizedKey <<= 7;
-                if (3 < realLength) {
-                    normalizedKey += (bytes[start + ByteArrayPointable.SIZE_OF_LENGTH + 3] & 0xfe) >> 1;
-                }
-                return normalizedKey;
+            @Override
+            public int normalize(byte[] bytes, int start, int length) {
+                return ByteArrayPointable.normalize(bytes, start);
             }
         };
     }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/IntegerNormalizedKeyComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/IntegerNormalizedKeyComputerFactory.java
index 89a0c84..5cfef28 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/IntegerNormalizedKeyComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/IntegerNormalizedKeyComputerFactory.java
@@ -36,4 +36,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/UTF8StringNormalizedKeyComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/UTF8StringNormalizedKeyComputerFactory.java
index 941afda..589ae68 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/UTF8StringNormalizedKeyComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/normalizers/UTF8StringNormalizedKeyComputerFactory.java
@@ -20,7 +20,7 @@
 
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class UTF8StringNormalizedKeyComputerFactory implements INormalizedKeyComputerFactory {
     private static final long serialVersionUID = 1L;
@@ -30,18 +30,8 @@
         return new INormalizedKeyComputer() {
             @Override
             public int normalize(byte[] bytes, int start, int length) {
-                int len = UTF8StringPointable.getUTFLength(bytes, start);
-                int nk = 0;
-                int offset = start + 2;
-                for (int i = 0; i < 2; ++i) {
-                    nk <<= 16;
-                    if (i < len) {
-                        nk += ((int) UTF8StringPointable.charAt(bytes, offset)) & 0xffff;
-                        offset += UTF8StringPointable.charSize(bytes, offset);
-                    }
-                }
-                return nk;
+                return UTF8StringUtil.normalize(bytes, start);
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java
index c71950b..91fb2eb 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactory.java
@@ -19,34 +19,33 @@
 
 package org.apache.hyracks.dataflow.common.data.parsers;
 
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
-
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.ByteArraySerializerDeserializer;
+import org.apache.hyracks.util.bytes.Base64Parser;
 
 public class ByteArrayBase64ParserFactory implements IValueParserFactory {
 
+    private static final long serialVersionUID = 1L;
     public static final ByteArrayBase64ParserFactory INSTANCE = new ByteArrayBase64ParserFactory();
 
     private ByteArrayBase64ParserFactory() {
     }
 
-    @Override public IValueParser createValueParser() {
+    @Override
+    public IValueParser createValueParser() {
         return new IValueParser() {
-            private byte[] buffer;
-            private byte[] quadruplet = new byte[4];
+            Base64Parser parser = new Base64Parser();
+            ByteArraySerializerDeserializer serializer = ByteArraySerializerDeserializer.INSTANCE;
 
-            @Override public void parse(char[] input, int start, int length, DataOutput out)
-                    throws HyracksDataException {
-                if (length % 4 != 0) {
-                    throw new HyracksDataException(
-                            "Invalid Base64 string, the length of the string should be a multiple of 4");
-                }
-                buffer = extractPointableArrayFromBase64String(input, start, length, buffer, quadruplet);
+            @Override
+            public void parse(char[] input, int start, int length, DataOutput out) throws HyracksDataException {
+
+                parser.generatePureByteArrayFromBase64String(input, start, length);
                 try {
-                    out.write(buffer, 0, ByteArrayPointable.getFullLength(buffer, 0));
+                    serializer.serialize(parser.getByteArray(), 0, parser.getLength(), out);
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }
@@ -54,194 +53,4 @@
         };
     }
 
-    // The following base64 related implementation is copied/changed base on javax.xml.bind.DatatypeConverterImpl.java
-    private static final byte[] decodeMap = initDecodeMap();
-    private static final byte PADDING = 127;
-
-    private static byte[] initDecodeMap() {
-        byte[] map = new byte[128];
-        Arrays.fill(map, (byte) -1);
-
-        int i;
-        for (i = 'A'; i <= 'Z'; i++) {
-            map[i] = (byte) (i - 'A');
-        }
-        for (i = 'a'; i <= 'z'; i++) {
-            map[i] = (byte) (i - 'a' + 26);
-        }
-        for (i = '0'; i <= '9'; i++) {
-            map[i] = (byte) (i - '0' + 52);
-        }
-        map['+'] = 62;
-        map['/'] = 63;
-        map['='] = PADDING;
-
-        return map;
-    }
-
-    /**
-     * computes the length of binary data speculatively.
-     * Our requirement is to create byte[] of the exact length to store the binary data.
-     * If we do this in a straight-forward way, it takes two passes over the data.
-     * Experiments show that this is a non-trivial overhead (35% or so is spent on
-     * the first pass in calculating the length.)
-     * So the approach here is that we compute the length speculatively, without looking
-     * at the whole contents. The obtained speculative value is never less than the
-     * actual length of the binary data, but it may be bigger. So if the speculation
-     * goes wrong, we'll pay the cost of reallocation and buffer copying.
-     * If the base64 text is tightly packed with no indentation nor illegal char
-     * (like what most web services produce), then the speculation of this method
-     * will be correct, so we get the performance benefit.
-     */
-    private static int guessLength(char[] chars, int start, int length) {
-
-        // compute the tail '=' chars
-        int j = length - 1;
-        for (; j >= 0; j--) {
-            byte code = decodeMap[chars[start + j]];
-            if (code == PADDING) {
-                continue;
-            }
-            if (code == -1) // most likely this base64 text is indented. go with the upper bound
-            {
-                return length / 4 * 3;
-            }
-            break;
-        }
-
-        j++;    // text.charAt(j) is now at some base64 char, so +1 to make it the size
-        int padSize = length - j;
-        if (padSize > 2) // something is wrong with base64. be safe and go with the upper bound
-        {
-            return length / 4 * 3;
-        }
-
-        // so far this base64 looks like it's unindented tightly packed base64.
-        // take a chance and create an array with the expected size
-        return length / 4 * 3 - padSize;
-    }
-
-    private static int guessLength(byte[] chars, int start, int length) {
-
-        // compute the tail '=' chars
-        int j = length - 1;
-        for (; j >= 0; j--) {
-            byte code = decodeMap[chars[start + j]];
-            if (code == PADDING) {
-                continue;
-            }
-            if (code == -1) // most likely this base64 text is indented. go with the upper bound
-            {
-                return length / 4 * 3;
-            }
-            break;
-        }
-
-        j++;    // text.charAt(j) is now at some base64 char, so +1 to make it the size
-        int padSize = length - j;
-        if (padSize > 2) // something is wrong with base64. be safe and go with the upper bound
-        {
-            return length / 4 * 3;
-        }
-
-        // so far this base64 looks like it's unindented tightly packed base64.
-        // take a chance and create an array with the expected size
-        return length / 4 * 3 - padSize;
-    }
-
-    public static byte[] extractPointableArrayFromBase64String(byte[] input, int start, int length,
-            byte[] bufferNeedToReset, byte[] quadruplet)
-            throws HyracksDataException {
-        int contentOffset = ByteArrayPointable.SIZE_OF_LENGTH;
-        final int buflen = guessLength(input, start, length) + contentOffset;
-        bufferNeedToReset = ByteArrayHexParserFactory.ensureCapacity(buflen, bufferNeedToReset);
-        int byteArrayLength = parseBase64String(input, start, length, bufferNeedToReset, contentOffset,
-                quadruplet);
-        if (byteArrayLength > ByteArrayPointable.MAX_LENGTH) {
-            throw new HyracksDataException("The decoded byte array is too long.");
-        }
-        ByteArrayPointable.putLength(byteArrayLength, bufferNeedToReset, 0);
-        return bufferNeedToReset;
-    }
-
-    public static byte[] extractPointableArrayFromBase64String(char[] input, int start, int length,
-            byte[] bufferNeedToReset, byte[] quadruplet)
-            throws HyracksDataException {
-        int contentOffset = ByteArrayPointable.SIZE_OF_LENGTH;
-        final int buflen = guessLength(input, start, length) + contentOffset;
-        bufferNeedToReset = ByteArrayHexParserFactory.ensureCapacity(buflen, bufferNeedToReset);
-        int byteArrayLength = parseBase64String(input, start, length, bufferNeedToReset, contentOffset,
-                quadruplet);
-        if (byteArrayLength > ByteArrayPointable.MAX_LENGTH) {
-            throw new HyracksDataException("The decoded byte array is too long.");
-        }
-        ByteArrayPointable.putLength(byteArrayLength, bufferNeedToReset, 0);
-        return bufferNeedToReset;
-    }
-
-    static int parseBase64String(char[] input, int start, int length, byte[] out, int offset,
-            byte[] quadruplet) throws HyracksDataException {
-        int outLength = 0;
-
-        int i;
-        int q = 0;
-
-        // convert each quadruplet to three bytes.
-        for (i = 0; i < length; i++) {
-            char ch = input[start + i];
-            byte v = decodeMap[ch];
-
-            if (v == -1) {
-                throw new HyracksDataException("Invalid Base64 character");
-            }
-            quadruplet[q++] = v;
-
-            if (q == 4) {
-                // quadruplet is now filled.
-                out[offset + outLength++] = (byte) ((quadruplet[0] << 2) | (quadruplet[1] >> 4));
-                if (quadruplet[2] != PADDING) {
-                    out[offset + outLength++] = (byte) ((quadruplet[1] << 4) | (quadruplet[2] >> 2));
-                }
-                if (quadruplet[3] != PADDING) {
-                    out[offset + outLength++] = (byte) ((quadruplet[2] << 6) | (quadruplet[3]));
-                }
-                q = 0;
-            }
-        }
-
-        return outLength;
-    }
-
-    static int parseBase64String(byte[] input, int start, int length, byte[] out, int offset,
-            byte[] quadruplet) throws HyracksDataException {
-        int outLength = 0;
-
-        int i;
-        int q = 0;
-
-        // convert each quadruplet to three bytes.
-        for (i = 0; i < length; i++) {
-            char ch = (char)input[start + i];
-            byte v = decodeMap[ch];
-
-            if (v == -1) {
-                throw new HyracksDataException("Invalid Base64 character");
-            }
-            quadruplet[q++] = v;
-
-            if (q == 4) {
-                // quadruplet is now filled.
-                out[offset + outLength++] = (byte) ((quadruplet[0] << 2) | (quadruplet[1] >> 4));
-                if (quadruplet[2] != PADDING) {
-                    out[offset + outLength++] = (byte) ((quadruplet[1] << 4) | (quadruplet[2] >> 2));
-                }
-                if (quadruplet[3] != PADDING) {
-                    out[offset + outLength++] = (byte) ((quadruplet[2] << 6) | (quadruplet[3]));
-                }
-                q = 0;
-            }
-        }
-
-        return outLength;
-    }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java
index ec249f3..289dc6d 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactory.java
@@ -19,28 +19,31 @@
 
 package org.apache.hyracks.dataflow.common.data.parsers;
 
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
-
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.Arrays;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.marshalling.ByteArraySerializerDeserializer;
+import org.apache.hyracks.util.bytes.HexParser;
 
 public class ByteArrayHexParserFactory implements IValueParserFactory {
+    private static final long serialVersionUID = 1L;
     public static ByteArrayHexParserFactory INSTANCE = new ByteArrayHexParserFactory();
 
     private ByteArrayHexParserFactory() {
     }
 
-    @Override public IValueParser createValueParser() {
+    @Override
+    public IValueParser createValueParser() {
         return new IValueParser() {
-            private byte[] buffer = new byte[] { };
+            HexParser parser = new HexParser();
+            ByteArraySerializerDeserializer serializer = ByteArraySerializerDeserializer.INSTANCE;
 
-            @Override public void parse(char[] input, int start, int length, DataOutput out)
-                    throws HyracksDataException {
+            @Override
+            public void parse(char[] input, int start, int length, DataOutput out) throws HyracksDataException {
                 try {
-                    buffer = extractPointableArrayFromHexString(input, start, length, buffer);
-                    out.write(buffer, 0, ByteArrayPointable.getFullLength(buffer, 0));
+                    parser.generateByteArrayFromHexString(input, start, length);
+                    serializer.serialize(parser.getByteArray(), 0, parser.getLength(), out);
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }
@@ -48,85 +51,4 @@
         };
     }
 
-    public static boolean isValidHexChar(char c) {
-        if (c >= '0' && c <= '9'
-                || c >= 'a' && c <= 'f'
-                || c >= 'A' && c <= 'F') {
-            return true;
-        }
-        return false;
-    }
-
-    public static byte[] extractPointableArrayFromHexString(char[] input, int start, int length,
-            byte[] bufferNeedToReset) throws HyracksDataException {
-        if (length % 2 != 0) {
-            throw new HyracksDataException(
-                    "Invalid hex string for binary type: the string length should be a muliple of 2.");
-        }
-        int byteLength = length / 2;
-        bufferNeedToReset = ensureCapacity(byteLength + ByteArrayPointable.SIZE_OF_LENGTH, bufferNeedToReset);
-        extractByteArrayFromHexString(input, start, length, bufferNeedToReset,
-                ByteArrayPointable.SIZE_OF_LENGTH);
-        if (byteLength > ByteArrayPointable.MAX_LENGTH) {
-            throw new HyracksDataException("The decoded byte array is too long.");
-        }
-        ByteArrayPointable.putLength(byteLength, bufferNeedToReset, 0);
-        return bufferNeedToReset;
-    }
-
-    public static byte[] extractPointableArrayFromHexString(byte[] input, int start, int length,
-            byte[] bufferNeedToReset) throws HyracksDataException {
-        if (length % 2 != 0) {
-            throw new HyracksDataException(
-                    "Invalid hex string for binary type: the string length should be a muliple of 2.");
-        }
-        int byteLength = length / 2;
-        bufferNeedToReset = ensureCapacity(byteLength + ByteArrayPointable.SIZE_OF_LENGTH, bufferNeedToReset);
-        extractByteArrayFromHexString(input, start, length, bufferNeedToReset,
-                ByteArrayPointable.SIZE_OF_LENGTH);
-        if (byteLength > ByteArrayPointable.MAX_LENGTH) {
-            throw new HyracksDataException("The decoded byte array is too long.");
-        }
-        ByteArrayPointable.putLength(byteLength, bufferNeedToReset, 0);
-        return bufferNeedToReset;
-    }
-
-    static byte[] ensureCapacity(int capacity, byte[] original) {
-        if (original == null) {
-            return new byte[capacity];
-        }
-        if (original.length < capacity) {
-            return Arrays.copyOf(original, capacity);
-        }
-        return original;
-    }
-
-    private static int getValueFromValidHexChar(char c) throws HyracksDataException {
-        if (!isValidHexChar(c)) {
-            throw new HyracksDataException("Invalid hex character : " + c);
-        }
-        if (c >= '0' && c <= '9') {
-            return c - '0';
-        }
-        if (c >= 'a' && c <= 'f') {
-            return 10 + c - 'a';
-        }
-        return 10 + c - 'A';
-    }
-
-    private static void extractByteArrayFromHexString(char[] input, int start, int length, byte[] output,
-            int offset) throws HyracksDataException {
-        for (int i = 0; i < length; i += 2) {
-            output[offset + i / 2] = (byte) ((getValueFromValidHexChar(input[start + i]) << 4) +
-                    getValueFromValidHexChar(input[start + i + 1]));
-        }
-    }
-
-    private static void extractByteArrayFromHexString(byte[] input, int start, int length, byte[] output,
-            int offset) throws HyracksDataException {
-        for (int i = 0; i < length; i += 2) {
-            output[offset + i / 2] = (byte) ((getValueFromValidHexChar((char)input[start + i]) << 4) +
-                    getValueFromValidHexChar((char)input[start + i + 1]));
-        }
-    }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java
index 5ef8073..4df70f4 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/DoubleParserFactory.java
@@ -47,4 +47,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java
index c513a37..08d5722 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/FloatParserFactory.java
@@ -47,4 +47,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParser.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParser.java
index dbb152f..0fcfa90 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParser.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParser.java
@@ -24,4 +24,4 @@
 
 public interface IValueParser {
     void parse(char[] buffer, int start, int length, DataOutput out) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParserFactory.java
index c6aa860..0e4d139 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IValueParserFactory.java
@@ -22,4 +22,4 @@
 
 public interface IValueParserFactory extends Serializable {
     public IValueParser createValueParser();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java
index 841a7e5..cfbeb74 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/IntegerParserFactory.java
@@ -126,4 +126,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java
index 201f3dc..279cd69 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/LongParserFactory.java
@@ -127,4 +127,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java
index 7294e2d..a71da4c 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/parsers/UTF8StringParserFactory.java
@@ -22,6 +22,7 @@
 import java.io.IOException;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.util.string.UTF8StringWriter;
 
 public class UTF8StringParserFactory implements IValueParserFactory {
     public static final IValueParserFactory INSTANCE = new UTF8StringParserFactory();
@@ -34,57 +35,16 @@
     @Override
     public IValueParser createValueParser() {
         return new IValueParser() {
-            private byte[] utf8;
+            private UTF8StringWriter writer = new UTF8StringWriter();
 
             @Override
             public void parse(char[] buffer, int start, int length, DataOutput out) throws HyracksDataException {
-                int utflen = 0;
-                for (int i = 0; i < length; i++) {
-                    char ch = buffer[i + start];
-                    if ((ch >= 0x0001) && (ch <= 0x007F)) {
-                        utflen++;
-                    } else if (ch > 0x07ff) {
-                        utflen += 3;
-                    } else {
-                        utflen += 2;
-                    }
-                }
-
-                if (utf8 == null || utf8.length < utflen + 2) {
-                    utf8 = new byte[utflen + 2];
-                }
-
-                int count = 0;
-                utf8[count++] = (byte) ((utflen >>> 8) & 0xff);
-                utf8[count++] = (byte) ((utflen >>> 0) & 0xff);
-
-                int i = 0;
-                for (i = 0; i < length; i++) {
-                    char ch = buffer[i + start];
-                    if (!((ch >= 0x0001) && (ch <= 0x007F)))
-                        break;
-                    utf8[count++] = (byte) ch;
-                }
-
-                for (; i < length; i++) {
-                    char ch = buffer[i + start];
-                    if ((ch >= 0x0001) && (ch <= 0x007F)) {
-                        utf8[count++] = (byte) ch;
-                    } else if (ch > 0x07FF) {
-                        utf8[count++] = (byte) (0xE0 | ((ch >> 12) & 0x0F));
-                        utf8[count++] = (byte) (0x80 | ((ch >> 6) & 0x3F));
-                        utf8[count++] = (byte) (0x80 | ((ch >> 0) & 0x3F));
-                    } else {
-                        utf8[count++] = (byte) (0xC0 | ((ch >> 6) & 0x1F));
-                        utf8[count++] = (byte) (0x80 | ((ch >> 0) & 0x3F));
-                    }
-                }
                 try {
-                    out.write(utf8, 0, utflen + 2);
+                    writer.writeUTF8(buffer, start, length, out);
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java
index 14a7286..ee5a041 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/FieldHashPartitionComputerFactory.java
@@ -66,4 +66,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RandomPartitionComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RandomPartitionComputerFactory.java
index 1cda8a2..e034af0 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RandomPartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RandomPartitionComputerFactory.java
@@ -25,29 +25,21 @@
 import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
-public class RandomPartitionComputerFactory implements
-		ITuplePartitionComputerFactory {
+public class RandomPartitionComputerFactory implements ITuplePartitionComputerFactory {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	private final int domainCardinality;
+    @Override
+    public ITuplePartitionComputer createPartitioner() {
+        return new ITuplePartitionComputer() {
 
-	public RandomPartitionComputerFactory(int domainCardinality) {
-		this.domainCardinality = domainCardinality;
-	}
+            private final Random random = new Random();
 
-	@Override
-	public ITuplePartitionComputer createPartitioner() {
-		return new ITuplePartitionComputer() {
-
-			private final Random random = new Random();
-
-			@Override
-			public int partition(IFrameTupleAccessor accessor, int tIndex,
-					int nParts) throws HyracksDataException {
-				return random.nextInt(domainCardinality);
-			}
-		};
-	}
+            @Override
+            public int partition(IFrameTupleAccessor accessor, int tIndex, int nParts) throws HyracksDataException {
+                return random.nextInt(nParts);
+            }
+        };
+    }
 
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RepartitionComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RepartitionComputerFactory.java
index 14c5fa9..9cb11fa 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RepartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/RepartitionComputerFactory.java
@@ -45,4 +45,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java
index 06f92bb..f4da9bf 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java
@@ -47,7 +47,7 @@
         return new ITuplePartitionComputer() {
             @Override
             /**
-             * Determine the range partition. 
+             * Determine the range partition.
              */
             public int partition(IFrameTupleAccessor accessor, int tIndex, int nParts) throws HyracksDataException {
                 if (nParts == 1) {
@@ -98,4 +98,4 @@
 
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/RangeMap.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/RangeMap.java
index 5e6c5eb..98acbc0 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/RangeMap.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/RangeMap.java
@@ -95,4 +95,4 @@
         return length;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/util/StringUtils.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/util/StringUtils.java
deleted file mode 100644
index 3b05824..0000000
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/util/StringUtils.java
+++ /dev/null
@@ -1,47 +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.hyracks.dataflow.common.data.util;
-
-import java.io.DataOutput;
-import java.io.IOException;
-
-public class StringUtils {
-    public static int writeCharAsModifiedUTF8(char c, DataOutput dos) throws IOException {
-        if (c >= 0x0000 && c <= 0x007F) {
-            dos.writeByte(c);
-            return 1;
-        } else if (c <= 0x07FF) {
-            dos.writeByte((byte) (0xC0 | ((c >> 6) & 0x3F)));
-            dos.writeByte((byte) (0x80 | (c & 0x3F)));
-            return 2;
-        } else {
-            dos.writeByte((byte) (0xE0 | ((c >> 12) & 0x0F)));
-            dos.writeByte((byte) (0x80 | ((c >> 6) & 0x3F)));
-            dos.writeByte((byte) (0x80 | (c & 0x3F)));
-            return 3;
-        }
-    }
-
-    public static void writeUTF8Len(int len, DataOutput dos) throws IOException {
-        dos.write((len >>> 8) & 0xFF);
-        dos.write((len >>> 0) & 0xFF);
-    }
-
-
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/GeneratedRunFileReader.java
similarity index 62%
copy from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java
copy to hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/GeneratedRunFileReader.java
index 1dfccfd..0967448 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/GeneratedRunFileReader.java
@@ -17,20 +17,25 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort;
+package org.apache.hyracks.dataflow.common.io;
 
-import org.apache.hyracks.api.comm.IFrameReader;
+import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.api.io.IIOManager;
 
-public class RunAndMaxFrameSizePair {
-    public IFrameReader run;
-    public int maxFrameSize;
+public class GeneratedRunFileReader extends RunFileReader {
+    private int maxFrameSize;
 
-    public RunAndMaxFrameSizePair(IFrameReader run, int maxFrameSize) {
-        this.run = run;
+    GeneratedRunFileReader(FileReference file, IIOManager ioManager, long size, boolean deleteAfterRead,
+            int maxFrameSize) {
+        super(file, ioManager, size, deleteAfterRead);
         this.maxFrameSize = maxFrameSize;
     }
 
-    void updateSize(int newMaxSize){
+    public void updateSize(int newMaxSize) {
         this.maxFrameSize = newMaxSize;
     }
+
+    public int getMaxFrameSize() {
+        return maxFrameSize;
+    }
 }
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java
new file mode 100644
index 0000000..7100c11
--- /dev/null
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/MessagingFrameTupleAppender.java
@@ -0,0 +1,75 @@
+/*
+ * 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.hyracks.dataflow.common.io;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.comm.FrameHelper;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
+
+public class MessagingFrameTupleAppender extends FrameTupleAppender {
+
+    public static final int MAX_MESSAGE_SIZE = 100;
+    private final IHyracksTaskContext ctx;
+
+    public MessagingFrameTupleAppender(IHyracksTaskContext ctx) {
+        this.ctx = ctx;
+    }
+
+    @Override
+    protected boolean canHoldNewTuple(int fieldCount, int dataLength) throws HyracksDataException {
+        if (hasEnoughSpace(fieldCount, dataLength + MAX_MESSAGE_SIZE)) {
+            return true;
+        }
+        if (tupleCount == 0) {
+            frame.ensureFrameSize(FrameHelper.calcAlignedFrameSizeToStore(fieldCount, dataLength + MAX_MESSAGE_SIZE,
+                    frame.getMinSize()));
+            reset(frame.getBuffer(), true);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void write(IFrameWriter outWriter, boolean clearFrame) throws HyracksDataException {
+        if (tupleCount > 0) {
+            appendMessage();
+            getBuffer().clear();
+            outWriter.nextFrame(getBuffer());
+            if (clearFrame) {
+                frame.reset();
+                reset(getBuffer(), true);
+            }
+        }
+    }
+
+    public void appendMessage() {
+        ByteBuffer message = (ByteBuffer) ctx.getSharedObject();
+        System.arraycopy(message.array(), message.position(), array, tupleDataEndOffset, message.limit());
+        tupleDataEndOffset += message.limit();
+        IntSerDeUtils.putInt(getBuffer().array(),
+                FrameHelper.getTupleCountOffset(frame.getFrameSize()) - 4 * (tupleCount + 1), tupleDataEndOffset);
+        ++tupleCount;
+        IntSerDeUtils.putInt(getBuffer().array(), FrameHelper.getTupleCountOffset(frame.getFrameSize()), tupleCount);
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileReader.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileReader.java
index f5d4444..fb160f0 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileReader.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileReader.java
@@ -18,6 +18,7 @@
  */
 package org.apache.hyracks.dataflow.common.io;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.hyracks.api.comm.FrameHelper;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameReader;
@@ -28,16 +29,17 @@
 
 public class RunFileReader implements IFrameReader {
     private final FileReference file;
+    private IFileHandle handle;
     private final IIOManager ioManager;
     private final long size;
-
-    private IFileHandle handle;
     private long readPtr;
+    private boolean deleteAfterClose;
 
-    public RunFileReader(FileReference file, IIOManager ioManager, long size) {
+    public RunFileReader(FileReference file, IIOManager ioManager, long size, boolean deleteAfterRead) {
         this.file = file;
         this.ioManager = ioManager;
         this.size = size;
+        this.deleteAfterClose = deleteAfterRead;
     }
 
     @Override
@@ -52,6 +54,7 @@
             return false;
         }
         frame.reset();
+
         int readLength = ioManager.syncRead(handle, readPtr, frame.getBuffer());
         if (readLength <= 0) {
             throw new HyracksDataException("Premature end of file");
@@ -77,9 +80,12 @@
     @Override
     public void close() throws HyracksDataException {
         ioManager.close(handle);
+        if (deleteAfterClose) {
+            FileUtils.deleteQuietly(file.getFile());
+        }
     }
 
     public long getFileSize() {
         return size;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileWriter.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileWriter.java
index 755e336..8031422 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileWriter.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/io/RunFileWriter.java
@@ -33,6 +33,7 @@
 
     private IFileHandle handle;
     private long size;
+    private int maxOutputFrameSize;
 
     public RunFileWriter(FileReference file, IIOManager ioManager) {
         this.file = file;
@@ -45,6 +46,7 @@
                 IIOManager.FileSyncMode.METADATA_ASYNC_DATA_ASYNC);
         size = 0;
         failed = false;
+        maxOutputFrameSize = 0;
     }
 
     @Override
@@ -55,7 +57,9 @@
 
     @Override
     public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-        size += ioManager.syncWrite(handle, size, buffer);
+        int writen = ioManager.syncWrite(handle, size, buffer);
+        maxOutputFrameSize = Math.max(writen, maxOutputFrameSize);
+        size += writen;
     }
 
     @Override
@@ -73,10 +77,22 @@
         return size;
     }
 
-    public RunFileReader createReader() throws HyracksDataException {
+    public GeneratedRunFileReader createReader() throws HyracksDataException {
         if (failed) {
             throw new HyracksDataException("createReader() called on a failed RunFileWriter");
         }
-        return new RunFileReader(file, ioManager, size);
+        return new GeneratedRunFileReader(file, ioManager, size, false, maxOutputFrameSize);
     }
-}
\ No newline at end of file
+
+    public GeneratedRunFileReader createDeleteOnCloseReader() throws HyracksDataException {
+        if (failed) {
+            throw new HyracksDataException("createReader() called on a failed RunFileWriter");
+        }
+        return new GeneratedRunFileReader(file, ioManager, size, true, maxOutputFrameSize);
+    }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        // this is a kind of a sink operator and hence, flush() is a no op
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/IntSerDeUtils.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/IntSerDeUtils.java
index b808ac1..d2100bb 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/IntSerDeUtils.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/IntSerDeUtils.java
@@ -26,7 +26,14 @@
                 + ((bytes[offset + 3] & 0xff) << 0);
     }
 
+    /**
+     * put integer value into the array bytes at the offset offset
+     * @param bytes byte array to put data in
+     * @param offset offset from the beginning of the array to write the {@code value} in
+     * @param value value to write to {@code bytes[offset]}
+     */
     public static void putInt(byte[] bytes, int offset, int value) {
+
         bytes[offset++] = (byte) (value >> 24);
         bytes[offset++] = (byte) (value >> 16);
         bytes[offset++] = (byte) (value >> 8);
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/ReflectionUtils.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/ReflectionUtils.java
index 9668cf0..13b41b0 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/ReflectionUtils.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/ReflectionUtils.java
@@ -30,4 +30,4 @@
         }
         return instance;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
index c5b8a9f..fcc6274 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
@@ -130,7 +130,7 @@
         tupleCopy.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
         return tupleCopy;
     }
-    
+
     public static void copyTuple(ArrayTupleBuilder tupleBuilder, ITupleReference tuple, int numFields) throws HyracksDataException {
         tupleBuilder.reset();
         for (int i = 0; i < numFields; i++) {
diff --git a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/comm/io/largeobject/FrameFixedFieldTupleAppenderTest.java b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/comm/io/largeobject/FrameFixedFieldTupleAppenderTest.java
index ad4461d..766c77a 100644
--- a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/comm/io/largeobject/FrameFixedFieldTupleAppenderTest.java
+++ b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/comm/io/largeobject/FrameFixedFieldTupleAppenderTest.java
@@ -26,9 +26,6 @@
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
-import org.junit.Before;
-import org.junit.Test;
-
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.comm.IFrameTupleAppender;
@@ -44,6 +41,8 @@
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.junit.Before;
+import org.junit.Test;
 
 public class FrameFixedFieldTupleAppenderTest {
 
@@ -51,22 +50,19 @@
     static final int TEST_FRAME_SIZE = 256;
 
     FrameFixedFieldAppender appender;
-    static ISerializerDeserializer[] fields = new ISerializerDeserializer[] {
-            IntegerSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE,
-            IntegerSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE,
-    };
+    static ISerializerDeserializer[] fields = new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(), };
     static RecordDescriptor recordDescriptor = new RecordDescriptor(fields);
     static ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(recordDescriptor.getFieldCount());
 
-    class SequetialDataVerifier implements IFrameWriter {
+    class SequentialDataVerifier implements IFrameWriter {
 
         private final IFrameTupleAccessor accessor;
         private IFrameTupleAccessor innerAccessor;
         private int tid;
 
-        public SequetialDataVerifier(IFrameTupleAccessor accessor) {
+        public SequentialDataVerifier(IFrameTupleAccessor accessor) {
             this.accessor = accessor;
             this.innerAccessor = new FrameTupleAccessor(recordDescriptor);
         }
@@ -87,7 +83,8 @@
         private void validate(IFrameTupleAccessor innerAccessor, int i) {
             assertTrue(tid < accessor.getTupleCount());
             assertEquals(accessor.getTupleLength(tid), innerAccessor.getTupleLength(i));
-            assertArrayEquals(Arrays.copyOfRange(accessor.getBuffer().array(), accessor.getTupleStartOffset(tid),
+            assertArrayEquals(
+                    Arrays.copyOfRange(accessor.getBuffer().array(), accessor.getTupleStartOffset(tid),
                             accessor.getTupleEndOffset(tid)),
                     Arrays.copyOfRange(innerAccessor.getBuffer().array(), innerAccessor.getTupleStartOffset(i),
                             innerAccessor.getTupleEndOffset(i)));
@@ -103,6 +100,10 @@
         public void close() throws HyracksDataException {
             assertEquals(accessor.getTupleCount(), tid);
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+        }
     }
 
     @Before
@@ -119,13 +120,13 @@
         for (int tid = 0; tid < accessor.getTupleCount(); tid++) {
             for (int fid = 0; fid < fields.length; fid++) {
                 if (!appender.appendField(accessor, tid, fid)) {
-                    appender.flush(writer, true);
+                    appender.write(writer, true);
                     if (!appender.appendField(accessor, tid, fid)) {
                     }
                 }
             }
         }
-        appender.flush(writer, true);
+        appender.write(writer, true);
         writer.close();
     }
 
@@ -143,7 +144,7 @@
     }
 
     private IFrameWriter prepareValidator(IFrameTupleAccessor accessor) throws HyracksDataException {
-        return new SequetialDataVerifier(accessor);
+        return new SequentialDataVerifier(accessor);
     }
 
     enum DATA_TYPE {
@@ -154,8 +155,8 @@
 
     private IFrameTupleAccessor prepareData(DATA_TYPE type) throws HyracksDataException {
         IFrameTupleAccessor accessor = new FrameTupleAccessor(recordDescriptor);
-        IFrameTupleAppender appender = new FrameTupleAppender(
-                new VSizeFrame(new FrameManager(INPUT_BUFFER_SIZE)), true);
+        IFrameTupleAppender appender = new FrameTupleAppender(new VSizeFrame(new FrameManager(INPUT_BUFFER_SIZE)),
+                true);
         int i = 0;
         do {
             switch (type) {
@@ -169,8 +170,8 @@
                     makeABigObjectTuple(tupleBuilder, i++);
                     break;
             }
-        } while (appender
-                .append(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0, tupleBuilder.getSize()));
+        } while (appender.append(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
+                tupleBuilder.getSize()));
         accessor.reset(appender.getBuffer());
         return accessor;
     }
@@ -216,4 +217,4 @@
         IFrameTupleAccessor accessor = prepareData(DATA_TYPE.ONE_RECORD_LONG);
         testProcess(accessor);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializerTest.java b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializerTest.java
index 8534388..713ba46 100644
--- a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializerTest.java
+++ b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/marshalling/ByteArraySerializerDeserializerTest.java
@@ -19,58 +19,44 @@
 
 package org.apache.hyracks.dataflow.common.data.marshalling;
 
-import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
-import org.junit.Test;
+import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.util.Arrays;
-import java.util.Random;
 
-import static org.junit.Assert.assertTrue;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
+import org.apache.hyracks.util.string.UTF8StringSample;
+import org.junit.Test;
 
 public class ByteArraySerializerDeserializerTest {
-    Random random = new Random();
 
-    public static byte[] generateRandomBytes(int maxSize, Random random) {
-        int size = random.nextInt(maxSize);
-        byte[] bytes = new byte[size + ByteArrayPointable.SIZE_OF_LENGTH];
-        random.nextBytes(bytes);
-        ByteArrayPointable.putLength(size, bytes, 0);
-        return bytes;
-    }
+    ByteArrayPointable bytePtr = new ByteArrayPointable();
+    ByteArraySerializerDeserializer serder = ByteArraySerializerDeserializer.INSTANCE;
 
     @Test
     public void testSerializeDeserializeRandomBytes() throws Exception {
-        for (int i = 0; i < 10; ++i) {
-            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-            byte[] randomBytes = generateRandomBytes(ByteArrayPointable.MAX_LENGTH + 1, random);
+        testOneByteArray(UTF8StringSample.EMPTY_STRING.getBytes());
+        testOneByteArray(UTF8StringSample.STRING_UTF8_MIX.getBytes());
+        testOneByteArray(UTF8StringSample.STRING_LEN_128.getBytes());
+        testOneByteArray(UTF8StringSample.STRING_LEN_MEDIUM.getBytes());
+        testOneByteArray(UTF8StringSample.STRING_LEN_LARGE.getBytes());
+    }
 
-            ByteArraySerializerDeserializer.INSTANCE.serialize(randomBytes, new DataOutputStream(outputStream));
-            byte[] result = outputStream.toByteArray();
-            assertTrue(Arrays.equals(randomBytes, result));
+    void testOneByteArray(byte[] testBytes) throws HyracksDataException {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
-            ByteArrayInputStream inputStream = new ByteArrayInputStream(result);
-            assertTrue(Arrays.equals(randomBytes,
-                    ByteArraySerializerDeserializer.INSTANCE.deserialize(new DataInputStream(inputStream))));
-        }
+        serder.serialize(testBytes, new DataOutputStream(outputStream));
+
+        bytePtr.set(outputStream.toByteArray(), 0, outputStream.size());
+        assertTrue(Arrays.equals(testBytes, ByteArrayPointable.copyContent(bytePtr)));
+
+        ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+        assertTrue(Arrays.equals(testBytes, serder.deserialize(new DataInputStream(inputStream))));
 
     }
 
-    @Test
-    public void testPutGetLength() throws Exception {
-        final int size = 5;
-        byte[] newBytes = new byte[size];
-        for (int i = 0; i < 10; ++i) {
-            int length = random.nextInt(ByteArrayPointable.MAX_LENGTH +1);
-            for (int j = 0; j < size - 1; ++j) {
-                ByteArrayPointable.putLength(length, newBytes, j);
-                int result = ByteArrayPointable.getLength(newBytes, j);
-                assertTrue(result == length);
-            }
-        }
-    }
-
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactoryTest.java b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactoryTest.java
index 1645631..a362e60 100644
--- a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactoryTest.java
+++ b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/normalizers/ByteArrayNormalizedKeyComputerFactoryTest.java
@@ -19,14 +19,13 @@
 
 package org.apache.hyracks.dataflow.common.data.normalizers;
 
-import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
-import org.apache.hyracks.dataflow.common.data.marshalling.ByteArraySerializerDeserializerTest;
-import org.junit.Test;
+import static junit.framework.Assert.assertTrue;
 
 import java.util.Random;
 
-import static junit.framework.Assert.assertTrue;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
+import org.junit.Test;
 
 public class ByteArrayNormalizedKeyComputerFactoryTest {
 
@@ -34,33 +33,21 @@
 
     INormalizedKeyComputer computer = ByteArrayNormalizedKeyComputerFactory.INSTANCE.createNormalizedKeyComputer();
 
-    public static ByteArrayPointable generateRandomByteArrayPointable(int maxSize, Random random) {
-        byte[] bytes = ByteArraySerializerDeserializerTest
-                .generateRandomBytes(maxSize, random);
-        ByteArrayPointable pointable = new ByteArrayPointable();
-        pointable.set(bytes, 0, bytes.length);
-        return pointable;
-    }
-
     @Test
     public void testRandomNormalizedKey() {
         for (int i = 0; i < 10; ++i) {
-            ByteArrayPointable pointable1 = generateRandomByteArrayPointable(ByteArrayPointable.MAX_LENGTH + 1,
-                    random);
-
-            ByteArrayPointable pointable2 = generateRandomByteArrayPointable(ByteArrayPointable.MAX_LENGTH + 1,
-                    random);
+            ByteArrayPointable pointable1 = generateRandomByteArrayPointableWithFixLength(
+                    Math.abs(random.nextInt((i + 1) * 10)), random);
+            ByteArrayPointable pointable2 = generateRandomByteArrayPointableWithFixLength(
+                    Math.abs(random.nextInt((i + 1) * 10)), random);
             assertNormalizeValue(pointable1, pointable2, computer);
         }
     }
 
     public static ByteArrayPointable generateRandomByteArrayPointableWithFixLength(int length, Random random) {
-        byte[] bytes = new byte[length + ByteArrayPointable.SIZE_OF_LENGTH];
+        byte[] bytes = new byte[length];
         random.nextBytes(bytes);
-        ByteArrayPointable pointable = new ByteArrayPointable();
-        ByteArrayPointable.putLength(length, bytes, 0);
-        pointable.set(bytes, 0, bytes.length);
-        return pointable;
+        return ByteArrayPointable.generatePointableFromPureBytes(bytes);
     }
 
     public static void assertNormalizeValue(ByteArrayPointable pointable1, ByteArrayPointable pointable2,
@@ -82,12 +69,13 @@
             assertNormalizeValue(pointable1, pointable2, computer);
         }
 
-        byte[] bytes1 = new byte[] { 0, 4, 0, 25, 34, 42 };
-        byte[] bytes2 = new byte[] { 0, 4, (byte) 130, 25, 34, 42 };
+        ByteArrayPointable ptr1 = ByteArrayPointable.generatePointableFromPureBytes(new byte[] { 0, 25, 34, 42 });
+        ByteArrayPointable ptr2 = ByteArrayPointable.generatePointableFromPureBytes(
+                new byte[] { (byte) 130, 25, 34, 42 });
 
-        int n1 = computer.normalize(bytes1, 0, bytes1.length);
-        int n2 = computer.normalize(bytes2, 0, bytes2.length);
+        int n1 = computer.normalize(ptr1.getByteArray(), ptr1.getStartOffset(), ptr1.getLength());
+        int n2 = computer.normalize(ptr2.getByteArray(), ptr2.getStartOffset(), ptr2.getLength());
         assertTrue(n1 < n2);
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactoryTest.java b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactoryTest.java
index fe8b03b..29a6d6d 100644
--- a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactoryTest.java
+++ b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayBase64ParserFactoryTest.java
@@ -19,32 +19,25 @@
 
 package org.apache.hyracks.dataflow.common.data.parsers;
 
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
-import junit.framework.TestCase;
-import org.junit.Test;
+import static org.apache.hyracks.data.std.primitive.ByteArrayPointable.copyContent;
 
-import javax.xml.bind.DatatypeConverter;
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
 import java.util.Arrays;
 
-import static org.apache.hyracks.dataflow.common.data.parsers.ByteArrayHexParserFactoryTest.subArray;
+import javax.xml.bind.DatatypeConverter;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
+import org.junit.Test;
+
+import junit.framework.TestCase;
 
 public class ByteArrayBase64ParserFactoryTest extends TestCase {
 
     @Test
     public void testParseBase64String() throws HyracksDataException {
-        IValueParser parser = ByteArrayBase64ParserFactory.INSTANCE.createValueParser();
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        DataOutputStream outputStream = new DataOutputStream(bos);
-        String empty = "";
-
-        parser.parse(empty.toCharArray(), 0, empty.length(), outputStream);
-
-        byte[] cache = bos.toByteArray();
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == 0);
-        assertTrue(DatatypeConverter.printBase64Binary(subArray(cache, 2)).equalsIgnoreCase(empty));
+        testOneString("");
 
         StringBuilder everyChar = new StringBuilder();
         for (char c = 'a'; c <= 'z'; c++) {
@@ -58,21 +51,26 @@
         }
         everyChar.append("+/");
 
-        bos.reset();
-        parser.parse(everyChar.toString().toCharArray(), 0, everyChar.length(), outputStream);
-        cache = bos.toByteArray();
-        byte[] answer = DatatypeConverter.parseBase64Binary(everyChar.toString());
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == answer.length);
-        assertTrue(Arrays.equals(answer, subArray(cache, 2)));
+        testOneString(everyChar.toString());
 
-        byte[] maxBytes = new byte[ByteArrayPointable.MAX_LENGTH];
-        Arrays.fill(maxBytes, (byte) 0xff);
-        String maxString = DatatypeConverter.printBase64Binary(maxBytes);
-        bos.reset();
-        parser.parse(maxString.toCharArray(), 0, maxString.length(), outputStream);
-        cache = bos.toByteArray();
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == maxBytes.length);
-        assertTrue(Arrays.equals(maxBytes, subArray(cache, 2)));
+        byte[] longBytes = new byte[65536];
+        Arrays.fill(longBytes, (byte) 0xff);
+        String maxString = DatatypeConverter.printBase64Binary(longBytes);
+
+        testOneString(maxString);
     }
 
-}
\ No newline at end of file
+    void testOneString(String test) throws HyracksDataException {
+        IValueParser parser = ByteArrayBase64ParserFactory.INSTANCE.createValueParser();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        DataOutputStream outputStream = new DataOutputStream(bos);
+        ByteArrayPointable bytePtr = new ByteArrayPointable();
+
+        parser.parse(test.toCharArray(), 0, test.length(), outputStream);
+        bytePtr.set(bos.toByteArray(), 0, bos.size());
+
+        byte[] answer = DatatypeConverter.parseBase64Binary(test);
+        assertTrue(bytePtr.getContentLength() == answer.length);
+        assertTrue(Arrays.equals(answer, copyContent(bytePtr)));
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactoryTest.java b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactoryTest.java
index 3f25c3c..c959c8d 100644
--- a/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactoryTest.java
+++ b/hyracks/hyracks-dataflow-common/src/test/java/org/apache/hyracks/dataflow/common/data/parsers/ByteArrayHexParserFactoryTest.java
@@ -19,50 +19,48 @@
 
 package org.apache.hyracks.dataflow.common.data.parsers;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.util.Arrays;
+
+import javax.xml.bind.DatatypeConverter;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.primitive.ByteArrayPointable;
 import org.junit.Test;
 
-import javax.xml.bind.DatatypeConverter;
-import java.util.Arrays;
-
-import static org.junit.Assert.assertTrue;
-
 public class ByteArrayHexParserFactoryTest {
 
-    public static byte[] subArray(byte[] bytes, int start) {
-        return Arrays.copyOfRange(bytes, start, bytes.length);
-    }
-
     @Test
     public void testExtractPointableArrayFromHexString() throws Exception {
-        byte[] cache = new byte[] { };
+        testOneString("");
+        testOneString("ABCDEF0123456789");
 
-        String empty = "";
-        cache = ByteArrayHexParserFactory
-                .extractPointableArrayFromHexString(empty.toCharArray(), 0, empty.length(), cache);
+        testOneString("0123456789abcdef");
 
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == 0);
-        assertTrue(DatatypeConverter.printHexBinary(subArray(cache, 2)).equalsIgnoreCase(empty));
-
-        String everyChar = "ABCDEF0123456789";
-        cache = ByteArrayHexParserFactory
-                .extractPointableArrayFromHexString(everyChar.toCharArray(), 0, everyChar.length(), cache);
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == everyChar.length() / 2);
-        assertTrue(DatatypeConverter.printHexBinary(subArray(cache, 2)).equalsIgnoreCase(everyChar));
-
-        String lowercase = "0123456789abcdef";
-        cache = ByteArrayHexParserFactory
-                .extractPointableArrayFromHexString(lowercase.toCharArray(), 0, lowercase.length(), cache);
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == lowercase.length() / 2);
-        assertTrue(DatatypeConverter.printHexBinary(subArray(cache, 2)).equalsIgnoreCase(lowercase));
-
-        char[] maxChars = new char[ByteArrayPointable.MAX_LENGTH  * 2];
+        char[] maxChars = new char[65540 * 2];
         Arrays.fill(maxChars, 'f');
         String maxString = new String(maxChars);
-        cache = ByteArrayHexParserFactory
-                .extractPointableArrayFromHexString(maxString.toCharArray(), 0, maxString.length(), cache);
-        assertTrue(ByteArrayPointable.getLength(cache, 0) == maxString.length() / 2);
-        assertTrue(DatatypeConverter.printHexBinary(subArray(cache, 2)).equalsIgnoreCase(maxString));
+
+        testOneString(maxString);
     }
 
-}
\ No newline at end of file
+    void testOneString(String test) throws HyracksDataException {
+        IValueParser parser = ByteArrayHexParserFactory.INSTANCE.createValueParser();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        DataOutputStream outputStream = new DataOutputStream(bos);
+        ByteArrayPointable bytePtr = new ByteArrayPointable();
+
+        parser.parse(test.toCharArray(), 0, test.length(), outputStream);
+
+        bytePtr.set(bos.toByteArray(), 0, bos.size());
+
+        assertTrue(bytePtr.getContentLength() == test.length() / 2);
+        assertEquals(DatatypeConverter.printHexBinary(ByteArrayPointable.copyContent(bytePtr)).toLowerCase(),
+                test.toLowerCase());
+    }
+
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/pom.xml b/hyracks/hyracks-dataflow-hadoop/pom.xml
index b070087..3480ea8 100644
--- a/hyracks/hyracks-dataflow-hadoop/pom.xml
+++ b/hyracks/hyracks-dataflow-hadoop/pom.xml
@@ -41,19 +41,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/AbstractHadoopOperatorDescriptor.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/AbstractHadoopOperatorDescriptor.java
index 070dfb3..226250e 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/AbstractHadoopOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/AbstractHadoopOperatorDescriptor.java
@@ -169,4 +169,4 @@
 
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/AbstractClassBasedDelegate.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/AbstractClassBasedDelegate.java
index 3c03754..62c37ed 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/AbstractClassBasedDelegate.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/AbstractClassBasedDelegate.java
@@ -45,4 +45,4 @@
             throw new RuntimeException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopHashTuplePartitionComputerFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopHashTuplePartitionComputerFactory.java
index f78aea6..fe8a612 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopHashTuplePartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopHashTuplePartitionComputerFactory.java
@@ -57,4 +57,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopNewPartitionerTuplePartitionComputerFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopNewPartitionerTuplePartitionComputerFactory.java
index 39b388f..b20c6e0 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopNewPartitionerTuplePartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopNewPartitionerTuplePartitionComputerFactory.java
@@ -63,4 +63,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopPartitionerTuplePartitionComputerFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopPartitionerTuplePartitionComputerFactory.java
index 04a5491..127eed9 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopPartitionerTuplePartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/HadoopPartitionerTuplePartitionComputerFactory.java
@@ -63,4 +63,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyBinaryComparatorFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyBinaryComparatorFactory.java
index 73505db..b74fdde 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyBinaryComparatorFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyBinaryComparatorFactory.java
@@ -43,4 +43,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyComparatorFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyComparatorFactory.java
index 513d1c8..01024bd 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyComparatorFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/KeyComparatorFactory.java
@@ -42,4 +42,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/RawComparingComparatorFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/RawComparingComparatorFactory.java
index 8ca7a49..d2f0ead 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/RawComparingComparatorFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/RawComparingComparatorFactory.java
@@ -44,4 +44,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/WritableComparingBinaryComparatorFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/WritableComparingBinaryComparatorFactory.java
index 4857047..01f8755 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/WritableComparingBinaryComparatorFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/data/WritableComparingBinaryComparatorFactory.java
@@ -43,4 +43,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopHelper.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopHelper.java
index 8c154cc..b248bff 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopHelper.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopHelper.java
@@ -273,4 +273,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopTools.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopTools.java
index e3482b3..fb86385 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopTools.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HadoopTools.java
@@ -34,4 +34,4 @@
     public static Object newInstance(Class<?> clazz) throws InstantiationException, IllegalAccessException {
         return clazz.newInstance();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HashPartitioningShuffleConnectorDescriptor.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HashPartitioningShuffleConnectorDescriptor.java
index 2cfd2f7..4892935 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HashPartitioningShuffleConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/HashPartitioningShuffleConnectorDescriptor.java
@@ -66,4 +66,4 @@
         return new PartitionCollector(ctx, getConnectorId(), receiverIndex, expectedPartitions, frameReader,
                 channelReader);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProvider.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProvider.java
index 1f5ef8a..9cafaea 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProvider.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProvider.java
@@ -24,4 +24,4 @@
 
 public interface IInputSplitProvider {
     public InputSplit next() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProviderFactory.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProviderFactory.java
index b731a27..87f7cd7 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProviderFactory.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/IInputSplitProviderFactory.java
@@ -24,4 +24,4 @@
 
 public interface IInputSplitProviderFactory extends Serializable {
     public IInputSplitProvider createInputSplitProvider(int id) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/InputFileSplit.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/InputFileSplit.java
index 6631314..d0e6ce2 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/InputFileSplit.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/InputFileSplit.java
@@ -107,4 +107,4 @@
     public FileSplit toFileSplit() {
         return new FileSplit(file, start, length, hosts);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/MapperOperatorDescriptor.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/MapperOperatorDescriptor.java
index 391a636..1ebebda 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/MapperOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/MapperOperatorDescriptor.java
@@ -32,7 +32,6 @@
 import org.apache.hadoop.mapreduce.Reducer;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.TaskAttemptID;
-
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.VSizeFrame;
@@ -70,10 +69,11 @@
         recordDescriptors[0] = helper.getMapOutputRecordDescriptor();
     }
 
+    @SuppressWarnings("deprecation")
     @Override
     public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
             IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         final HadoopHelper helper = new HadoopHelper(config);
         final Configuration conf = helper.getConfiguration();
         final Mapper<K1, V1, K2, V2> mapper = helper.getMapper();
@@ -219,18 +219,19 @@
                 for (int i = 0; i < comparatorFactories.length; ++i) {
                     comparators[i] = comparatorFactories[i].createBinaryComparator();
                 }
-                ExternalSortRunMerger merger = new ExternalSortRunMerger(ctx, runGen.getSorter(),
-                        runGen.getRuns(), new int[] { 0 }, comparators, null,
-                        helper.getMapOutputRecordDescriptorWithoutExtraFields(), framesLimit, delegatingWriter);
+                ExternalSortRunMerger merger = new ExternalSortRunMerger(ctx, runGen.getSorter(), runGen.getRuns(),
+                        new int[] { 0 }, comparators, null, helper.getMapOutputRecordDescriptorWithoutExtraFields(),
+                        framesLimit, delegatingWriter);
                 merger.process();
             }
         }
 
         return new AbstractUnaryOutputSourceOperatorNodePushable() {
+            @SuppressWarnings("unchecked")
             @Override
             public void initialize() throws HyracksDataException {
-                writer.open();
                 try {
+                    writer.open();
                     SortingRecordWriter recordWriter = new SortingRecordWriter();
                     InputSplit split = null;
                     int blockId = 0;
@@ -246,9 +247,8 @@
                                 Thread.currentThread().setContextClassLoader(ctxCL);
                             }
                             recordWriter.initBlock(blockId);
-                            Mapper<K1, V1, K2, V2>.Context mCtx = new MRContextUtil()
-                                    .createMapContext(conf, taId, recordReader,
-                                            recordWriter, null, null, split);
+                            Mapper<K1, V1, K2, V2>.Context mCtx = new MRContextUtil().createMapContext(conf, taId,
+                                    recordReader, recordWriter, null, null, split);
                             mapper.run(mCtx);
                             recordReader.close();
                             recordWriter.sortAndFlushBlock(writer);
@@ -259,6 +259,9 @@
                             throw new HyracksDataException(e);
                         }
                     }
+                } catch (Throwable th) {
+                    writer.fail();
+                    throw th;
                 } finally {
                     writer.close();
                 }
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ReducerOperatorDescriptor.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ReducerOperatorDescriptor.java
index b25be38..d1bfbf7 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ReducerOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ReducerOperatorDescriptor.java
@@ -93,4 +93,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ShuffleFrameReader.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ShuffleFrameReader.java
index 568a62d..fb9c6fb 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ShuffleFrameReader.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/mapreduce/ShuffleFrameReader.java
@@ -25,7 +25,6 @@
 import java.util.List;
 
 import org.apache.hadoop.conf.Configuration;
-
 import org.apache.hyracks.api.comm.FrameHelper;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameReader;
@@ -45,7 +44,7 @@
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
 import org.apache.hyracks.dataflow.std.collectors.NonDeterministicChannelReader;
 import org.apache.hyracks.dataflow.std.sort.ExternalSortRunMerger;
-import org.apache.hyracks.dataflow.std.sort.RunAndMaxFrameSizePair;
+import org.apache.hyracks.dataflow.std.structures.RunAndMaxFrameSizePair;
 
 public class ShuffleFrameReader implements IFrameReader {
     private final IHyracksTaskContext ctx;
@@ -124,14 +123,15 @@
         }
         List<RunAndMaxFrameSizePair> runs = new LinkedList<>();
         for (int i = 0; i < runFileWriters.size(); i++) {
-            runs.add(new RunAndMaxFrameSizePair(runFileWriters.get(i).createReader(), runFileMaxFrameSize.get(i)));
+            runs.add(new RunAndMaxFrameSizePair(runFileWriters.get(i).createDeleteOnCloseReader(), runFileMaxFrameSize
+                    .get(i)));
         }
         RunFileWriter rfw = new RunFileWriter(outFile, ctx.getIOManager());
-        ExternalSortRunMerger merger = new ExternalSortRunMerger(ctx, null, runs, new int[] { 0 },
-                comparators, null, recordDescriptor, framesLimit, rfw);
+        ExternalSortRunMerger merger = new ExternalSortRunMerger(ctx, null, runs, new int[] { 0 }, comparators, null,
+                recordDescriptor, framesLimit, rfw);
         merger.process();
 
-        reader = rfw.createReader();
+        reader = rfw.createDeleteOnCloseReader();
         reader.open();
     }
 
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/DatatypeHelper.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/DatatypeHelper.java
index 526e9df..ff4d282 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/DatatypeHelper.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/DatatypeHelper.java
@@ -119,4 +119,4 @@
         }
         return jobConfMap;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/MRContextUtil.java b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/MRContextUtil.java
index b18e80f..17c5ec5 100644
--- a/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/MRContextUtil.java
+++ b/hyracks/hyracks-dataflow-hadoop/src/main/java/org/apache/hyracks/dataflow/hadoop/util/MRContextUtil.java
@@ -62,4 +62,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/pom.xml b/hyracks/hyracks-dataflow-std/pom.xml
index a37b3a8..e7e511e 100644
--- a/hyracks/hyracks-dataflow-std/pom.xml
+++ b/hyracks/hyracks-dataflow-std/pom.xml
@@ -17,10 +17,11 @@
  ! under the License.
  !-->
 
-<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>
-  <artifactId>hyracks-dataflow-std</artifactId>
-  <name>hyracks-dataflow-std</name>
+<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>
+    <artifactId>hyracks-dataflow-std</artifactId>
+    <name>hyracks-dataflow-std</name>
 
   <parent>
     <groupId>org.apache.hyracks</groupId>
@@ -28,57 +29,43 @@
     <version>0.2.18-SNAPSHOT</version>
   </parent>
 
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-      <comments>A business-friendly OSS license</comments>
-    </license>
-  </licenses>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+            <comments>A business-friendly OSS license</comments>
+        </license>
+    </licenses>
 
   <properties>
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-api</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>commons-io</groupId>
-  		<artifactId>commons-io</artifactId>
-  	</dependency>
-      <dependency>
-          <groupId>org.apache.hyracks</groupId>
-          <artifactId>hyracks-control-nc</artifactId>
-          <version>0.2.18-SNAPSHOT</version>
-          <scope>test</scope>
-      </dependency>
-  </dependencies>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-api</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-dataflow-common</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-control-nc</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractActivityNode.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractActivityNode.java
index c1ebfa2..5ad2da4 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractActivityNode.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractActivityNode.java
@@ -34,4 +34,4 @@
     public ActivityId getActivityId() {
         return id;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractConnectorDescriptor.java
index 5ce2817..5caf477 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractConnectorDescriptor.java
@@ -67,4 +67,4 @@
             ICCApplicationContext appCtx) {
         // do nothing
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java
index 216f410..7d97507 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java
@@ -42,9 +42,9 @@
         sourceBitmap.clear();
         sourceBitmap.set(0, nProducerPartitions);
     }
-    
+
     @Override
-    public boolean allProducersToAllConsumers(){
+    public boolean allProducersToAllConsumers() {
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorDescriptor.java
index 887724d..e930a2b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorDescriptor.java
@@ -94,4 +94,4 @@
         jop.put("display-name", displayName);
         return jop;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorNodePushable.java
index 1ba8c57..3fa88bb 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractOperatorNodePushable.java
@@ -25,4 +25,4 @@
     public String getDisplayName() {
         return toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractSingleActivityOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractSingleActivityOperatorDescriptor.java
index 2e84aa4..775c367 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractSingleActivityOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractSingleActivityOperatorDescriptor.java
@@ -48,4 +48,4 @@
             builder.addTargetEdge(i, this, i);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractStateObject.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractStateObject.java
index 68d20c8..c4e8ec6 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractStateObject.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractStateObject.java
@@ -62,4 +62,4 @@
     public void setMemoryOccupancy(long memoryOccupancy) {
         this.memoryOccupancy = memoryOccupancy;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputOperatorNodePushable.java
index f5538e7..93a8120 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputOperatorNodePushable.java
@@ -44,4 +44,4 @@
     @Override
     public void deinitialize() throws HyracksDataException {
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputSinkOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputSinkOperatorNodePushable.java
index 52b4abe..69c2966 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputSinkOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputSinkOperatorNodePushable.java
@@ -20,10 +20,16 @@
 
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public abstract class AbstractUnaryInputSinkOperatorNodePushable extends AbstractUnaryInputOperatorNodePushable {
     @Override
     public final void setOutputFrameWriter(int index, IFrameWriter writer, RecordDescriptor recordDesc) {
         throw new IllegalStateException();
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        // Sink operator, nothing to flush
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputUnaryOutputOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputUnaryOutputOperatorNodePushable.java
index 596c111..ec31eb7 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputUnaryOutputOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryInputUnaryOutputOperatorNodePushable.java
@@ -31,4 +31,4 @@
     public final int getInputArity() {
         return 1;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputOperatorNodePushable.java
index e5e120e..a468cbd 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputOperatorNodePushable.java
@@ -42,4 +42,4 @@
     @Override
     public void deinitialize() throws HyracksDataException {
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputSourceOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputSourceOperatorNodePushable.java
index 43fe40f..fe0ac14 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputSourceOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractUnaryOutputSourceOperatorNodePushable.java
@@ -30,4 +30,4 @@
     public final int getInputArity() {
         return 0;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/IOpenableDataWriterOperator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/IOpenableDataWriterOperator.java
index 228a050..7f1363e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/IOpenableDataWriterOperator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/IOpenableDataWriterOperator.java
@@ -22,4 +22,4 @@
 
 public interface IOpenableDataWriterOperator extends IOpenableDataWriter<Object[]> {
     public void setDataWriter(int index, IOpenableDataWriter<Object[]> writer);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractTuplePointerAccessor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractTuplePointerAccessor.java
new file mode 100644
index 0000000..3683354
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractTuplePointerAccessor.java
@@ -0,0 +1,134 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+public abstract class AbstractTuplePointerAccessor implements ITuplePointerAccessor {
+
+    protected int tid = -1;
+
+    abstract IFrameTupleAccessor getInnerAccessor();
+
+    abstract void resetInnerAccessor(TuplePointer tuplePointer);
+
+    @Override
+    public void reset(TuplePointer tuplePointer) {
+        resetInnerAccessor(tuplePointer);
+        tid = tuplePointer.tupleIndex;
+    }
+
+    @Override
+    public int getTupleStartOffset() {
+        return getTupleStartOffset(tid);
+    }
+
+    @Override
+    public int getTupleLength() {
+        return getTupleLength(tid);
+    }
+
+    @Override
+    public int getAbsFieldStartOffset(int fieldId) {
+        return getAbsoluteFieldStartOffset(tid, fieldId);
+    }
+
+    @Override
+    public int getFieldLength(int fieldId) {
+        return getFieldLength(tid, fieldId);
+    }
+
+    @Override
+    public ByteBuffer getBuffer() {
+        return getInnerAccessor().getBuffer();
+    }
+
+    @Override
+    public int getFieldCount() {
+        return getInnerAccessor().getFieldCount();
+    }
+
+    @Override
+    public int getFieldSlotsLength() {
+        return getInnerAccessor().getFieldSlotsLength();
+    }
+
+    protected void checkTupleIndex(int tupleIndex) {
+        if (tupleIndex != tid) {
+            throw new IllegalArgumentException(
+                    "ITupleBufferAccessor can not access the different tid other than the one given in reset function");
+        }
+    }
+
+    @Override
+    public int getFieldEndOffset(int tupleIndex, int fIdx) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getFieldEndOffset(tid, fIdx);
+    }
+
+    @Override
+    public int getFieldStartOffset(int tupleIndex, int fIdx) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getFieldStartOffset(tupleIndex, fIdx);
+    }
+
+    @Override
+    public int getFieldLength(int tupleIndex, int fIdx) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getFieldLength(tupleIndex, fIdx);
+    }
+
+    @Override
+    public int getTupleLength(int tupleIndex) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getTupleLength(tupleIndex);
+    }
+
+    @Override
+    public int getTupleEndOffset(int tupleIndex) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getTupleEndOffset(tupleIndex);
+    }
+
+    @Override
+    public int getTupleStartOffset(int tupleIndex) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getTupleStartOffset(tupleIndex);
+    }
+
+    @Override
+    public int getAbsoluteFieldStartOffset(int tupleIndex, int fIdx) {
+        checkTupleIndex(tupleIndex);
+        return getInnerAccessor().getAbsoluteFieldStartOffset(tupleIndex, fIdx);
+    }
+
+    @Override
+    public int getTupleCount() {
+        return getInnerAccessor().getTupleCount();
+    }
+
+    @Override
+    public void reset(ByteBuffer buffer) {
+        throw new IllegalAccessError("Should never call this reset");
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/BufferInfo.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/BufferInfo.java
new file mode 100644
index 0000000..d5fbdc0
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/BufferInfo.java
@@ -0,0 +1,59 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.dataflow.std.structures.IResetable;
+
+public class BufferInfo implements IResetable<BufferInfo> {
+    private ByteBuffer buffer;
+    private int startOffset;
+    private int length;
+
+    public BufferInfo(ByteBuffer buffer, int startOffset, int length) {
+        reset(buffer, startOffset, length);
+    }
+
+    public ByteBuffer getBuffer() {
+        return buffer;
+    }
+
+    public int getStartOffset() {
+        return startOffset;
+    }
+
+    public int getLength() {
+        return length;
+    }
+
+    @Override
+    public void reset(BufferInfo other) {
+        this.buffer = other.buffer;
+        this.startOffset = other.startOffset;
+        this.length = other.length;
+    }
+
+    public void reset(ByteBuffer buffer, int startOffset, int length) {
+        this.buffer = buffer;
+        this.startOffset = startOffset;
+        this.length = length;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/DeallocatableFramePool.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/DeallocatableFramePool.java
new file mode 100644
index 0000000..626edba
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/DeallocatableFramePool.java
@@ -0,0 +1,123 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import java.nio.ByteBuffer;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+import org.apache.hyracks.api.context.IHyracksFrameMgrContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class DeallocatableFramePool implements IDeallocatableFramePool {
+
+    private final IHyracksFrameMgrContext ctx;
+    private final int memBudget;
+    private int allocated;
+    private LinkedList<ByteBuffer> buffers;
+
+    public DeallocatableFramePool(IHyracksFrameMgrContext ctx, int memBudgetInBytes) {
+        this.ctx = ctx;
+        this.memBudget = memBudgetInBytes;
+        this.allocated = 0;
+        this.buffers = new LinkedList<>();
+    }
+
+    @Override
+    public int getMinFrameSize() {
+        return ctx.getInitialFrameSize();
+    }
+
+    @Override
+    public int getMemoryBudgetBytes() {
+        return memBudget;
+    }
+
+    @Override
+    public ByteBuffer allocateFrame(int frameSize) throws HyracksDataException {
+        ByteBuffer buffer = findExistingFrame(frameSize);
+        if (buffer != null) {
+            return buffer;
+        }
+        if (haveEnoughFreeSpace(frameSize)) {
+            return createNewFrame(frameSize);
+        }
+        return mergeExistingFrames(frameSize);
+    }
+
+    private ByteBuffer mergeExistingFrames(int frameSize) throws HyracksDataException {
+        int mergedSize = memBudget - allocated;
+        for (Iterator<ByteBuffer> iter = buffers.iterator(); iter.hasNext(); ) {
+            ByteBuffer buffer = iter.next();
+            iter.remove();
+            mergedSize += buffer.capacity();
+            ctx.deallocateFrames(buffer.capacity());
+            allocated -= buffer.capacity();
+            if (mergedSize >= frameSize) {
+                return createNewFrame(mergedSize);
+            }
+        }
+        return null;
+
+    }
+
+    private ByteBuffer createNewFrame(int frameSize) throws HyracksDataException {
+        allocated += frameSize;
+        return ctx.allocateFrame(frameSize);
+    }
+
+    private boolean haveEnoughFreeSpace(int frameSize) {
+        return allocated + frameSize <= memBudget;
+    }
+
+    private ByteBuffer findExistingFrame(int frameSize) {
+        for (Iterator<ByteBuffer> iter = buffers.iterator(); iter.hasNext(); ) {
+            ByteBuffer next = iter.next();
+            if (next.capacity() >= frameSize) {
+                iter.remove();
+                return next;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public void deAllocateBuffer(ByteBuffer buffer) {
+        if (buffer.capacity() != ctx.getInitialFrameSize()) {
+            // simply deallocate the Big Object frame
+            ctx.deallocateFrames(buffer.capacity());
+            allocated -= buffer.capacity();
+        } else {
+            buffers.add(buffer);
+        }
+    }
+
+    @Override
+    public void reset() {
+        allocated = 0;
+        buffers.clear();
+    }
+
+    @Override
+    public void close() {
+        buffers.clear();
+        allocated = 0;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/EnumFreeSlotPolicy.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/EnumFreeSlotPolicy.java
similarity index 68%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/EnumFreeSlotPolicy.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/EnumFreeSlotPolicy.java
index 21ed3e2..15bbab2 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/EnumFreeSlotPolicy.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/EnumFreeSlotPolicy.java
@@ -17,10 +17,23 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
+/**
+ * Under the big-object setting, there could be multiple variable size free slots to use.
+ * In that case, we need to decide which free slot to give back to caller.
+ */
 public enum EnumFreeSlotPolicy {
+    /**
+     * Choose the minimum size frame
+     */
     SMALLEST_FIT,
+    /**
+     * Choose the latest used frame if it is big enough
+     */
     LAST_FIT,
+    /**
+     * Choose the largest size frame
+     */
     BIGGEST_FIT,
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBiggestFirst.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBiggestFirst.java
similarity index 85%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBiggestFirst.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBiggestFirst.java
index 200f27d..6f5587f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBiggestFirst.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBiggestFirst.java
@@ -17,25 +17,26 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import org.apache.hyracks.dataflow.std.structures.IResetableComparable;
 import org.apache.hyracks.dataflow.std.structures.IResetableComparableFactory;
 import org.apache.hyracks.dataflow.std.structures.MaxHeap;
 
-public class FrameFreeSlotBiggestFirst implements IFrameFreeSlotPolicy {
+class FrameFreeSlotBiggestFirst implements IFrameFreeSlotPolicy {
     private static final int INVALID = -1;
+    private static final int INITIAL_FRAME_NUM = 10;
 
-    class SpaceEntryFactory implements IResetableComparableFactory {
+    protected class SpaceEntryFactory implements IResetableComparableFactory {
         @Override
         public IResetableComparable createResetableComparable() {
             return new SpaceEntry();
         }
     }
 
-    class SpaceEntry implements IResetableComparable<SpaceEntry> {
-        int space;
-        int id;
+    protected class SpaceEntry implements IResetableComparable<SpaceEntry> {
+        private int space;
+        private int id;
 
         SpaceEntry() {
             space = INVALID;
@@ -76,6 +77,10 @@
         tempEntry = new SpaceEntry();
     }
 
+    public FrameFreeSlotBiggestFirst() {
+        this(INITIAL_FRAME_NUM);
+    }
+
     @Override
     public int popBestFit(int tobeInsertedSize) {
         if (!heap.isEmpty()) {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotLastFit.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotLastFit.java
similarity index 88%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotLastFit.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotLastFit.java
index 0235c6f..819ff80 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotLastFit.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotLastFit.java
@@ -17,16 +17,16 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.util.Arrays;
 
-public class FrameFreeSlotLastFit implements IFrameFreeSlotPolicy {
+class FrameFreeSlotLastFit implements IFrameFreeSlotPolicy {
     private static int INITIAL_CAPACITY = 10;
 
     private class FrameSpace {
-        int frameId;
-        int freeSpace;
+        private int frameId;
+        private int freeSpace;
 
         FrameSpace(int frameId, int freeSpace) {
             reset(frameId, freeSpace);
@@ -41,8 +41,8 @@
     private FrameSpace[] frameSpaces;
     private int size;
 
-    public FrameFreeSlotLastFit(int maxFrames) {
-        frameSpaces = new FrameSpace[maxFrames];
+    public FrameFreeSlotLastFit(int initialFrameNumber) {
+        frameSpaces = new FrameSpace[initialFrameNumber];
         size = 0;
     }
 
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotPolicyFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotPolicyFactory.java
new file mode 100644
index 0000000..d4267ab
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotPolicyFactory.java
@@ -0,0 +1,46 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+public class FrameFreeSlotPolicyFactory {
+    public static IFrameFreeSlotPolicy createFreeSlotPolicy(EnumFreeSlotPolicy policy, int initialNumberFrames) {
+        switch (policy) {
+            case SMALLEST_FIT:
+                return new FrameFreeSlotSmallestFit();
+            case BIGGEST_FIT:
+                return new FrameFreeSlotBiggestFirst(initialNumberFrames);
+            case LAST_FIT:
+            default:
+                return new FrameFreeSlotLastFit(initialNumberFrames);
+        }
+    }
+
+    public static IFrameFreeSlotPolicy createFreeSlotPolicy(EnumFreeSlotPolicy policy) {
+        switch (policy) {
+            case SMALLEST_FIT:
+                return new FrameFreeSlotSmallestFit();
+            case BIGGEST_FIT:
+                return new FrameFreeSlotBiggestFirst();
+            case LAST_FIT:
+            default:
+                return new FrameFreeSlotLastFit();
+        }
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotSmallestFit.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotSmallestFit.java
similarity index 93%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotSmallestFit.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotSmallestFit.java
index 8331a93..ada6752 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotSmallestFit.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotSmallestFit.java
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.TreeMap;
 
-public class FrameFreeSlotSmallestFit implements IFrameFreeSlotPolicy {
+class FrameFreeSlotSmallestFit implements IFrameFreeSlotPolicy {
 
     private TreeMap<Integer, LinkedList<Integer>> freeSpaceIndex;
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IDeallocatableFramePool.java
similarity index 80%
copy from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java
copy to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IDeallocatableFramePool.java
index 4247e64..39426c1 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IDeallocatableFramePool.java
@@ -16,10 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
 
-public interface IVirtualFreePageManager extends IFreePageManager {
-    public int getCapacity();
+package org.apache.hyracks.dataflow.std.buffermanager;
 
-    public void reset();
+import java.nio.ByteBuffer;
+
+public interface IDeallocatableFramePool extends IFramePool {
+
+    void deAllocateBuffer(ByteBuffer buffer);
+
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferAccessor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IDeletableTupleBufferManager.java
similarity index 71%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferAccessor.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IDeletableTupleBufferManager.java
index 00decb9..71d08b2 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferAccessor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IDeletableTupleBufferManager.java
@@ -17,24 +17,12 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
-import java.nio.ByteBuffer;
-
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.std.structures.TuplePointer;
 
-public interface ITupleBufferAccessor {
+public interface IDeletableTupleBufferManager extends ITupleBufferManager {
 
-    void reset(TuplePointer tuplePointer);
-
-    ByteBuffer getTupleBuffer();
-
-    int getTupleStartOffset();
-
-    int getTupleLength();
-
-    int getAbsFieldStartOffset(int fieldId);
-
-    int getFieldLength(int fieldId);
-
+    void deleteTuple(TuplePointer tuplePointer) throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFrameBufferManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFrameBufferManager.java
similarity index 67%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFrameBufferManager.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFrameBufferManager.java
index 75386e0..1118bf3 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFrameBufferManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFrameBufferManager.java
@@ -16,12 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.nio.ByteBuffer;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
+/**
+ * Manage the buffer space in the unit of frame.
+ */
 public interface IFrameBufferManager {
 
     /**
@@ -33,26 +36,10 @@
 
     /**
      * @param frameIndex
-     * @return the specified frame, from the set of memory buffers, being
-     * managed by this memory manager
+     * @param bufferInfo the given object need to be reset
+     * @return the filled bufferInfo to facilitate the chain access
      */
-    ByteBuffer getFrame(int frameIndex);
-
-    /**
-     * Get the startOffset of the specific frame inside buffer
-     *
-     * @param frameIndex
-     * @return the start offset of the frame returned by {@link #getFrame(int)} method.
-     */
-    int getFrameStartOffset(int frameIndex);
-
-    /**
-     * Get the size of the specific frame inside buffer
-     *
-     * @param frameIndex
-     * @return the length of the specific frame
-     */
-    int getFrameSize(int frameIndex);
+    BufferInfo getFrame(int frameIndex, BufferInfo bufferInfo);
 
     /**
      * @return the number of frames in this buffer
@@ -63,10 +50,10 @@
      * Writes the whole frame into the buffer.
      *
      * @param frame source frame
-     * @return the id of the inserted frame. if failed to return it will be -1.
+     * @return the id of the inserted frame. return -1 if it failed to insert
      */
     int insertFrame(ByteBuffer frame) throws HyracksDataException;
 
     void close();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFrameFreeSlotPolicy.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFrameFreeSlotPolicy.java
similarity index 96%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFrameFreeSlotPolicy.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFrameFreeSlotPolicy.java
index fab1706..8a1e004 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFrameFreeSlotPolicy.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFrameFreeSlotPolicy.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 public interface IFrameFreeSlotPolicy {
 
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFramePool.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFramePool.java
similarity index 96%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFramePool.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFramePool.java
index f555971..2c6b01e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/IFramePool.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IFramePool.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.nio.ByteBuffer;
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IPartitionedMemoryConstrain.java
similarity index 69%
copy from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
copy to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IPartitionedMemoryConstrain.java
index 3dbe0ab..1ba0745 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IPartitionedMemoryConstrain.java
@@ -16,8 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
 
-public interface IFreePageManagerFactory {
-    public IFreePageManager createFreePageManager();
+package org.apache.hyracks.dataflow.std.buffermanager;
+
+/**
+ * Provide a customized constraint for different partitions.
+ */
+public interface IPartitionedMemoryConstrain {
+    /**
+     * Set number of frames that can be used by the specific partition.
+     * 
+     * @param partitionId
+     * @return
+     */
+    int frameLimit(int partitionId);
+
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IPartitionedTupleBufferManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IPartitionedTupleBufferManager.java
new file mode 100644
index 0000000..70ca2dd
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/IPartitionedTupleBufferManager.java
@@ -0,0 +1,111 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+public interface IPartitionedTupleBufferManager {
+
+    int getNumPartitions();
+
+    int getNumTuples(int partition);
+
+    int getPhysicalSize(int partition);
+
+    /**
+     * Insert tuple from (byte[] byteArray,int[] fieldEndOffsets, int start, int size) into
+     * specified partition. The handle is written into the tuplepointer.
+     * <br>
+     * If {@code byteArray} contains the {@code fieldEndOffsets} already, then please set the {@code fieldEndOffsets} as NULL
+     *
+     * @param partition
+     *            the id of the partition to insert the tuple into
+     * @param byteArray
+     *            the byteArray which contains the tuple
+     * @param fieldEndOffsets
+     *            the fieldEndOffsets which comes from the ArrayTupleBuilder, please set it to NULL if the {@code byteArray} already contains the fieldEndOffsets
+     * @param start
+     *            the start offset in the {@code byteArray}
+     * @param size
+     *            the size of the tuple
+     * @param pointer
+     *            the returned pointer indicating the handler inside this buffer manager
+     * @return a boolean value to indicate if the insertion succeed or not
+     */
+    boolean insertTuple(int partition, byte[] byteArray, int[] fieldEndOffsets, int start, int size,
+            TuplePointer pointer) throws HyracksDataException;
+
+    /**
+     * Insert tuple {@code tupleId} from the {@code tupleAccessor} into the given partition.
+     * The returned handle is written into the tuplepointer
+     * 
+     * @param partition
+     *            the id of the partition to insert the tuple
+     * @param tupleAccessor
+     *            the FrameTupleAccessor storage
+     * @param tupleId
+     *            the id of the tuple from the tupleAccessor
+     * @param pointer
+     *            the returned pointer indicating the handler to later fetch the tuple from the buffer maanager
+     * @return true if the insertion succeed. Otherwise return false.
+     * @throws HyracksDataException
+     */
+    boolean insertTuple(int partition, IFrameTupleAccessor tupleAccessor, int tupleId, TuplePointer pointer)
+            throws HyracksDataException;
+
+    /**
+     * Reset to the initial states. The previous allocated resources won't be released in order to be used in the next round.
+     * 
+     * @throws HyracksDataException
+     */
+    void reset() throws HyracksDataException;
+
+    /**
+     * Close the managers which will explicitly release all the allocated resources.
+     */
+    void close();
+
+    ITuplePointerAccessor getTupleAccessor(RecordDescriptor recordDescriptor);
+
+    /**
+     * Flush the particular partition {@code pid} to {@code writer}.
+     * This partition will not be cleared.
+     * Currently it is used by Join where we flush the inner partition to the join (as a frameWriter),
+     * but we will still keep the inner for the next outer partition.
+     * 
+     * @param pid
+     * @param writer
+     * @throws HyracksDataException
+     */
+    void flushPartition(int pid, IFrameWriter writer) throws HyracksDataException;
+
+    /**
+     * Clear the memory occupation of the particular partition.
+     * 
+     * @param partition
+     * @throws HyracksDataException
+     */
+    void clearPartition(int partition) throws HyracksDataException;
+
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/ITupleBufferManager.java
similarity index 84%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferManager.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/ITupleBufferManager.java
index ae502a0..324401a 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/ITupleBufferManager.java
@@ -17,12 +17,15 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.std.structures.TuplePointer;
 
+/**
+ * Manage the buffer space. Different from the {@link IFrameBufferManager}, this one allows the record level manipulation.
+ */
 public interface ITupleBufferManager {
     /**
      * Reset the counters and flags to initial status. This method should not release the pre-allocated resources
@@ -38,9 +41,7 @@
 
     boolean insertTuple(IFrameTupleAccessor accessor, int idx, TuplePointer tuplePointer) throws HyracksDataException;
 
-    void deleteTuple(TuplePointer tuplePointer) throws HyracksDataException;
+    void close() throws HyracksDataException;
 
-    void close();
-
-    ITupleBufferAccessor getTupleAccessor();
+    ITuplePointerAccessor createTupleAccessor();
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferAccessor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/ITuplePointerAccessor.java
similarity index 62%
copy from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferAccessor.java
copy to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/ITuplePointerAccessor.java
index 00decb9..a8ab7eb 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/ITupleBufferAccessor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/ITuplePointerAccessor.java
@@ -17,18 +17,20 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
-import java.nio.ByteBuffer;
-
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.dataflow.std.structures.TuplePointer;
 
-public interface ITupleBufferAccessor {
-
+/**
+ * A cursor-like tuple level accessor to point to a tuple physical byte location inside the {@link ITupleBufferManager}
+ * Some of the BufferManger (e.g. {@link VariableDeletableTupleMemoryManager}are using the different frame structure as
+ * the common {@link org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor} does.
+ * In order to hide the complexity inside the buffer manager, clients can use this Accessor to navigate the internal record.
+ */
+public interface ITuplePointerAccessor extends IFrameTupleAccessor {
     void reset(TuplePointer tuplePointer);
 
-    ByteBuffer getTupleBuffer();
-
     int getTupleStartOffset();
 
     int getTupleLength();
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/PreferToSpillFullyOccupiedFramePolicy.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/PreferToSpillFullyOccupiedFramePolicy.java
new file mode 100644
index 0000000..f9387a9
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/PreferToSpillFullyOccupiedFramePolicy.java
@@ -0,0 +1,99 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import java.util.BitSet;
+import java.util.function.IntUnaryOperator;
+
+/**
+ * This policy is used to decide which partition in {@link VPartitionTupleBufferManager} should be a victim when
+ * there is not enough space to insert new element.
+ */
+public class PreferToSpillFullyOccupiedFramePolicy {
+
+    private final IPartitionedTupleBufferManager bufferManager;
+    private final BitSet spilledStatus;
+    private final int minFrameSize;
+
+    public PreferToSpillFullyOccupiedFramePolicy(IPartitionedTupleBufferManager bufferManager, BitSet spilledStatus,
+            int minFrameSize) {
+        this.bufferManager = bufferManager;
+        this.spilledStatus = spilledStatus;
+        this.minFrameSize = minFrameSize;
+    }
+
+    public int selectVictimPartition(int failedToInsertPartition) {
+        // To avoid flush the half-full frame, it's better to spill itself.
+        if (bufferManager.getNumTuples(failedToInsertPartition) > 0) {
+            return failedToInsertPartition;
+        }
+        int partitionToSpill = findSpilledPartitionWithMaxMemoryUsage();
+        int maxToSpillPartSize = 0;
+        // if we couldn't find the already spilled partition, or it is too small to flush that one,
+        // try to flush an in memory partition.
+        if (partitionToSpill < 0
+                || (maxToSpillPartSize = bufferManager.getPhysicalSize(partitionToSpill)) == minFrameSize) {
+            int partitionInMem = findInMemPartitionWithMaxMemoryUsage();
+            if (partitionInMem >= 0 && bufferManager.getPhysicalSize(partitionInMem) > maxToSpillPartSize) {
+                partitionToSpill = partitionInMem;
+            }
+        }
+        return partitionToSpill;
+    }
+
+    public int findInMemPartitionWithMaxMemoryUsage() {
+        return findMaxSize(spilledStatus.nextClearBit(0), (i) -> spilledStatus.nextClearBit(i + 1));
+    }
+
+    public int findSpilledPartitionWithMaxMemoryUsage() {
+        return findMaxSize(spilledStatus.nextSetBit(0), (i) -> spilledStatus.nextSetBit(i + 1));
+    }
+
+    private int findMaxSize(int startIndex, IntUnaryOperator nextIndexOp) {
+        int pid = -1;
+        int max = 0;
+        for (int i = startIndex; i >= 0 && i < bufferManager.getNumPartitions(); i = nextIndexOp.applyAsInt(i)) {
+            int partSize = bufferManager.getPhysicalSize(i);
+            if (partSize > max) {
+                max = partSize;
+                pid = i;
+            }
+        }
+        return pid;
+    }
+
+    /**
+     * Create an constrain for the already spilled partition that it can only use at most one frame.
+     * 
+     * @param spillStatus
+     * @return
+     */
+    public static IPartitionedMemoryConstrain createAtMostOneFrameForSpilledPartitionConstrain(BitSet spillStatus) {
+        return new IPartitionedMemoryConstrain() {
+            @Override
+            public int frameLimit(int partitionId) {
+                if (spillStatus.get(partitionId)) {
+                    return 1;
+                }
+                return Integer.MAX_VALUE;
+            }
+        };
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VPartitionTupleBufferManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VPartitionTupleBufferManager.java
new file mode 100644
index 0000000..f46a374
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VPartitionTupleBufferManager.java
@@ -0,0 +1,277 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.apache.hyracks.api.comm.FixedSizeFrame;
+import org.apache.hyracks.api.comm.FrameHelper;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksFrameMgrContext;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FixedSizeFrameTupleAppender;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+/**
+ * This buffer manager will dived the buffers into given number of partitions.
+ * The cleared partition (spilled one in the caller side) can only get no more than one frame.
+ */
+public class VPartitionTupleBufferManager implements IPartitionedTupleBufferManager {
+
+    private IDeallocatableFramePool framePool;
+    private IFrameBufferManager[] partitionArray;
+    private int[] numTuples;
+    private final FixedSizeFrame appendFrame;
+    private final FixedSizeFrameTupleAppender appender;
+    private BufferInfo tempInfo;
+    private final IPartitionedMemoryConstrain constrain;
+
+    public VPartitionTupleBufferManager(IHyracksFrameMgrContext ctx, IPartitionedMemoryConstrain constrain,
+            int partitions, int frameLimitInBytes) throws HyracksDataException {
+        this.constrain = constrain;
+        this.framePool = new DeallocatableFramePool(ctx, frameLimitInBytes);
+        this.partitionArray = new IFrameBufferManager[partitions];
+        this.numTuples = new int[partitions];
+        this.appendFrame = new FixedSizeFrame();
+        this.appender = new FixedSizeFrameTupleAppender();
+        this.tempInfo = new BufferInfo(null, -1, -1);
+    }
+
+    @Override
+    public void reset() throws HyracksDataException {
+        for (IFrameBufferManager part : partitionArray) {
+            if (part != null) {
+                for (int i = 0; i < part.getNumFrames(); i++) {
+                    framePool.deAllocateBuffer(part.getFrame(i, tempInfo).getBuffer());
+                }
+                part.reset();
+            }
+        }
+        Arrays.fill(numTuples, 0);
+        appendFrame.reset(null);
+    }
+
+    @Override
+    public int getNumPartitions() {
+        return partitionArray.length;
+    }
+
+    @Override
+    public int getNumTuples(int partition) {
+        return numTuples[partition];
+    }
+
+    @Override
+    public int getPhysicalSize(int partitionId) {
+        int size = 0;
+        IFrameBufferManager partition = partitionArray[partitionId];
+        if (partition != null) {
+            for (int i = 0; i < partition.getNumFrames(); ++i) {
+                size += partition.getFrame(i, tempInfo).getLength();
+            }
+        }
+        return size;
+    }
+
+    @Override
+    public void clearPartition(int partitionId) throws HyracksDataException {
+        IFrameBufferManager partition = partitionArray[partitionId];
+        if (partition != null) {
+            for (int i = 0; i < partition.getNumFrames(); ++i) {
+                framePool.deAllocateBuffer(partition.getFrame(i, tempInfo).getBuffer());
+            }
+        }
+        partitionArray[partitionId].reset();
+        numTuples[partitionId] = 0;
+    }
+
+    @Override
+    public boolean insertTuple(int partition, byte[] byteArray, int[] fieldEndOffsets, int start, int size,
+            TuplePointer pointer) throws HyracksDataException {
+        int actualSize = calculateActualSize(fieldEndOffsets, size);
+        int fid = getLastBufferOrCreateNewIfNotExist(partition, actualSize);
+        if (fid < 0) {
+            return false;
+        }
+        partitionArray[partition].getFrame(fid, tempInfo);
+        int tid = appendTupleToBuffer(tempInfo, fieldEndOffsets, byteArray, start, size);
+        if (tid < 0) {
+            if (partitionArray[partition].getNumFrames() >= constrain.frameLimit(partition)) {
+                return false;
+            }
+            fid = createNewBuffer(partition, actualSize);
+            if (fid < 0) {
+                return false;
+            }
+            partitionArray[partition].getFrame(fid, tempInfo);
+            tid = appendTupleToBuffer(tempInfo, fieldEndOffsets, byteArray, start, size);
+        }
+        pointer.reset(makeGroupFrameId(partition, fid), tid);
+        numTuples[partition]++;
+        return true;
+    }
+
+    @Override
+    public boolean insertTuple(int partition, IFrameTupleAccessor tupleAccessor, int tupleId, TuplePointer pointer)
+            throws HyracksDataException {
+        return insertTuple(partition, tupleAccessor.getBuffer().array(), null,
+                tupleAccessor.getTupleStartOffset(tupleId), tupleAccessor.getTupleLength(tupleId), pointer);
+    }
+
+    private static int calculateActualSize(int[] fieldEndOffsets, int size) {
+        if (fieldEndOffsets != null) {
+            return FrameHelper.calcRequiredSpace(fieldEndOffsets.length, size);
+        }
+        return FrameHelper.calcRequiredSpace(0, size);
+    }
+
+    private int makeGroupFrameId(int partition, int fid) {
+        return fid * getNumPartitions() + partition;
+    }
+
+    private int parsePartitionId(int externalFrameId) {
+        return externalFrameId % getNumPartitions();
+    }
+
+    private int parseFrameIdInPartition(int externalFrameId) {
+        return externalFrameId / getNumPartitions();
+    }
+
+    private int createNewBuffer(int partition, int size) throws HyracksDataException {
+        ByteBuffer newBuffer = requestNewBufferFromPool(size);
+        if (newBuffer == null) {
+            return -1;
+        }
+        appendFrame.reset(newBuffer);
+        appender.reset(appendFrame, true);
+        return partitionArray[partition].insertFrame(newBuffer);
+    }
+
+    private ByteBuffer requestNewBufferFromPool(int recordSize) throws HyracksDataException {
+        int frameSize = FrameHelper.calcAlignedFrameSizeToStore(0, recordSize, framePool.getMinFrameSize());
+        return framePool.allocateFrame(frameSize);
+    }
+
+    private int appendTupleToBuffer(BufferInfo bufferInfo, int[] fieldEndOffsets, byte[] byteArray, int start, int size)
+            throws HyracksDataException {
+        assert (bufferInfo.getStartOffset() == 0) : "Haven't supported yet in FrameTupleAppender";
+        if (bufferInfo.getBuffer() != appendFrame.getBuffer()) {
+            appendFrame.reset(bufferInfo.getBuffer());
+            appender.reset(appendFrame, false);
+        }
+        if (fieldEndOffsets == null) {
+            if (appender.append(byteArray, start, size)) {
+                return appender.getTupleCount() - 1;
+            }
+        } else {
+            if (appender.append(fieldEndOffsets, byteArray, start, size)) {
+                return appender.getTupleCount() - 1;
+            }
+        }
+
+        return -1;
+    }
+
+    private int getLastBufferOrCreateNewIfNotExist(int partition, int actualSize) throws HyracksDataException {
+        if (partitionArray[partition] == null || partitionArray[partition].getNumFrames() == 0) {
+            partitionArray[partition] = new PartitionFrameBufferManager();
+            return createNewBuffer(partition, actualSize);
+        }
+        return partitionArray[partition].getNumFrames() - 1;
+    }
+
+    @Override
+    public void close() {
+        framePool.close();
+        Arrays.fill(partitionArray, null);
+    }
+
+    private static class PartitionFrameBufferManager implements IFrameBufferManager {
+
+        ArrayList<ByteBuffer> buffers = new ArrayList<>();
+
+        @Override
+        public void reset() throws HyracksDataException {
+            buffers.clear();
+        }
+
+        @Override
+        public BufferInfo getFrame(int frameIndex, BufferInfo returnedInfo) {
+            returnedInfo.reset(buffers.get(frameIndex), 0, buffers.get(frameIndex).capacity());
+            return returnedInfo;
+        }
+
+        @Override
+        public int getNumFrames() {
+            return buffers.size();
+        }
+
+        @Override
+        public int insertFrame(ByteBuffer frame) throws HyracksDataException {
+            buffers.add(frame);
+            return buffers.size() - 1;
+        }
+
+        @Override
+        public void close() {
+            buffers = null;
+        }
+
+    }
+
+    @Override
+    public ITuplePointerAccessor getTupleAccessor(final RecordDescriptor recordDescriptor) {
+        return new AbstractTuplePointerAccessor() {
+            FrameTupleAccessor innerAccessor = new FrameTupleAccessor(recordDescriptor);
+
+            @Override
+            IFrameTupleAccessor getInnerAccessor() {
+                return innerAccessor;
+            }
+
+            @Override
+            void resetInnerAccessor(TuplePointer tuplePointer) {
+                partitionArray[parsePartitionId(tuplePointer.frameIndex)]
+                        .getFrame(parseFrameIdInPartition(tuplePointer.frameIndex), tempInfo);
+                innerAccessor.reset(tempInfo.getBuffer(), tempInfo.getStartOffset(), tempInfo.getLength());
+            }
+        };
+    }
+
+    @Override
+    public void flushPartition(int pid, IFrameWriter writer) throws HyracksDataException {
+        IFrameBufferManager partition = partitionArray[pid];
+        if (partition != null && getNumTuples(pid) > 0) {
+            for (int i = 0; i < partition.getNumFrames(); ++i) {
+                partition.getFrame(i, tempInfo);
+                tempInfo.getBuffer().position(tempInfo.getStartOffset());
+                tempInfo.getBuffer().limit(tempInfo.getStartOffset() + tempInfo.getLength());
+                writer.nextFrame(tempInfo.getBuffer());
+            }
+        }
+
+    }
+
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableTupleMemoryManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java
similarity index 82%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableTupleMemoryManager.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java
index 20642bf..4359e49 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableTupleMemoryManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableDeletableTupleMemoryManager.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -31,9 +31,12 @@
 import org.apache.hyracks.dataflow.std.sort.util.IAppendDeletableFrameTupleAccessor;
 import org.apache.hyracks.dataflow.std.structures.TuplePointer;
 
-public class VariableTupleMemoryManager implements ITupleBufferManager {
+/**
+ * Enable the delete record operation in the memory management. This is only used in the {@link org.apache.hyracks.dataflow.std.sort.HeapSortRunGenerator}
+ */
+public class VariableDeletableTupleMemoryManager implements IDeletableTupleBufferManager {
 
-    private final static Logger LOG = Logger.getLogger(VariableTupleMemoryManager.class.getName());
+    private final static Logger LOG = Logger.getLogger(VariableDeletableTupleMemoryManager.class.getName());
 
     private final int MIN_FREE_SPACE;
     private final IFramePool pool;
@@ -44,7 +47,7 @@
     private int numTuples;
     private int statsReOrg;
 
-    public VariableTupleMemoryManager(IFramePool framePool, RecordDescriptor recordDescriptor) {
+    public VariableDeletableTupleMemoryManager(IFramePool framePool, RecordDescriptor recordDescriptor) {
         this.pool = framePool;
         int maxFrames = framePool.getMemoryBudgetBytes() / framePool.getMinFrameSize();
         this.policy = new FrameFreeSlotLastFit(maxFrames);
@@ -165,41 +168,19 @@
     }
 
     @Override
-    public ITupleBufferAccessor getTupleAccessor() {
-        return new ITupleBufferAccessor() {
+    public ITuplePointerAccessor createTupleAccessor() {
+        return new AbstractTuplePointerAccessor() {
             private IAppendDeletableFrameTupleAccessor bufferAccessor = new DeletableFrameTupleAppender(
                     recordDescriptor);
-            private int tid;
 
             @Override
-            public void reset(TuplePointer tuplePointer) {
+            IFrameTupleAccessor getInnerAccessor() {
+                return bufferAccessor;
+            }
+
+            @Override
+            void resetInnerAccessor(TuplePointer tuplePointer) {
                 bufferAccessor.reset(frames.get(tuplePointer.frameIndex));
-                tid = tuplePointer.tupleIndex;
-            }
-
-            @Override
-            public ByteBuffer getTupleBuffer() {
-                return bufferAccessor.getBuffer();
-            }
-
-            @Override
-            public int getTupleStartOffset() {
-                return bufferAccessor.getTupleStartOffset(tid);
-            }
-
-            @Override
-            public int getTupleLength() {
-                return bufferAccessor.getTupleLength(tid);
-            }
-
-            @Override
-            public int getAbsFieldStartOffset(int fieldId) {
-                return bufferAccessor.getAbsoluteFieldStartOffset(tid, fieldId);
-            }
-
-            @Override
-            public int getFieldLength(int fieldId) {
-                return bufferAccessor.getFieldLength(tid, fieldId);
             }
         };
     }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFrameMemoryManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFrameMemoryManager.java
similarity index 64%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFrameMemoryManager.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFrameMemoryManager.java
index 444b0b6..fe7de23 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFrameMemoryManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFrameMemoryManager.java
@@ -17,53 +17,38 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.hyracks.api.comm.FixedSizeFrame;
 import org.apache.hyracks.api.comm.FrameHelper;
-import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
 
 public class VariableFrameMemoryManager implements IFrameBufferManager {
 
-    private class PhysicalFrameOffset {
-        IFrame physicalFrame;
+    class PhysicalFrameOffset {
+        ByteBuffer physicalFrame;
         int physicalOffset;
 
-        PhysicalFrameOffset(IFrame frame, int offset) {
+        PhysicalFrameOffset(ByteBuffer frame, int offset) {
             physicalFrame = frame;
             physicalOffset = offset;
         }
     }
 
-    private class LogicalFrameStartSize {
-        ByteBuffer logicalFrame;
-        int logicalStart;
-        int logicalSize;
-
-        LogicalFrameStartSize(ByteBuffer frame, int start, int size) {
-            logicalFrame = frame;
-            logicalStart = start;
-            logicalSize = size;
-        }
-    }
-
     private final IFramePool framePool;
     private List<PhysicalFrameOffset> physicalFrameOffsets;
-    private List<LogicalFrameStartSize> logicalFrameStartSizes;
+    private List<BufferInfo> logicalFrameStartSizes;
     private final IFrameFreeSlotPolicy freeSlotPolicy;
 
     public VariableFrameMemoryManager(IFramePool framePool, IFrameFreeSlotPolicy freeSlotPolicy) {
         this.framePool = framePool;
         this.freeSlotPolicy = freeSlotPolicy;
-        int maxFrames = framePool.getMemoryBudgetBytes() / framePool.getMinFrameSize();
-        this.physicalFrameOffsets = new ArrayList<>(maxFrames);
-        this.logicalFrameStartSizes = new ArrayList<>(maxFrames);
+        this.physicalFrameOffsets = new ArrayList<>();
+        this.logicalFrameStartSizes = new ArrayList<>();
     }
 
     private int findAvailableFrame(int frameSize) throws HyracksDataException {
@@ -74,7 +59,7 @@
         ByteBuffer buffer = framePool.allocateFrame(frameSize);
         if (buffer != null) {
             IntSerDeUtils.putInt(buffer.array(), FrameHelper.getTupleCountOffset(buffer.capacity()), 0);
-            physicalFrameOffsets.add(new PhysicalFrameOffset(new FixedSizeFrame(buffer), 0));
+            physicalFrameOffsets.add(new PhysicalFrameOffset(buffer, 0));
             return physicalFrameOffsets.size() - 1;
         }
         return -1;
@@ -89,18 +74,9 @@
     }
 
     @Override
-    public ByteBuffer getFrame(int frameIndex) {
-        return logicalFrameStartSizes.get(frameIndex).logicalFrame;
-    }
-
-    @Override
-    public int getFrameStartOffset(int frameIndex) {
-        return logicalFrameStartSizes.get(frameIndex).logicalStart;
-    }
-
-    @Override
-    public int getFrameSize(int frameIndex) {
-        return logicalFrameStartSizes.get(frameIndex).logicalSize;
+    public BufferInfo getFrame(int frameIndex, BufferInfo info) {
+        info.reset(logicalFrameStartSizes.get(frameIndex));
+        return info;
     }
 
     @Override
@@ -115,14 +91,15 @@
         if (physicalFrameId < 0) {
             return -1;
         }
-        ByteBuffer buffer = physicalFrameOffsets.get(physicalFrameId).physicalFrame.getBuffer();
-        int offset = physicalFrameOffsets.get(physicalFrameId).physicalOffset;
+        PhysicalFrameOffset frameOffset = physicalFrameOffsets.get(physicalFrameId);
+        ByteBuffer buffer = frameOffset.physicalFrame;
+        int offset = frameOffset.physicalOffset;
         System.arraycopy(frame.array(), 0, buffer.array(), offset, frameSize);
         if (offset + frameSize < buffer.capacity()) {
             freeSlotPolicy.pushNewFrame(physicalFrameId, buffer.capacity() - offset - frameSize);
         }
-        physicalFrameOffsets.get(physicalFrameId).physicalOffset = offset + frameSize;
-        logicalFrameStartSizes.add(new LogicalFrameStartSize(buffer, offset, frameSize));
+        frameOffset.physicalOffset = offset + frameSize;
+        logicalFrameStartSizes.add(new BufferInfo(buffer, offset, frameSize));
         return logicalFrameStartSizes.size() - 1;
     }
 
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramePool.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramePool.java
similarity index 88%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramePool.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramePool.java
index 344f961..f83eb8b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramePool.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramePool.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -37,14 +37,15 @@
     private final int memBudget;
 
     private int allocateMem;
-    private ArrayList<ByteBuffer> buffers;  // the unused slots were sorted by size increasingly.
+    private ArrayList<ByteBuffer> buffers; // the unused slots were sorted by size increasingly.
     private BitSet used; // the merged one also marked as used.
 
     /**
      * The constructor of the VariableFramePool.
      *
      * @param ctx
-     * @param memBudgetInBytes the given memory budgets to allocate the frames. If it less than 0, it will be treated as unlimited budgets
+     * @param memBudgetInBytes
+     *            the given memory budgets to allocate the frames. If it less than 0, it will be treated as unlimited budgets
      */
     public VariableFramePool(IHyracksFrameMgrContext ctx, int memBudgetInBytes) {
         this.ctx = ctx;
@@ -88,17 +89,17 @@
         return frameSize + allocateMem <= memBudget;
     }
 
-    private static int getFirstUnUsedPos(BitSet used) {
+    private static int getFirstUnusedPos(BitSet used) {
         return used.nextClearBit(0);
     }
 
-    private static int getLastUnUsedPos(BitSet used, int lastPos) {
+    private static int getLastUnusedPos(BitSet used, int lastPos) {
         return used.previousClearBit(lastPos);
     }
 
     private static int binarySearchUnusedBuffer(ArrayList<ByteBuffer> buffers, BitSet used, int frameSize) {
-        int l = getFirstUnUsedPos(used); // to skip the merged null buffers
-        int h = getLastUnUsedPos(used, (buffers.size() - 1)) + 1; // to skip the newly created buffers
+        int l = getFirstUnusedPos(used); // to skip the merged null buffers
+        int h = getLastUnusedPos(used, (buffers.size() - 1)) + 1; // to skip the newly created buffers
         if (l >= h) {
             return -1;
         }
@@ -147,8 +148,8 @@
      */
     private ByteBuffer mergeExistingFrames(int frameSize) throws HyracksDataException {
         int mergedSize = memBudget - allocateMem;
-        int highBound = getLastUnUsedPos(used, buffers.size() - 1) + 1;
-        for (int i = getFirstUnUsedPos(used); i < highBound; ++i) {
+        int highBound = getLastUnusedPos(used, buffers.size() - 1) + 1;
+        for (int i = getFirstUnusedPos(used); i < highBound; ++i) {
             if (!used.get(i)) {
                 mergedSize += deAllocateFrame(i);
                 if (mergedSize >= frameSize) {
@@ -176,7 +177,7 @@
     }
 
     private static void removeEmptySpot(List<ByteBuffer> buffers) {
-        for (int i = 0; i < buffers.size(); ) {
+        for (int i = 0; i < buffers.size();) {
             if (buffers.get(i) == null) {
                 buffers.remove(i);
             } else {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/AbstractPartitionCollector.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/AbstractPartitionCollector.java
index 0745343..b558ea3 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/AbstractPartitionCollector.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/AbstractPartitionCollector.java
@@ -50,4 +50,4 @@
     public int getReceiverIndex() {
         return receiverIndex;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionAcceptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionAcceptor.java
index 6023a5e..fe5fe61 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionAcceptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionAcceptor.java
@@ -23,4 +23,4 @@
 
 public interface IPartitionAcceptor {
     public void addPartition(PartitionId pid, IInputChannel channel);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionBatchManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionBatchManager.java
index 047bdc3..657769b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionBatchManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/IPartitionBatchManager.java
@@ -25,4 +25,4 @@
 
 public interface IPartitionBatchManager extends IPartitionAcceptor {
     public void getNextBatch(List<IFrameReader> batch, int size) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/InputChannelFrameReader.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/InputChannelFrameReader.java
index 5f63546..7ff280b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/InputChannelFrameReader.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/InputChannelFrameReader.java
@@ -57,7 +57,9 @@
             }
         }
         if (failed) {
-            throw new HyracksDataException("Failure occurred on input");
+            // Do not throw exception here to allow the root cause exception gets propagated to the master first.
+            // Return false to allow the nextFrame(...) call to be a non-op.
+            return false;
         }
         if (availableFrames <= 0 && eos) {
             return false;
@@ -67,12 +69,13 @@
     }
 
     /**
-     * This implementation works under the truth that one Channel is never shared by two readers.
+     * This implementation works under the truth that one Channel is neverNonDeterministicChannelReader shared by two readers.
      * More precisely, one channel only has exact one reader and one writer side.
      *
-     * @param frame outputFrame
+     * @param frame
+     *            outputFrame
      * @return {@code true} if succeed to read the data from the channel to the {@code frame}.
-     * Otherwise return {@code false} if the end of stream is reached.
+     *         Otherwise return {@code false} if the end of stream is reached.
      * @throws HyracksDataException
      */
     @Override
@@ -125,4 +128,4 @@
         eos = true;
         notifyAll();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java
index 6dc8d9a..0cc0170 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicChannelReader.java
@@ -106,7 +106,9 @@
                 return lastReadSender;
             }
             if (!failSenders.isEmpty()) {
-                throw new HyracksDataException("Failure occurred on input");
+                // Do not throw exception here to allow the root cause exception gets propagated to the master first.
+                // Return a negative value to allow the nextFrame(...) call to be a non-op.
+                return -1;
             }
             for (int i = eosSenders.nextSetBit(0); i >= 0; i = eosSenders.nextSetBit(i)) {
                 channels[i].close();
@@ -127,8 +129,8 @@
     }
 
     public synchronized void close() throws HyracksDataException {
-        for (int i = closedSenders.nextClearBit(0); i >= 0 && i < nSenderPartitions; i = closedSenders
-                .nextClearBit(i + 1)) {
+        for (int i = closedSenders.nextClearBit(0); i >= 0
+                && i < nSenderPartitions; i = closedSenders.nextClearBit(i + 1)) {
             if (channels[i] != null) {
                 channels[i].close();
                 channels[i] = null;
@@ -172,4 +174,4 @@
         eosSenders.set(senderIndex);
         notifyAll();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicFrameReader.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicFrameReader.java
index 91c29e2..94cec74 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicFrameReader.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicFrameReader.java
@@ -66,4 +66,4 @@
     public synchronized void close() throws HyracksDataException {
         channelReader.close();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java
index e33f59b..9b12e64 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/NonDeterministicPartitionBatchManager.java
@@ -79,4 +79,4 @@
         }
         this.batch = null;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/PartitionCollector.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/PartitionCollector.java
index e7f3678..6d653d2 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/PartitionCollector.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/PartitionCollector.java
@@ -82,4 +82,4 @@
     public void abort() {
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/SortMergeFrameReader.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/SortMergeFrameReader.java
index dd34445..4359b54 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/SortMergeFrameReader.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/collectors/SortMergeFrameReader.java
@@ -83,4 +83,4 @@
     public void close() throws HyracksDataException {
         merger.close();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java
index e6a3bb3..3e95bc6 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java
@@ -32,7 +32,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.examples.text.client.aggregation.helpers.ILocalityMap
      * #getConsumers(int, int)
@@ -58,7 +58,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.examples.text.client.aggregation.helpers.ILocalityMap
      * #getConsumerPartitionCount(int)
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java
index a4c47c4..44d77ac 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java
@@ -41,8 +41,8 @@
 
     private ITuplePartitionComputerFactory tpcf;
 
-    public LocalityAwareMToNPartitioningConnectorDescriptor(IConnectorDescriptorRegistry spec, ITuplePartitionComputerFactory tpcf,
-            ILocalityMap localityMap) {
+    public LocalityAwareMToNPartitioningConnectorDescriptor(IConnectorDescriptorRegistry spec,
+            ITuplePartitionComputerFactory tpcf, ILocalityMap localityMap) {
         super(spec);
         this.localityMap = localityMap;
         this.tpcf = tpcf;
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IConnectorDescriptor#createPartitioner
      * (org.apache.hyracks.api.context.IHyracksTaskContext,
@@ -60,14 +60,14 @@
     @Override
     public IFrameWriter createPartitioner(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
             IPartitionWriterFactory edwFactory, int index, int nProducerPartitions, int nConsumerPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         return new LocalityAwarePartitionDataWriter(ctx, edwFactory, recordDesc, tpcf.createPartitioner(),
                 nConsumerPartitions, localityMap, index);
     }
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.dataflow.IConnectorDescriptor#
      * createPartitionCollector
      * (org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
index 3e437e0..253b3e3 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
@@ -36,6 +36,7 @@
 public class LocalityAwarePartitionDataWriter implements IFrameWriter {
 
     private final IFrameWriter[] pWriters;
+    private final boolean[] isWriterOpen;
     private final IFrameTupleAppender[] appenders;
     private final FrameTupleAccessor tupleAccessor;
     private final ITuplePartitionComputer tpc;
@@ -46,6 +47,7 @@
         int[] consumerPartitions = localityMap.getConsumers(senderIndex, nConsumerPartitions);
         pWriters = new IFrameWriter[consumerPartitions.length];
         appenders = new IFrameTupleAppender[consumerPartitions.length];
+        isWriterOpen = new boolean[consumerPartitions.length];
         for (int i = 0; i < consumerPartitions.length; ++i) {
             try {
                 pWriters[i] = pwFactory.createFrameWriter(consumerPartitions[i]);
@@ -61,19 +63,20 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.comm.IFrameWriter#open()
      */
     @Override
     public void open() throws HyracksDataException {
         for (int i = 0; i < pWriters.length; ++i) {
+            isWriterOpen[i] = true;
             pWriters[i].open();
         }
     }
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.comm.IFrameWriter#nextFrame(java.nio.ByteBuffer)
      */
@@ -89,27 +92,70 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.comm.IFrameWriter#fail()
      */
     @Override
     public void fail() throws HyracksDataException {
+        HyracksDataException failException = null;
         for (int i = 0; i < appenders.length; ++i) {
-            pWriters[i].fail();
+            if (isWriterOpen[i]) {
+                try {
+                    pWriters[i].fail();
+                } catch (Throwable th) {
+                    if (failException == null) {
+                        failException = new HyracksDataException(th);
+                    } else {
+                        failException.addSuppressed(th);
+                    }
+                }
+            }
+        }
+        if (failException != null) {
+            throw failException;
         }
     }
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.comm.IFrameWriter#close()
      */
     @Override
     public void close() throws HyracksDataException {
+        HyracksDataException closeException = null;
         for (int i = 0; i < pWriters.length; ++i) {
-            appenders[i].flush(pWriters[i], true);
-            pWriters[i].close();
+            if (isWriterOpen[i]) {
+                try {
+                    appenders[i].write(pWriters[i], true);
+                } catch (Throwable th) {
+                    if (closeException == null) {
+                        closeException = new HyracksDataException(th);
+                    } else {
+                        closeException.addSuppressed(th);
+                    }
+                } finally {
+                    try {
+                        pWriters[i].close();
+                    } catch (Throwable th) {
+                        if (closeException == null) {
+                            closeException = new HyracksDataException(th);
+                        } else {
+                            closeException.addSuppressed(th);
+                        }
+                    }
+                }
+            }
+        }
+        if (closeException != null) {
+            throw closeException;
         }
     }
 
+    @Override
+    public void flush() throws HyracksDataException {
+        for (int i = 0; i < pWriters.length; ++i) {
+            appenders[i].flush(pWriters[i]);
+        }
+    }
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningConnectorDescriptor.java
index 22a4c1c..4872b95 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningConnectorDescriptor.java
@@ -35,7 +35,7 @@
 
 public class MToNPartitioningConnectorDescriptor extends AbstractMToNConnectorDescriptor {
     private static final long serialVersionUID = 1L;
-    private ITuplePartitionComputerFactory tpcf;
+    protected ITuplePartitionComputerFactory tpcf;
 
     public MToNPartitioningConnectorDescriptor(IConnectorDescriptorRegistry spec, ITuplePartitionComputerFactory tpcf) {
         super(spec);
@@ -45,15 +45,13 @@
     @Override
     public IFrameWriter createPartitioner(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
             IPartitionWriterFactory edwFactory, int index, int nProducerPartitions, int nConsumerPartitions)
-            throws HyracksDataException {
-        final PartitionDataWriter hashWriter = new PartitionDataWriter(ctx, nConsumerPartitions, edwFactory,
-                recordDesc, tpcf.createPartitioner());
-        return hashWriter;
+                    throws HyracksDataException {
+        return new PartitionDataWriter(ctx, nConsumerPartitions, edwFactory, recordDesc, tpcf.createPartitioner());
     }
 
     @Override
-    public IPartitionCollector createPartitionCollector(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
-            int index, int nProducerPartitions, int nConsumerPartitions) throws HyracksDataException {
+    public IPartitionCollector createPartitionCollector(IHyracksTaskContext ctx, RecordDescriptor recordDesc, int index,
+            int nProducerPartitions, int nConsumerPartitions) throws HyracksDataException {
         BitSet expectedPartitions = new BitSet(nProducerPartitions);
         expectedPartitions.set(0, nProducerPartitions);
         NonDeterministicChannelReader channelReader = new NonDeterministicChannelReader(nProducerPartitions,
@@ -61,4 +59,8 @@
         NonDeterministicFrameReader frameReader = new NonDeterministicFrameReader(channelReader);
         return new PartitionCollector(ctx, getConnectorId(), index, expectedPartitions, frameReader, channelReader);
     }
-}
\ No newline at end of file
+
+    public ITuplePartitionComputerFactory getTuplePartitionComputerFactory() {
+        return tpcf;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningMergingConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningMergingConnectorDescriptor.java
index 6dc3db8..04de894 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningMergingConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningMergingConnectorDescriptor.java
@@ -89,4 +89,4 @@
         expectedPartitions.set(0, nProducerPartitions);
         return new PartitionCollector(ctx, getConnectorId(), index, expectedPartitions, sortMergeFrameReader, pbm);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningWithMessageConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningWithMessageConnectorDescriptor.java
new file mode 100644
index 0000000..e90d8b0
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNPartitioningWithMessageConnectorDescriptor.java
@@ -0,0 +1,45 @@
+/*
+ * 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.hyracks.dataflow.std.connectors;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.comm.IPartitionWriterFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.IConnectorDescriptorRegistry;
+
+public class MToNPartitioningWithMessageConnectorDescriptor extends MToNPartitioningConnectorDescriptor {
+
+    private static final long serialVersionUID = 1L;
+
+    public MToNPartitioningWithMessageConnectorDescriptor(IConnectorDescriptorRegistry spec,
+            ITuplePartitionComputerFactory tpcf) {
+        super(spec, tpcf);
+    }
+
+    @Override
+    public IFrameWriter createPartitioner(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
+            IPartitionWriterFactory edwFactory, int index, int nProducerPartitions, int nConsumerPartitions)
+                    throws HyracksDataException {
+        return new PartitionWithMessageDataWriter(ctx, nConsumerPartitions, edwFactory, recordDesc,
+                tpcf.createPartitioner());
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNReplicatingConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNReplicatingConnectorDescriptor.java
index 1730b22..7d60ce5 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNReplicatingConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/MToNReplicatingConnectorDescriptor.java
@@ -43,18 +43,22 @@
     @Override
     public IFrameWriter createPartitioner(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
             IPartitionWriterFactory edwFactory, int index, int nProducerPartitions, int nConsumerPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         final IFrameWriter[] epWriters = new IFrameWriter[nConsumerPartitions];
+        final boolean[] isOpen = new boolean[nConsumerPartitions];
         for (int i = 0; i < nConsumerPartitions; ++i) {
             epWriters[i] = edwFactory.createFrameWriter(i);
         }
         return new IFrameWriter() {
             @Override
             public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-                buffer.mark();
+                // Record the current position, instead of using buffer.mark().
+                // The latter will be problematic because epWriters[i].nextFrame(buffer)
+                // can flip or clear the buffer.
+                int pos = buffer.position();
                 for (int i = 0; i < epWriters.length; ++i) {
                     if (i != 0) {
-                        buffer.reset();
+                        buffer.position(pos);
                     }
                     epWriters[i].nextFrame(buffer);
                 }
@@ -62,30 +66,66 @@
 
             @Override
             public void fail() throws HyracksDataException {
+                HyracksDataException failException = null;
                 for (int i = 0; i < epWriters.length; ++i) {
-                    epWriters[i].fail();
+                    if (isOpen[i]) {
+                        try {
+                            epWriters[i].fail();
+                        } catch (Throwable th) {
+                            if (failException == null) {
+                                failException = new HyracksDataException(th);
+                            } else {
+                                failException.addSuppressed(th);
+                            }
+                        }
+                    }
+                }
+                if (failException != null) {
+                    throw failException;
                 }
             }
 
             @Override
             public void close() throws HyracksDataException {
+                HyracksDataException closeException = null;
                 for (int i = 0; i < epWriters.length; ++i) {
-                    epWriters[i].close();
+                    if (isOpen[i]) {
+                        try {
+                            epWriters[i].close();
+                        } catch (Throwable th) {
+                            if (closeException == null) {
+                                closeException = new HyracksDataException(th);
+                            } else {
+                                closeException.addSuppressed(th);
+                            }
+                        }
+                    }
+                }
+                if (closeException != null) {
+                    throw closeException;
                 }
             }
 
             @Override
             public void open() throws HyracksDataException {
                 for (int i = 0; i < epWriters.length; ++i) {
+                    isOpen[i] = true;
                     epWriters[i].open();
                 }
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                for (IFrameWriter writer : epWriters) {
+                    writer.flush();
+                }
+            }
         };
     }
 
     @Override
-    public IPartitionCollector createPartitionCollector(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
-            int index, int nProducerPartitions, int nConsumerPartitions) throws HyracksDataException {
+    public IPartitionCollector createPartitionCollector(IHyracksTaskContext ctx, RecordDescriptor recordDesc, int index,
+            int nProducerPartitions, int nConsumerPartitions) throws HyracksDataException {
         BitSet expectedPartitions = new BitSet(nProducerPartitions);
         expectedPartitions.set(0, nProducerPartitions);
         NonDeterministicChannelReader channelReader = new NonDeterministicChannelReader(nProducerPartitions,
@@ -93,4 +133,4 @@
         NonDeterministicFrameReader frameReader = new NonDeterministicFrameReader(channelReader);
         return new PartitionCollector(ctx, getConnectorId(), index, expectedPartitions, frameReader, channelReader);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/OneToOneConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/OneToOneConnectorDescriptor.java
index cfa0cf9..e0c886f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/OneToOneConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/OneToOneConnectorDescriptor.java
@@ -48,13 +48,13 @@
     @Override
     public IFrameWriter createPartitioner(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
             IPartitionWriterFactory edwFactory, int index, int nProducerPartitions, int nConsumerPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         return edwFactory.createFrameWriter(index);
     }
 
     @Override
-    public IPartitionCollector createPartitionCollector(IHyracksTaskContext ctx, RecordDescriptor recordDesc,
-            int index, int nProducerPartitions, int nConsumerPartitions) throws HyracksDataException {
+    public IPartitionCollector createPartitionCollector(IHyracksTaskContext ctx, RecordDescriptor recordDesc, int index,
+            int nProducerPartitions, int nConsumerPartitions) throws HyracksDataException {
         BitSet expectedPartitions = new BitSet(nProducerPartitions);
         expectedPartitions.set(index);
         NonDeterministicChannelReader channelReader = new NonDeterministicChannelReader(nProducerPartitions,
@@ -69,8 +69,8 @@
         OperatorDescriptorId consumer = ac.getConsumerActivity(getConnectorId()).getOperatorDescriptorId();
         OperatorDescriptorId producer = ac.getProducerActivity(getConnectorId()).getOperatorDescriptorId();
 
-        constraintAcceptor.addConstraint(new Constraint(new PartitionCountExpression(consumer),
-                new PartitionCountExpression(producer)));
+        constraintAcceptor.addConstraint(
+                new Constraint(new PartitionCountExpression(consumer), new PartitionCountExpression(producer)));
     }
 
     @Override
@@ -91,4 +91,4 @@
     public boolean allProducersToAllConsumers() {
         return false;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionDataWriter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionDataWriter.java
index 08df2c5..f84c3e4 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionDataWriter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionDataWriter.java
@@ -35,6 +35,7 @@
 public class PartitionDataWriter implements IFrameWriter {
     private final int consumerPartitionCount;
     private final IFrameWriter[] pWriters;
+    private final boolean[] isOpen;
     private final FrameTupleAppender[] appenders;
     private final FrameTupleAccessor tupleAccessor;
     private final ITuplePartitionComputer tpc;
@@ -45,11 +46,12 @@
             RecordDescriptor recordDescriptor, ITuplePartitionComputer tpc) throws HyracksDataException {
         this.consumerPartitionCount = consumerPartitionCount;
         pWriters = new IFrameWriter[consumerPartitionCount];
+        isOpen = new boolean[consumerPartitionCount];
         appenders = new FrameTupleAppender[consumerPartitionCount];
         for (int i = 0; i < consumerPartitionCount; ++i) {
             try {
                 pWriters[i] = pwFactory.createFrameWriter(i);
-                appenders[i] = new FrameTupleAppender();
+                appenders[i] = createTupleAppender(ctx);
             } catch (IOException e) {
                 throw new HyracksDataException(e);
             }
@@ -59,19 +61,46 @@
         this.ctx = ctx;
     }
 
+    protected FrameTupleAppender createTupleAppender(IHyracksTaskContext ctx) {
+        return new FrameTupleAppender();
+    }
+
     @Override
     public void close() throws HyracksDataException {
+        HyracksDataException closeException = null;
         for (int i = 0; i < pWriters.length; ++i) {
-            if (allocatedFrame) {
-                appenders[i].flush(pWriters[i], true);
+            if (isOpen[i]) {
+                if (allocatedFrame) {
+                    try {
+                        appenders[i].write(pWriters[i], true);
+                    } catch (Throwable th) {
+                        if (closeException == null) {
+                            closeException = new HyracksDataException(th);
+                        } else {
+                            closeException.addSuppressed(th);
+                        }
+                    }
+                }
+                try {
+                    pWriters[i].close();
+                } catch (Throwable th) {
+                    if (closeException == null) {
+                        closeException = new HyracksDataException(th);
+                    } else {
+                        closeException.addSuppressed(th);
+                    }
+                }
             }
-            pWriters[i].close();
+        }
+        if (closeException != null) {
+            throw closeException;
         }
     }
 
     @Override
     public void open() throws HyracksDataException {
         for (int i = 0; i < pWriters.length; ++i) {
+            isOpen[i] = true;
             pWriters[i].open();
         }
     }
@@ -87,7 +116,6 @@
         for (int i = 0; i < tupleCount; ++i) {
             int h = tpc.partition(tupleAccessor, i, consumerPartitionCount);
             FrameUtils.appendToWriter(pWriters[h], appenders[h], tupleAccessor, i);
-
         }
     }
 
@@ -99,8 +127,29 @@
 
     @Override
     public void fail() throws HyracksDataException {
+        HyracksDataException failException = null;
         for (int i = 0; i < appenders.length; ++i) {
-            pWriters[i].fail();
+            if (isOpen[i]) {
+                try {
+                    pWriters[i].fail();
+                } catch (Throwable th) {
+                    if (failException == null) {
+                        failException = new HyracksDataException(th);
+                    } else {
+                        failException.addSuppressed(th);
+                    }
+                }
+            }
+        }
+        if (failException != null) {
+            throw failException;
+        }
+    }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        for (int i = 0; i < consumerPartitionCount; i++) {
+            appenders[i].flush(pWriters[i]);
         }
     }
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionWithMessageDataWriter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionWithMessageDataWriter.java
new file mode 100644
index 0000000..4055fb0
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/PartitionWithMessageDataWriter.java
@@ -0,0 +1,41 @@
+/*
+ * 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.hyracks.dataflow.std.connectors;
+
+import org.apache.hyracks.api.comm.IPartitionWriterFactory;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.io.MessagingFrameTupleAppender;
+
+public class PartitionWithMessageDataWriter extends PartitionDataWriter {
+
+    public PartitionWithMessageDataWriter(IHyracksTaskContext ctx, int consumerPartitionCount,
+            IPartitionWriterFactory pwFactory, RecordDescriptor recordDescriptor, ITuplePartitionComputer tpc)
+                    throws HyracksDataException {
+        super(ctx, consumerPartitionCount, pwFactory, recordDescriptor, tpc);
+    }
+
+    @Override
+    protected FrameTupleAppender createTupleAppender(IHyracksTaskContext ctx) {
+        return new MessagingFrameTupleAppender(ctx);
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java
index 24b3bf9..189a3a1 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractDeserializedFileScanOperatorDescriptor.java
@@ -108,6 +108,11 @@
         public void fail() throws HyracksDataException {
             // do nothing
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+            // do nothing
+        }
     }
 
     @Override
@@ -115,4 +120,4 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         return new DeserializedOperatorNodePushable(ctx, new DeserializedFileScanOperator(partition), null);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractFileWriteOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractFileWriteOperatorDescriptor.java
index 8228367..6b0ee4d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractFileWriteOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/AbstractFileWriteOperatorDescriptor.java
@@ -70,6 +70,11 @@
                 throw new HyracksDataException(e);
             }
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+            // This is a kind of a sink operator and hence, flush() is a no op
+        }
     }
 
     private static final long serialVersionUID = 1L;
@@ -97,4 +102,4 @@
         return new DeserializedOperatorNodePushable(ctx, new FileWriteOperator(partition),
                 recordDescProvider.getInputRecordDescriptor(getActivityId(), 0));
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ConstantFileSplitProvider.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ConstantFileSplitProvider.java
index ac55fdb..028a91a 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ConstantFileSplitProvider.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ConstantFileSplitProvider.java
@@ -30,4 +30,4 @@
     public FileSplit[] getFileSplits() {
         return splits;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java
index 1a37f3c..d121ec4 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/DelimitedDataTupleParserFactory.java
@@ -87,7 +87,7 @@
                         FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0,
                                 tb.getSize());
                     }
-                    appender.flush(writer, true);
+                    appender.write(writer, true);
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FieldCursorForDelimitedDataParser.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FieldCursorForDelimitedDataParser.java
index e7f53bc..7e5ee2c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FieldCursorForDelimitedDataParser.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FieldCursorForDelimitedDataParser.java
@@ -25,45 +25,48 @@
 public class FieldCursorForDelimitedDataParser {
 
     private enum State {
-        INIT,
-        IN_RECORD,
-        EOR,
-        CR,
-        EOF
+        INIT, //initial state
+        IN_RECORD, //cursor is inside record
+        EOR, //cursor is at end of record
+        CR, //cursor at carriage return
+        EOF //end of stream reached
     }
 
-    // public variables will be used by delimited data parser
-    public char[] buffer;
-    public int fStart;
-    public int fEnd;
-    public int recordCount;
-    public int fieldCount;
-    public int doubleQuoteCount;
-    public boolean isDoubleQuoteIncludedInThisField;
+    public char[] buffer; //buffer to holds the input coming form the underlying input stream
+    public int fStart; //start position for field
+    public int fEnd; //end position for field
+    public int recordCount; //count of records
+    public int fieldCount; //count of fields in current record
+    public int doubleQuoteCount; //count of double quotes
+    public boolean isDoubleQuoteIncludedInThisField; //does current field include double quotes
 
-    private static final int INITIAL_BUFFER_SIZE = 4096;
-    private static final int INCREMENT = 4096;
+    private static final int INITIAL_BUFFER_SIZE = 4096;//initial buffer size
+    private static final int INCREMENT = 4096; //increment size
 
-    private final Reader in;
+    private Reader in; //the underlying buffer
 
-    private int start;
-    private int end;
-    private State state;
+    private int start; //start of valid buffer area
+    private int end; //end of valid buffer area
+    private State state; //state (see states above)
 
-    private int lastQuotePosition;
-    private int lastDoubleQuotePosition;
-    private int lastDelimiterPosition;
-    private int quoteCount;
-    private boolean startedQuote;
+    private int lastQuotePosition; //position of last quote
+    private int lastDoubleQuotePosition; //position of last double quote
+    private int lastDelimiterPosition; //position of last delimiter
+    private int quoteCount; //count of single quotes
+    private boolean startedQuote; //whether a quote has been started
 
-    private char quote;
-    private char fieldDelimiter;
+    private char quote; //the quote character
+    private char fieldDelimiter; //the delimiter
 
     public FieldCursorForDelimitedDataParser(Reader in, char fieldDelimiter, char quote) {
         this.in = in;
-        buffer = new char[INITIAL_BUFFER_SIZE];
+        if (in != null) {
+            buffer = new char[INITIAL_BUFFER_SIZE];
+            end = 0;
+        } else {
+            end = Integer.MAX_VALUE;
+        }
         start = 0;
-        end = 0;
         state = State.INIT;
         this.quote = quote;
         this.fieldDelimiter = fieldDelimiter;
@@ -78,6 +81,15 @@
         fieldCount = 0;
     }
 
+    public void nextRecord(char[] buffer, int recordLength) throws IOException {
+        recordCount++;
+        fieldCount = 0;
+        start = 0;
+        end = recordLength;
+        state = State.IN_RECORD;
+        this.buffer = buffer;
+    }
+
     public boolean nextRecord() throws IOException {
         recordCount++;
         fieldCount = 0;
@@ -224,12 +236,8 @@
                                 startedQuote = true;
                             } else {
                                 // In this case, we don't have a quote in the beginning of a field.
-                                throw new IOException(
-                                        "At record: "
-                                                + recordCount
-                                                + ", field#: "
-                                                + fieldCount
-                                                + " - a quote enclosing a field needs to be placed in the beginning of that field.");
+                                throw new IOException("At record: " + recordCount + ", field#: " + fieldCount
+                                        + " - a quote enclosing a field needs to be placed in the beginning of that field.");
                             }
                         }
                         // Check double quotes - "". We check [start != p-2]
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java
index 6e274d5..cf2008c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileRemoveOperatorDescriptor.java
@@ -23,13 +23,13 @@
 import java.io.IOException;
 
 import org.apache.commons.io.FileUtils;
-
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
 import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.IIOManager;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.dataflow.std.base.AbstractOperatorNodePushable;
 import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
@@ -49,6 +49,9 @@
     public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
         final FileSplit split = fileSplitProvider.getFileSplits()[partition];
+        final String path = split.getLocalFile().getFile().getPath();
+        final int deviceId = split.getIODeviceId();
+        final IIOManager ioManager = ctx.getIOManager();
         return new AbstractOperatorNodePushable() {
 
             @Override
@@ -58,7 +61,7 @@
 
             @Override
             public void initialize() throws HyracksDataException {
-                File f = split.getLocalFile().getFile();
+                File f = ioManager.getAbsoluteFileRef(deviceId, path).getFile();
                 try {
                     FileUtils.deleteDirectory(f);
                 } catch (IOException e) {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java
index f94d985..5a3d776 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileScanOperatorDescriptor.java
@@ -56,8 +56,8 @@
             @Override
             public void initialize() throws HyracksDataException {
                 File f = split.getLocalFile().getFile();
-                writer.open();
                 try {
+                    writer.open();
                     InputStream in;
                     try {
                         in = new FileInputStream(f);
@@ -66,13 +66,13 @@
                         throw new HyracksDataException(e);
                     }
                     tp.parse(in, writer);
-                } catch (Exception e) {
+                } catch (Throwable th) {
                     writer.fail();
-                    throw new HyracksDataException(e);
+                    throw new HyracksDataException(th);
                 } finally {
                     writer.close();
                 }
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileSplit.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileSplit.java
index 07462dd..b201acd 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileSplit.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FileSplit.java
@@ -25,27 +25,37 @@
 
 public class FileSplit implements Serializable {
     private static final long serialVersionUID = 1L;
-
-    private final String nodeName;
     private final FileReference file;
     private final int ioDeviceId;
+    private final int partition;
+    private final String nodeName;
 
     public FileSplit(String nodeName, FileReference file) {
         this.nodeName = nodeName;
         this.file = file;
         this.ioDeviceId = 0;
+        this.partition = -1;
     }
 
-    public FileSplit(String nodeName, FileReference file, int ioDeviceId) {
+    public FileSplit(String nodeName, FileReference file, int ioDeviceId, int partition) {
         this.nodeName = nodeName;
         this.file = file;
         this.ioDeviceId = ioDeviceId;
+        this.partition = partition;
+    }
+
+    public FileSplit(String nodeName, String path, int ioDeviceId) {
+        this.nodeName = nodeName;
+        this.file = new FileReference(new File(path));
+        this.ioDeviceId = ioDeviceId;
+        this.partition = -1;
     }
 
     public FileSplit(String nodeName, String path) {
         this.nodeName = nodeName;
         this.file = new FileReference(new File(path));
         this.ioDeviceId = 0;
+        this.partition = -1;
     }
 
     public String getNodeName() {
@@ -60,8 +70,12 @@
         return ioDeviceId;
     }
 
+    public int getPartition() {
+        return partition;
+    }
+
     @Override
     public String toString() {
         return file.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java
index 1607199..ae9585e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/FrameFileWriterOperatorDescriptor.java
@@ -81,4 +81,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/IFileSplitProvider.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/IFileSplitProvider.java
index c9e058a..cf2e923 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/IFileSplitProvider.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/IFileSplitProvider.java
@@ -22,4 +22,4 @@
 
 public interface IFileSplitProvider extends Serializable {
     public FileSplit[] getFileSplits();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParser.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParser.java
index 823aec0..036834d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParser.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParser.java
@@ -25,4 +25,4 @@
 
 public interface ITupleParser {
     public void parse(InputStream in, IFrameWriter writer) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParserFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParserFactory.java
index ef374a5..f495b75 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParserFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/ITupleParserFactory.java
@@ -25,4 +25,4 @@
 
 public interface ITupleParserFactory extends Serializable {
     public ITupleParser createTupleParser(IHyracksTaskContext ctx) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java
index 425f210..1a19a2b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/LineFileWriteOperatorDescriptor.java
@@ -61,4 +61,4 @@
     protected IRecordWriter createRecordWriter(FileSplit fileSplit, int index) throws Exception {
         return new LineWriterImpl(fileSplit.getLocalFile().getFile(), columns, separator);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
index b687684..33ac540 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
@@ -58,7 +58,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IActivityNode#createPushRuntime(edu.
      * uci.ics.hyracks.api.context.IHyracksContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordFileScanOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordFileScanOperatorDescriptor.java
index fb7f203..e807301 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordFileScanOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordFileScanOperatorDescriptor.java
@@ -83,4 +83,4 @@
         // to the node where the operator gets executed.
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java
index 1d45b22..2f6b53e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/RecordWriter.java
@@ -36,7 +36,7 @@
     public RecordWriter(Object[] args) throws Exception {
         OutputStream outputStream = createOutputStream(args);
         if (outputStream != null) {
-            bufferedWriter = new BufferedWriter(new OutputStreamWriter(createOutputStream(args)));
+            bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
         } else {
             bufferedWriter = null;
         }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/AbstractRunningAggregatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/AbstractRunningAggregatorDescriptor.java
deleted file mode 100644
index 06c46b0..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/AbstractRunningAggregatorDescriptor.java
+++ /dev/null
@@ -1,45 +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.hyracks.dataflow.std.group;
-
-import org.apache.hyracks.api.comm.IFrameTupleAccessor;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-
-public abstract class AbstractRunningAggregatorDescriptor implements IAggregatorDescriptor {
-
-    /* (non-Javadoc)
-     * @see org.apache.hyracks.dataflow.std.group.IAggregatorDescriptor#outputPartialResult(org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder, org.apache.hyracks.api.comm.IFrameTupleAccessor, int, org.apache.hyracks.dataflow.std.group.AggregateState)
-     */
-    @Override
-    public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
-            AggregateState state) throws HyracksDataException {
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.hyracks.dataflow.std.group.IAggregatorDescriptor#outputFinalResult(org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder, org.apache.hyracks.api.comm.IFrameTupleAccessor, int, org.apache.hyracks.dataflow.std.group.AggregateState)
-     */
-    @Override
-    public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
-            AggregateState state) throws HyracksDataException {
-        return false;
-    }
-
-}
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/AbstractService.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/AggregateType.java
similarity index 87%
rename from hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/AbstractService.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/AggregateType.java
index d2d0243..830ab89 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/service/AbstractService.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/AggregateType.java
@@ -16,7 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.control.common.service;
 
-public abstract class AbstractService implements IService {
-}
\ No newline at end of file
+package org.apache.hyracks.dataflow.std.group;
+
+public enum AggregateType {
+    PARTIAL,
+    FINAL
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/DeserializedPreclusteredGroupOperator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/DeserializedPreclusteredGroupOperator.java
index d041d5e..10d322f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/DeserializedPreclusteredGroupOperator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/DeserializedPreclusteredGroupOperator.java
@@ -30,6 +30,7 @@
 public class DeserializedPreclusteredGroupOperator implements IOpenableDataWriterOperator {
     private final int[] groupFields;
 
+    @SuppressWarnings("rawtypes")
     private final IComparator[] comparators;
 
     private final IGroupAggregator aggregator;
@@ -42,6 +43,7 @@
 
     private IOpenableDataReader<Object[]> reader;
 
+    @SuppressWarnings("rawtypes")
     public DeserializedPreclusteredGroupOperator(int[] groupFields, IComparator[] comparators,
             IGroupAggregator aggregator) {
         this.groupFields = groupFields;
@@ -110,6 +112,7 @@
         buffer.add(data);
     }
 
+    @SuppressWarnings("unchecked")
     private int compare(Object[] d1, Object[] d2) {
         for (int i = 0; i < groupFields.length; ++i) {
             int fIdx = groupFields[i];
@@ -126,4 +129,9 @@
         // TODO Auto-generated method stub
 
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        throw new HyracksDataException("unsupported operation");
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/FrameToolsForGroupers.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/FrameToolsForGroupers.java
deleted file mode 100644
index 7416677..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/FrameToolsForGroupers.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 org.apache.hyracks.dataflow.std.group;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hyracks.api.comm.FrameHelper;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-
-/**
- *
- */
-public class FrameToolsForGroupers {
-
-    public static void writeFields(byte[] buf, int offset, int length, ArrayTupleBuilder tupleBuilder)
-            throws HyracksDataException {
-        writeFields(buf, offset, length, tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
-                tupleBuilder.getSize());
-    }
-
-    public static void writeFields(byte[] buf, int offset, int length, int[] fieldsOffset, byte[] data, int dataOffset,
-            int dataLength) throws HyracksDataException {
-        if (dataLength + 4 * fieldsOffset.length > length) {
-            throw new HyracksDataException("Out of buffer bound: try to write too much data (" + dataLength
-                    + ") to the given bound (" + length + ").");
-        }
-
-        ByteBuffer buffer = ByteBuffer.wrap(buf, offset, length);
-        for (int i = 0; i < fieldsOffset.length; i++) {
-            buffer.putInt(fieldsOffset[i]);
-        }
-        buffer.put(data, dataOffset, dataLength);
-    }
-
-    public static void updateFrameMetaForNewTuple(ByteBuffer buffer, int addedTupleLength) throws HyracksDataException {
-        int currentTupleCount = buffer.getInt(FrameHelper.getTupleCountOffset(buffer.capacity()));
-        int currentTupleEndOffset = buffer.getInt(FrameHelper.getTupleCountOffset(buffer.capacity()) - 4
-                * currentTupleCount);
-        int newTupleEndOffset = currentTupleEndOffset + addedTupleLength;
-
-        // update tuple end offset
-        buffer.putInt(FrameHelper.getTupleCountOffset(buffer.capacity()) - 4 * (currentTupleCount + 1),
-                newTupleEndOffset);
-        // Update the tuple count
-        buffer.putInt(FrameHelper.getTupleCountOffset(buffer.capacity()), currentTupleCount + 1);
-    }
-
-    public static void updateFrameMetaForNewTuple(ByteBuffer buffer, int addedTupleLength, boolean isReset)
-            throws HyracksDataException {
-        int currentTupleCount;
-        int currentTupleEndOffset;
-        if (isReset) {
-            currentTupleCount = 0;
-            currentTupleEndOffset = 0;
-        } else {
-            currentTupleCount = buffer.getInt(FrameHelper.getTupleCountOffset(buffer.capacity()));
-            currentTupleEndOffset = buffer.getInt(FrameHelper.getTupleCountOffset(buffer.capacity()) - 4
-                    * currentTupleCount);
-        }
-        int newTupleEndOffset = currentTupleEndOffset + addedTupleLength;
-
-        // update tuple end offset
-        buffer.putInt(FrameHelper.getTupleCountOffset(buffer.capacity()) - 4 * (currentTupleCount + 1),
-                newTupleEndOffset);
-        // Update the tuple count
-        buffer.putInt(FrameHelper.getTupleCountOffset(buffer.capacity()), currentTupleCount + 1);
-    }
-
-    public static boolean isFrameOverflowing(ByteBuffer buffer, int length, boolean isReset)
-            throws HyracksDataException {
-
-        int currentTupleCount = buffer.getInt(FrameHelper.getTupleCountOffset(buffer.capacity()));
-        if (currentTupleCount == 0 || isReset) {
-            return length + 4 + 4 > buffer.capacity();
-        }
-        int currentTupleEndOffset = buffer.getInt(FrameHelper.getTupleCountOffset(buffer.capacity()) - 4
-                * currentTupleCount);
-        return currentTupleEndOffset + length + 4 + (currentTupleCount + 1) * 4 > buffer.capacity();
-    }
-}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/HashSpillableTableFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/HashSpillableTableFactory.java
index 052fe8c..e08041d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/HashSpillableTableFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/HashSpillableTableFactory.java
@@ -16,463 +16,242 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.hyracks.dataflow.std.group;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.BitSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
-import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.VSizeFrame;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputer;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
+import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFamily;
+import org.apache.hyracks.dataflow.std.buffermanager.IPartitionedTupleBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.ITuplePointerAccessor;
+import org.apache.hyracks.dataflow.std.buffermanager.PreferToSpillFullyOccupiedFramePolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.VPartitionTupleBufferManager;
 import org.apache.hyracks.dataflow.std.structures.ISerializableTable;
 import org.apache.hyracks.dataflow.std.structures.SerializableHashTable;
 import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 
 public class HashSpillableTableFactory implements ISpillableTableFactory {
 
+    private static Logger LOGGER = Logger.getLogger(HashSpillableTableFactory.class.getName());
+    private static final double FUDGE_FACTOR = 1.1;
     private static final long serialVersionUID = 1L;
-    private final ITuplePartitionComputerFactory tpcf;
-    private final int tableSize;
+    private final IBinaryHashFunctionFamily[] hashFunctionFamilies;
 
-    public HashSpillableTableFactory(ITuplePartitionComputerFactory tpcf, int tableSize) {
-        this.tpcf = tpcf;
-        this.tableSize = tableSize;
+    public HashSpillableTableFactory(IBinaryHashFunctionFamily[] hashFunctionFamilies) {
+        this.hashFunctionFamilies = hashFunctionFamilies;
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see
-     * org.apache.hyracks.dataflow.std.aggregations.ISpillableTableFactory#
-     * buildSpillableTable(org.apache.hyracks.api.context.IHyracksTaskContext,
-     * int[], org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory[],
-     * org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory,
-     * edu.
-     * uci.ics.hyracks.dataflow.std.aggregations.IFieldAggregateDescriptorFactory
-     * [], org.apache.hyracks.api.dataflow.value.RecordDescriptor,
-     * org.apache.hyracks.api.dataflow.value.RecordDescriptor, int)
-     */
     @Override
-    public ISpillableTable buildSpillableTable(final IHyracksTaskContext ctx, final int[] keyFields,
-            IBinaryComparatorFactory[] comparatorFactories, INormalizedKeyComputerFactory firstKeyNormalizerFactory,
-            IAggregatorDescriptorFactory aggregateFactory, RecordDescriptor inRecordDescriptor,
-            RecordDescriptor outRecordDescriptor, final int framesLimit) throws HyracksDataException {
-        final int[] storedKeys = new int[keyFields.length];
-        @SuppressWarnings("rawtypes")
-        ISerializerDeserializer[] storedKeySerDeser = new ISerializerDeserializer[keyFields.length];
+    public ISpillableTable buildSpillableTable(final IHyracksTaskContext ctx, int suggestTableSize, long dataBytesSize,
+            final int[] keyFields, final IBinaryComparator[] comparators,
+            final INormalizedKeyComputer firstKeyNormalizerFactory, IAggregatorDescriptorFactory aggregateFactory,
+            RecordDescriptor inRecordDescriptor, RecordDescriptor outRecordDescriptor, final int framesLimit,
+            final int seed) throws HyracksDataException {
+        if (framesLimit < 2) {
+            throw new HyracksDataException("The frame limit is too small to partition the data");
+        }
+        final int tableSize = suggestTableSize;
+
+        final int[] intermediateResultKeys = new int[keyFields.length];
         for (int i = 0; i < keyFields.length; i++) {
-            storedKeys[i] = i;
-            storedKeySerDeser[i] = inRecordDescriptor.getFields()[keyFields[i]];
+            intermediateResultKeys[i] = i;
         }
 
-        RecordDescriptor internalRecordDescriptor = outRecordDescriptor;
-        final FrameTupleAccessor storedKeysAccessor1 = new FrameTupleAccessor(internalRecordDescriptor);
-        final FrameTupleAccessor storedKeysAccessor2 = new FrameTupleAccessor(internalRecordDescriptor);
+        final FrameTuplePairComparator ftpcInputCompareToAggregate = new FrameTuplePairComparator(keyFields,
+                intermediateResultKeys, comparators);
 
-        final IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
-        for (int i = 0; i < comparatorFactories.length; ++i) {
-            comparators[i] = comparatorFactories[i].createBinaryComparator();
-        }
-
-        final FrameTuplePairComparator ftpcPartial = new FrameTuplePairComparator(keyFields, storedKeys, comparators);
-
-        final FrameTuplePairComparator ftpcTuple = new FrameTuplePairComparator(storedKeys, storedKeys, comparators);
-
-        final ITuplePartitionComputer tpc = tpcf.createPartitioner();
-
-        final INormalizedKeyComputer nkc = firstKeyNormalizerFactory == null ? null : firstKeyNormalizerFactory
-                .createNormalizedKeyComputer();
-
-        int[] keyFieldsInPartialResults = new int[keyFields.length];
-        for (int i = 0; i < keyFieldsInPartialResults.length; i++) {
-            keyFieldsInPartialResults[i] = i;
-        }
+        final ITuplePartitionComputer tpc = new FieldHashPartitionComputerFamily(keyFields, hashFunctionFamilies)
+                .createPartitioner(seed);
 
         final IAggregatorDescriptor aggregator = aggregateFactory.createAggregator(ctx, inRecordDescriptor,
-                outRecordDescriptor, keyFields, keyFieldsInPartialResults, null);
+                outRecordDescriptor, keyFields, intermediateResultKeys, null);
 
         final AggregateState aggregateState = aggregator.createAggregateStates();
 
-        final ArrayTupleBuilder stateTupleBuilder;
-        if (keyFields.length < outRecordDescriptor.getFields().length) {
-            stateTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
-        } else {
-            stateTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length + 1);
+        final ArrayTupleBuilder stateTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
+
+        //TODO(jf) research on the optimized partition size
+        final int numPartitions = getNumOfPartitions((int) (dataBytesSize / ctx.getInitialFrameSize()),
+                framesLimit - 1);
+        final int entriesPerPartition = (int) Math.ceil(1.0 * tableSize / numPartitions);
+        if (LOGGER.isLoggable(Level.FINE)) {
+            LOGGER.fine("create hashtable, table size:" + tableSize + " file size:" + dataBytesSize + "  partitions:"
+                    + numPartitions);
         }
 
         final ArrayTupleBuilder outputTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
 
+        final ISerializableTable hashTableForTuplePointer = new SerializableHashTable(tableSize, ctx);
+
         return new ISpillableTable() {
 
-            private int lastBufIndex;
+            private final TuplePointer pointer = new TuplePointer();
+            private final BitSet spilledSet = new BitSet(numPartitions);
+            final IPartitionedTupleBufferManager bufferManager = new VPartitionTupleBufferManager(ctx,
+                    PreferToSpillFullyOccupiedFramePolicy.createAtMostOneFrameForSpilledPartitionConstrain(spilledSet),
+                    numPartitions, framesLimit * ctx.getInitialFrameSize());
 
-            private IFrame outputFrame;
-            private FrameTupleAppender outputAppender;
+            final ITuplePointerAccessor bufferAccessor = bufferManager.getTupleAccessor(outRecordDescriptor);
 
-            private FrameTupleAppender stateAppender = new FrameTupleAppender();
+            private final PreferToSpillFullyOccupiedFramePolicy spillPolicy = new PreferToSpillFullyOccupiedFramePolicy(
+                    bufferManager, spilledSet, ctx.getInitialFrameSize());
 
-            private final ISerializableTable table = new SerializableHashTable(tableSize, ctx);
-            private final TuplePointer storedTuplePointer = new TuplePointer();
-            private final List<IFrame> frames = new ArrayList<>();
-
-            /**
-             * A tuple is "pointed" to by 3 entries in the tPointers array. [0]
-             * = Frame index in the "Frames" list, [1] = Tuple index in the
-             * frame, [2] = Poor man's normalized key for the tuple.
-             */
-            private int[] tPointers;
+            private final FrameTupleAppender outputAppender = new FrameTupleAppender(new VSizeFrame(ctx));
 
             @Override
-            public void sortFrames() throws HyracksDataException {
-                int sfIdx = storedKeys[0];
-                int totalTCount = table.getTupleCount();
-                tPointers = new int[totalTCount * 3];
-                int ptr = 0;
-
-                for (int i = 0; i < tableSize; i++) {
-                    int entry = i;
-                    int offset = 0;
-                    do {
-                        table.getTuplePointer(entry, offset, storedTuplePointer);
-                        if (storedTuplePointer.frameIndex < 0)
-                            break;
-                        tPointers[ptr * 3] = entry;
-                        tPointers[ptr * 3 + 1] = offset;
-                        table.getTuplePointer(entry, offset, storedTuplePointer);
-                        int fIndex = storedTuplePointer.frameIndex;
-                        int tIndex = storedTuplePointer.tupleIndex;
-                        storedKeysAccessor1.reset(frames.get(fIndex).getBuffer());
-                        int tStart = storedKeysAccessor1.getTupleStartOffset(tIndex);
-                        int f0StartRel = storedKeysAccessor1.getFieldStartOffset(tIndex, sfIdx);
-                        int f0EndRel = storedKeysAccessor1.getFieldEndOffset(tIndex, sfIdx);
-                        int f0Start = f0StartRel + tStart + storedKeysAccessor1.getFieldSlotsLength();
-                        tPointers[ptr * 3 + 2] = nkc == null ? 0 : nkc.normalize(storedKeysAccessor1.getBuffer()
-                                .array(), f0Start, f0EndRel - f0StartRel);
-                        ptr++;
-                        offset++;
-                    } while (true);
-                }
-                /**
-                 * Sort using quick sort
-                 */
-                if (tPointers.length > 0) {
-                    sort(tPointers, 0, totalTCount);
-                }
-            }
-
-            @Override
-            public void reset() {
-                lastBufIndex = -1;
-                tPointers = null;
-                table.reset();
-                aggregator.reset();
-            }
-
-            @Override
-            public boolean insert(FrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
-                if (lastBufIndex < 0)
-                    nextAvailableFrame();
-                int entry = tpc.partition(accessor, tIndex, tableSize);
-                boolean foundGroup = false;
-                int offset = 0;
-                do {
-                    table.getTuplePointer(entry, offset++, storedTuplePointer);
-                    if (storedTuplePointer.frameIndex < 0)
-                        break;
-                    storedKeysAccessor1.reset(frames.get(storedTuplePointer.frameIndex).getBuffer());
-                    int c = ftpcPartial.compare(accessor, tIndex, storedKeysAccessor1, storedTuplePointer.tupleIndex);
-                    if (c == 0) {
-                        foundGroup = true;
-                        break;
-                    }
-                } while (true);
-
-                if (!foundGroup) {
-
-                    stateTupleBuilder.reset();
-
-                    for (int k = 0; k < keyFields.length; k++) {
-                        stateTupleBuilder.addField(accessor, tIndex, keyFields[k]);
-                    }
-
-                    aggregator.init(stateTupleBuilder, accessor, tIndex, aggregateState);
-                    if (!stateAppender.appendSkipEmptyField(stateTupleBuilder.getFieldEndOffsets(),
-                            stateTupleBuilder.getByteArray(), 0, stateTupleBuilder.getSize())) {
-                        if (!nextAvailableFrame()) {
-                            return false;
-                        }
-                        if (!stateAppender.appendSkipEmptyField(stateTupleBuilder.getFieldEndOffsets(),
-                                stateTupleBuilder.getByteArray(), 0, stateTupleBuilder.getSize())) {
-                            throw new HyracksDataException("Cannot init external aggregate state in a frame.");
-                        }
-                    }
-
-                    storedTuplePointer.frameIndex = lastBufIndex;
-                    storedTuplePointer.tupleIndex = stateAppender.getTupleCount() - 1;
-                    table.insert(entry, storedTuplePointer);
-                } else {
-
-                    aggregator.aggregate(accessor, tIndex, storedKeysAccessor1, storedTuplePointer.tupleIndex,
-                            aggregateState);
-
-                }
-                return true;
-            }
-
-            @Override
-            public List<IFrame> getFrames() {
-                return frames;
-            }
-
-            @Override
-            public int getFrameCount() {
-                return lastBufIndex;
-            }
-
-            @Override
-            public void flushFrames(IFrameWriter writer, boolean isPartial) throws HyracksDataException {
-                if (outputFrame == null) {
-                    outputFrame = new VSizeFrame(ctx);
-                }
-
-                if (outputAppender == null) {
-                    outputAppender = new FrameTupleAppender();
-                }
-
-                outputAppender.reset(outputFrame, true);
-
-                if (tPointers == null) {
-                    // Not sorted
-                    for (int i = 0; i < tableSize; ++i) {
-                        int entry = i;
-                        int offset = 0;
-                        do {
-                            table.getTuplePointer(entry, offset++, storedTuplePointer);
-                            if (storedTuplePointer.frameIndex < 0)
-                                break;
-                            int bIndex = storedTuplePointer.frameIndex;
-                            int tIndex = storedTuplePointer.tupleIndex;
-
-                            storedKeysAccessor1.reset(frames.get(bIndex).getBuffer());
-
-                            outputTupleBuilder.reset();
-                            for (int k = 0; k < storedKeys.length; k++) {
-                                outputTupleBuilder.addField(storedKeysAccessor1, tIndex, storedKeys[k]);
-                            }
-
-                            if (isPartial) {
-
-                                aggregator.outputPartialResult(outputTupleBuilder, storedKeysAccessor1, tIndex,
-                                        aggregateState);
-
-                            } else {
-
-                                aggregator.outputFinalResult(outputTupleBuilder, storedKeysAccessor1, tIndex,
-                                        aggregateState);
-                            }
-
-                            if (!outputAppender.appendSkipEmptyField(outputTupleBuilder.getFieldEndOffsets(),
-                                    outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize())) {
-                                outputAppender.flush(writer, true);
-                                if (!outputAppender.appendSkipEmptyField(outputTupleBuilder.getFieldEndOffsets(),
-                                        outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize())) {
-                                    throw new HyracksDataException(
-                                            "The output item is too large to be fit into a frame.");
-                                }
-                            }
-
-                        } while (true);
-                    }
-                    outputAppender.flush(writer, true);
-                    aggregator.close();
-                    return;
-                }
-                int n = tPointers.length / 3;
-                for (int ptr = 0; ptr < n; ptr++) {
-                    int tableIndex = tPointers[ptr * 3];
-                    int rowIndex = tPointers[ptr * 3 + 1];
-                    table.getTuplePointer(tableIndex, rowIndex, storedTuplePointer);
-                    int frameIndex = storedTuplePointer.frameIndex;
-                    int tupleIndex = storedTuplePointer.tupleIndex;
-                    // Get the frame containing the value
-                    IFrame buffer = frames.get(frameIndex);
-                    storedKeysAccessor1.reset(buffer.getBuffer());
-
-                    outputTupleBuilder.reset();
-                    for (int k = 0; k < storedKeys.length; k++) {
-                        outputTupleBuilder.addField(storedKeysAccessor1, tupleIndex, storedKeys[k]);
-                    }
-
-                    if (isPartial) {
-
-                        aggregator.outputPartialResult(outputTupleBuilder, storedKeysAccessor1, tupleIndex,
-                                aggregateState);
-
-                    } else {
-
-                        aggregator.outputFinalResult(outputTupleBuilder, storedKeysAccessor1, tupleIndex,
-                                aggregateState);
-                    }
-
-                    if (!outputAppender.appendSkipEmptyField(outputTupleBuilder.getFieldEndOffsets(),
-                            outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize())) {
-                        outputAppender.flush(writer, true);
-                        if (!outputAppender.appendSkipEmptyField(outputTupleBuilder.getFieldEndOffsets(),
-                                outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize())) {
-                            throw new HyracksDataException("The output item is too large to be fit into a frame.");
-                        }
-                    }
-                }
-                outputAppender.flush(writer, true);
+            public void close() throws HyracksDataException {
+                hashTableForTuplePointer.close();
                 aggregator.close();
             }
 
             @Override
-            public void close() {
-                lastBufIndex = -1;
-                tPointers = null;
-                table.close();
-                frames.clear();
-                aggregateState.close();
+            public void clear(int partition) throws HyracksDataException {
+                for (int p = getFirstEntryInHashTable(partition); p < getLastEntryInHashTable(partition); p++) {
+                    hashTableForTuplePointer.delete(p);
+                }
+                bufferManager.clearPartition(partition);
             }
 
-            /**
-             * Set the working frame to the next available frame in the frame
-             * list. There are two cases:<br>
-             * 1) If the next frame is not initialized, allocate a new frame. 2)
-             * When frames are already created, they are recycled.
-             *
-             * @return Whether a new frame is added successfully.
-             * @throws HyracksDataException
-             */
-            private boolean nextAvailableFrame() throws HyracksDataException {
-                // Return false if the number of frames is equal to the limit.
-                if (lastBufIndex + 1 >= framesLimit)
-                    return false;
+            private int getPartition(int entryInHashTable) {
+                return entryInHashTable / entriesPerPartition;
+            }
 
-                if (frames.size() < framesLimit) {
-                    // Insert a new frame
-                    IFrame frame = new VSizeFrame(ctx);
-                    frames.add(frame);
-                    stateAppender.reset(frame, true);
-                    lastBufIndex = frames.size() - 1;
-                } else {
-                    // Reuse an old frame
-                    lastBufIndex++;
-                    stateAppender.reset(frames.get(lastBufIndex), true);
+            private int getFirstEntryInHashTable(int partition) {
+                return partition * entriesPerPartition;
+            }
+
+            private int getLastEntryInHashTable(int partition) {
+                return Math.min(tableSize, (partition + 1) * entriesPerPartition);
+            }
+
+            @Override
+            public boolean insert(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+                int entryInHashTable = tpc.partition(accessor, tIndex, tableSize);
+                for (int i = 0; i < hashTableForTuplePointer.getTupleCount(entryInHashTable); i++) {
+                    hashTableForTuplePointer.getTuplePointer(entryInHashTable, i, pointer);
+                    bufferAccessor.reset(pointer);
+                    int c = ftpcInputCompareToAggregate.compare(accessor, tIndex, bufferAccessor);
+                    if (c == 0) {
+                        aggregateExistingTuple(accessor, tIndex, bufferAccessor, pointer.tupleIndex);
+                        return true;
+                    }
                 }
+
+                return insertNewAggregateEntry(entryInHashTable, accessor, tIndex);
+            }
+
+            private boolean insertNewAggregateEntry(int entryInHashTable, IFrameTupleAccessor accessor, int tIndex)
+                    throws HyracksDataException {
+                initStateTupleBuilder(accessor, tIndex);
+                int pid = getPartition(entryInHashTable);
+
+                if (!bufferManager.insertTuple(pid, stateTupleBuilder.getByteArray(),
+                        stateTupleBuilder.getFieldEndOffsets(), 0, stateTupleBuilder.getSize(), pointer)) {
+                    return false;
+                }
+                hashTableForTuplePointer.insert(entryInHashTable, pointer);
                 return true;
             }
 
-            private void sort(int[] tPointers, int offset, int length) throws HyracksDataException {
-                int m = offset + (length >> 1);
-                int mTable = tPointers[m * 3];
-                int mRow = tPointers[m * 3 + 1];
-                int mNormKey = tPointers[m * 3 + 2];
+            private void initStateTupleBuilder(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+                stateTupleBuilder.reset();
+                for (int k = 0; k < keyFields.length; k++) {
+                    stateTupleBuilder.addField(accessor, tIndex, keyFields[k]);
+                }
+                aggregator.init(stateTupleBuilder, accessor, tIndex, aggregateState);
+            }
 
-                table.getTuplePointer(mTable, mRow, storedTuplePointer);
-                int mFrame = storedTuplePointer.frameIndex;
-                int mTuple = storedTuplePointer.tupleIndex;
-                storedKeysAccessor1.reset(frames.get(mFrame).getBuffer());
+            private void aggregateExistingTuple(IFrameTupleAccessor accessor, int tIndex,
+                    ITuplePointerAccessor bufferAccessor, int tupleIndex) throws HyracksDataException {
+                aggregator.aggregate(accessor, tIndex, bufferAccessor, tupleIndex, aggregateState);
+            }
 
-                int a = offset;
-                int b = a;
-                int c = offset + length - 1;
-                int d = c;
-                while (true) {
-                    while (b <= c) {
-                        int bTable = tPointers[b * 3];
-                        int bRow = tPointers[b * 3 + 1];
-                        int bNormKey = tPointers[b * 3 + 2];
-                        int cmp = 0;
-                        if (bNormKey != mNormKey) {
-                            cmp = ((((long) bNormKey) & 0xffffffffL) < (((long) mNormKey) & 0xffffffffL)) ? -1 : 1;
-                        } else {
-                            table.getTuplePointer(bTable, bRow, storedTuplePointer);
-                            int bFrame = storedTuplePointer.frameIndex;
-                            int bTuple = storedTuplePointer.tupleIndex;
-                            storedKeysAccessor2.reset(frames.get(bFrame).getBuffer());
-                            cmp = ftpcTuple.compare(storedKeysAccessor2, bTuple, storedKeysAccessor1, mTuple);
+            @Override
+            public int flushFrames(int partition, IFrameWriter writer, AggregateType type) throws HyracksDataException {
+                int count = 0;
+                for (int hashEntryPid = getFirstEntryInHashTable(partition); hashEntryPid < getLastEntryInHashTable(
+                        partition); hashEntryPid++) {
+                    count += hashTableForTuplePointer.getTupleCount(hashEntryPid);
+                    for (int tid = 0; tid < hashTableForTuplePointer.getTupleCount(hashEntryPid); tid++) {
+                        hashTableForTuplePointer.getTuplePointer(hashEntryPid, tid, pointer);
+                        bufferAccessor.reset(pointer);
+                        outputTupleBuilder.reset();
+                        for (int k = 0; k < intermediateResultKeys.length; k++) {
+                            outputTupleBuilder.addField(bufferAccessor.getBuffer().array(),
+                                    bufferAccessor.getAbsFieldStartOffset(intermediateResultKeys[k]),
+                                    bufferAccessor.getFieldLength(intermediateResultKeys[k]));
                         }
-                        if (cmp > 0) {
-                            break;
+
+                        boolean hasOutput = false;
+                        switch (type) {
+                            case PARTIAL:
+                                hasOutput = aggregator.outputPartialResult(outputTupleBuilder, bufferAccessor,
+                                        pointer.tupleIndex, aggregateState);
+                                break;
+                            case FINAL:
+                                hasOutput = aggregator.outputFinalResult(outputTupleBuilder, bufferAccessor,
+                                        pointer.tupleIndex, aggregateState);
+                                break;
                         }
-                        if (cmp == 0) {
-                            swap(tPointers, a++, b);
+
+                        if (hasOutput && !outputAppender.appendSkipEmptyField(outputTupleBuilder.getFieldEndOffsets(),
+                                outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize())) {
+                            outputAppender.write(writer, true);
+                            if (!outputAppender.appendSkipEmptyField(outputTupleBuilder.getFieldEndOffsets(),
+                                    outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize())) {
+                                throw new HyracksDataException("The output item is too large to be fit into a frame.");
+                            }
                         }
-                        ++b;
                     }
-                    while (c >= b) {
-                        int cTable = tPointers[c * 3];
-                        int cRow = tPointers[c * 3 + 1];
-                        int cNormKey = tPointers[c * 3 + 2];
-                        int cmp = 0;
-                        if (cNormKey != mNormKey) {
-                            cmp = ((((long) cNormKey) & 0xffffffffL) < (((long) mNormKey) & 0xffffffffL)) ? -1 : 1;
-                        } else {
-                            table.getTuplePointer(cTable, cRow, storedTuplePointer);
-                            int cFrame = storedTuplePointer.frameIndex;
-                            int cTuple = storedTuplePointer.tupleIndex;
-                            storedKeysAccessor2.reset(frames.get(cFrame).getBuffer());
-                            cmp = ftpcTuple.compare(storedKeysAccessor2, cTuple, storedKeysAccessor1, mTuple);
-                        }
-                        if (cmp < 0) {
-                            break;
-                        }
-                        if (cmp == 0) {
-                            swap(tPointers, c, d--);
-                        }
-                        --c;
-                    }
-                    if (b > c)
-                        break;
-                    swap(tPointers, b++, c--);
                 }
-
-                int s;
-                int n = offset + length;
-                s = Math.min(a - offset, b - a);
-                vecswap(tPointers, offset, b - s, s);
-                s = Math.min(d - c, n - d - 1);
-                vecswap(tPointers, b, n - s, s);
-
-                if ((s = b - a) > 1) {
-                    sort(tPointers, offset, s);
-                }
-                if ((s = d - c) > 1) {
-                    sort(tPointers, n - s, s);
-                }
+                outputAppender.write(writer, true);
+                spilledSet.set(partition);
+                return count;
             }
 
-            private void swap(int x[], int a, int b) {
-                for (int i = 0; i < 3; ++i) {
-                    int t = x[a * 3 + i];
-                    x[a * 3 + i] = x[b * 3 + i];
-                    x[b * 3 + i] = t;
-                }
+            @Override
+            public int getNumPartitions() {
+                return bufferManager.getNumPartitions();
             }
 
-            private void vecswap(int x[], int a, int b, int n) {
-                for (int i = 0; i < n; i++, a++, b++) {
-                    swap(x, a, b);
-                }
+            @Override
+            public int findVictimPartition(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException {
+                int entryInHashTable = tpc.partition(accessor, tIndex, tableSize);
+                int partition = getPartition(entryInHashTable);
+                return spillPolicy.selectVictimPartition(partition);
             }
-
         };
     }
 
+    private int getNumOfPartitions(int nubmerOfFramesForData, int frameLimit) {
+        if (frameLimit > nubmerOfFramesForData) {
+            return 1; // all in memory, we will create a big partition
+        }
+        int numberOfPartitions = (int) (Math
+                .ceil((nubmerOfFramesForData * FUDGE_FACTOR - frameLimit) / (frameLimit - 1)));
+        if (numberOfPartitions <= 0) {
+            numberOfPartitions = 1; //becomes in-memory hash
+        }
+        if (numberOfPartitions > frameLimit) {
+            numberOfPartitions = (int) Math.ceil(Math.sqrt(nubmerOfFramesForData * FUDGE_FACTOR));
+            return Math.max(2, Math.min(numberOfPartitions, frameLimit));
+        }
+        return numberOfPartitions;
+    }
+
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java
index 1ef3b9e..9552294 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java
@@ -26,24 +26,21 @@
 
     /**
      * Create an aggregate state
-     * 
+     *
      * @return
      */
-    public AggregateState createAggregateStates();
+    AggregateState createAggregateStates();
 
     /**
      * Initialize the state based on the input tuple.
      * 
+     * @param tupleBuilder
      * @param accessor
      * @param tIndex
-     * @param fieldOutput
-     *            The data output for the frame containing the state. This may
-     *            be null, if the state is maintained as a java object
      * @param state
-     *            The state to be initialized.
      * @throws HyracksDataException
      */
-    public void init(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex, AggregateState state)
+    void init(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex, AggregateState state)
             throws HyracksDataException;
 
     /**
@@ -51,60 +48,58 @@
      * too. Note that here the frame is not an input argument, since it can be
      * reset outside of the aggregator (simply reset the starting index of the
      * buffer).
-     * 
-     * @param state
      */
-    public void reset();
+    void reset();
 
     /**
      * Aggregate the value. Aggregate state should be updated correspondingly.
-     * 
+     *
      * @param accessor
      * @param tIndex
-     * @param data
+     * @param stateAccessor
      *            The buffer containing the state, if frame-based-state is used.
      *            This means that it can be null if java-object-based-state is
      *            used.
-     * @param offset
+     * @param stateTupleIndex
      * @param state
      *            The aggregate state.
      * @throws HyracksDataException
      */
-    public void aggregate(IFrameTupleAccessor accessor, int tIndex, IFrameTupleAccessor stateAccessor,
-            int stateTupleIndex, AggregateState state) throws HyracksDataException;
+    void aggregate(IFrameTupleAccessor accessor, int tIndex, IFrameTupleAccessor stateAccessor, int stateTupleIndex,
+            AggregateState state) throws HyracksDataException;
 
     /**
      * Output the partial aggregation result.
-     * 
-     * @param fieldOutput
-     *            The data output for the output frame
-     * @param data
-     *            The buffer containing the aggregation state
-     * @param offset
+     *
+     * @param tupleBuilder
+     *            The data output for the output aggregation result
+     * @param stateAccessor
+     *            The stateAccessor buffer containing the aggregation state
+     * @param tIndex
      * @param state
      *            The aggregation state.
-     * @return TODO
+     * @return true if it has any output writed to {@code tupleBuilder}
      * @throws HyracksDataException
      */
-    public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
+    boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor, int tIndex,
             AggregateState state) throws HyracksDataException;
 
     /**
      * Output the final aggregation result.
-     * 
-     * @param fieldOutput
+     *
+     * @param tupleBuilder
      *            The data output for the output frame
-     * @param data
+     * @param stateAccessor
      *            The buffer containing the aggregation state
-     * @param offset
+     * @param tIndex
      * @param state
      *            The aggregation state.
-     * @return TODO
+     * @return true if it has any output writed to {@code tupleBuilder}
      * @throws HyracksDataException
      */
-    public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
+    boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor, int tIndex,
             AggregateState state) throws HyracksDataException;
 
-    public void close();
+    void close();
 
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java
index e8d7754..fc50f1f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java
@@ -30,13 +30,13 @@
 
     /**
      * Initialize the state based on the input tuple.
-     * 
+     *
      * @param accessor
      * @param tIndex
      * @param fieldOutput
      *            The data output for the frame containing the state. This may
      *            be null, if the state is maintained as a java object.
-     * 
+     *
      *            Note that we have an assumption that the initialization of the
      *            binary state (if any) inserts the state fields into the buffer
      *            in a appending fashion. This means that an arbitrary initial
@@ -53,21 +53,21 @@
      * too. Note that here the frame is not an input argument, since it can be
      * reset outside of the aggregator (simply reset the starting index of the
      * buffer).
-     * 
+     *
      * @param state
      */
     public void reset();
 
     /**
      * Aggregate the value. Aggregate state should be updated correspondingly.
-     * 
+     *
      * @param accessor
      * @param tIndex
      * @param data
      *            The buffer containing the state, if frame-based-state is used.
      *            This means that it can be null if java-object-based-state is
      *            used.
-     * 
+     *
      *            Here the length of binary state can be obtains from the state
      *            parameter, and if the content to be filled into that is over-
      *            flowing (larger than the reversed space), error should be
@@ -82,7 +82,7 @@
 
     /**
      * Output the partial aggregation result.
-     * 
+     *
      * @param fieldOutput
      *            The data output for the output frame
      * @param data
@@ -97,7 +97,7 @@
 
     /**
      * Output the final aggregation result.
-     * 
+     *
      * @param fieldOutput
      *            The data output for the output frame
      * @param data
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IGroupAggregator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IGroupAggregator.java
index 55cadd0..fd16c52 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IGroupAggregator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IGroupAggregator.java
@@ -28,4 +28,4 @@
     public void aggregate(IDataReader<Object[]> reader, IDataWriter<Object[]> writer) throws HyracksDataException;
 
     public void close() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTable.java
index 1f99183..2b9ad54 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTable.java
@@ -18,26 +18,56 @@
  */
 package org.apache.hyracks.dataflow.std.group;
 
-import java.util.List;
-
-import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 
 public interface ISpillableTable {
 
-    public void close();
+    /**
+     * Release all the storage resources.
+     * @throws HyracksDataException
+     */
+    void close() throws HyracksDataException;
 
-    public void reset();
+    /**
+     * Reset the specific partition to the initial state. The occupied resources will be released.
+     * @param partition
+     * @throws HyracksDataException
+     */
+    void clear(int partition) throws HyracksDataException;
 
-    public int getFrameCount();
+    /**
+     * Insert the specific tuple into the table.
+     * @param accessor
+     * @param tIndex
+     * @return
+     * @throws HyracksDataException
+     */
+    boolean insert(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException;
 
-    public List<IFrame> getFrames();
+    /**
+     * Flush the certain partition to writer, and return the numOfTuples that have been flushed
+     * @param partition
+     * @param writer
+     * @param type
+     * @return
+     * @throws HyracksDataException
+     */
+    int flushFrames(int partition, IFrameWriter writer, AggregateType type) throws HyracksDataException;
 
-    public void sortFrames() throws HyracksDataException;
+    /**
+     * Get number of partitions
+     */
+    int getNumPartitions();
 
-    public boolean insert(FrameTupleAccessor accessor, int tIndex) throws HyracksDataException;
-
-    public void flushFrames(IFrameWriter writer, boolean isPartial) throws HyracksDataException;
+    /**
+     * When the table is full, it will return a proper partition which will be the flush() candidate.
+     * The {@code accessor} and {@code tIndex} given the reference to the tuple to be inserted.
+     * @return the partition id of the victim, -1 if it failed to find a partition
+     * @param accessor
+     * @param tIndex
+     */
+    int findVictimPartition(IFrameTupleAccessor accessor, int tIndex) throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTableFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTableFactory.java
index 6b90b37..dbe6858 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTableFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/ISpillableTableFactory.java
@@ -21,15 +21,15 @@
 import java.io.Serializable;
 
 import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface ISpillableTableFactory extends Serializable {
-    ISpillableTable buildSpillableTable(IHyracksTaskContext ctx, int[] keyFields,
-            IBinaryComparatorFactory[] comparatorFactories, INormalizedKeyComputerFactory normalizedKeyComputerFactory,
+    ISpillableTable buildSpillableTable(IHyracksTaskContext ctx, int inputSizeInTuple, long dataBytesSize, int[] keyFields,
+            IBinaryComparator[] comparatorFactories, INormalizedKeyComputer firstKeyNormalizerFactory,
             IAggregatorDescriptorFactory aggregateFactory, RecordDescriptor inRecordDescriptor,
-            RecordDescriptor outRecordDescriptor, int framesLimit) throws HyracksDataException;
+            RecordDescriptor outRecordDescriptor, int framesLimit, int seed) throws HyracksDataException;
 
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java
index 8a87486..7acd687 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java
index ae1c16f..b77c91c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java
index 357a2f8..bba9900 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java
@@ -47,7 +47,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java
index 4a83127..771303f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java
@@ -43,12 +43,12 @@
     private final int aggField;
 
     private final boolean useObjectState;
-    
+
     public FloatSumFieldAggregatorFactory(int aggField, boolean useObjState){
         this.aggField = aggField;
         this.useObjectState = useObjState;
     }
-    
+
     /* (non-Javadoc)
      * @see org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory#createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext, org.apache.hyracks.api.dataflow.value.RecordDescriptor, org.apache.hyracks.api.dataflow.value.RecordDescriptor)
      */
@@ -57,12 +57,12 @@
             RecordDescriptor inRecordDescriptor,
             RecordDescriptor outRecordDescriptor) throws HyracksDataException {
         return new IFieldAggregateDescriptor() {
-            
+
             @Override
             public void reset() {
-                
+
             }
-            
+
             @Override
             public void outputPartialResult(DataOutput fieldOutput, byte[] data,
                     int offset, AggregateState state) throws HyracksDataException {
@@ -78,7 +78,7 @@
                     throw new HyracksDataException("I/O exception when writing aggregation to the output buffer.");
                 }
             }
-            
+
             @Override
             public void outputFinalResult(DataOutput fieldOutput, byte[] data,
                     int offset, AggregateState state) throws HyracksDataException {
@@ -94,17 +94,17 @@
                     throw new HyracksDataException("I/O exception when writing aggregation to the output buffer.");
                 }
             }
-            
+
             @Override
             public boolean needsObjectState() {
                 return useObjectState;
             }
-            
+
             @Override
             public boolean needsBinaryState() {
                 return !useObjectState;
             }
-            
+
             @Override
             public void init(IFrameTupleAccessor accessor, int tIndex,
                     DataOutput fieldOutput, AggregateState state)
@@ -125,18 +125,18 @@
                     state.state = sum;
                 }
             }
-            
+
             @Override
             public AggregateState createState() {
                 return new AggregateState(new Float(0.0));
             }
-            
+
             @Override
             public void close() {
                 // TODO Auto-generated method stub
-                
+
             }
-            
+
             @Override
             public void aggregate(IFrameTupleAccessor accessor, int tIndex,
                     byte[] data, int offset, AggregateState state)
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java
index 9983541..511b651 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
index 53c60a3..6900918 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
@@ -29,7 +29,6 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
 import org.apache.hyracks.dataflow.std.group.AggregateState;
 import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptor;
@@ -56,7 +55,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.dataflow.std.aggregators.IAggregatorDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
@@ -68,6 +67,8 @@
             RecordDescriptor outRecordDescriptor) throws HyracksDataException {
         return new IFieldAggregateDescriptor() {
 
+            UTF8StringSerializerDeserializer utf8SerializerDeserializer = new UTF8StringSerializerDeserializer();
+
             @Override
             public void reset() {
             }
@@ -112,7 +113,7 @@
                 int tupleOffset = accessor.getTupleStartOffset(tIndex);
                 int fieldStart = accessor.getFieldStartOffset(tIndex, aggField);
                 int fieldLength = accessor.getFieldLength(tIndex, aggField);
-                String strField = UTF8StringSerializerDeserializer.INSTANCE.deserialize(new DataInputStream(
+                String strField = utf8SerializerDeserializer.deserialize(new DataInputStream(
                         new ByteArrayInputStream(accessor.getBuffer().array(), tupleOffset
                                 + accessor.getFieldSlotsLength() + fieldStart, fieldLength)));
                 if (hasBinaryState) {
@@ -157,7 +158,7 @@
                 int tupleOffset = accessor.getTupleStartOffset(tIndex);
                 int fieldStart = accessor.getFieldStartOffset(tIndex, aggField);
                 int fieldLength = accessor.getFieldLength(tIndex, aggField);
-                String strField = UTF8StringSerializerDeserializer.INSTANCE.deserialize(new DataInputStream(
+                String strField = utf8SerializerDeserializer.deserialize(new DataInputStream(
                         new ByteArrayInputStream(accessor.getBuffer().array(), tupleOffset
                                 + accessor.getFieldSlotsLength() + fieldStart, fieldLength)));
                 if (hasBinaryState) {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java
index bb940b1..e326f39 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java
@@ -49,7 +49,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.dataflow.std.aggregations.IAggregatorDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
@@ -80,15 +80,15 @@
             }
 
             @Override
-            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor,
+            public boolean outputPartialResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor,
                     int tIndex, AggregateState state) throws HyracksDataException {
                 DataOutput dos = tupleBuilder.getDataOutput();
 
-                int tupleOffset = accessor.getTupleStartOffset(tIndex);
+                int tupleOffset = stateAccessor.getTupleStartOffset(tIndex);
                 for (int i = 0; i < aggregators.length; i++) {
-                    int fieldOffset = accessor.getFieldStartOffset(tIndex, keys.length + i);
-                    aggregators[i].outputPartialResult(dos, accessor.getBuffer().array(),
-                            fieldOffset + accessor.getFieldSlotsLength() + tupleOffset,
+                    int fieldOffset = stateAccessor.getFieldStartOffset(tIndex, keys.length + i);
+                    aggregators[i].outputPartialResult(dos, stateAccessor.getBuffer().array(),
+                            fieldOffset + stateAccessor.getFieldSlotsLength() + tupleOffset,
                             ((AggregateState[]) state.state)[i]);
                     tupleBuilder.addFieldEndOffset();
                 }
@@ -96,16 +96,16 @@
             }
 
             @Override
-            public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor accessor, int tIndex,
+            public boolean outputFinalResult(ArrayTupleBuilder tupleBuilder, IFrameTupleAccessor stateAccessor, int tIndex,
                     AggregateState state) throws HyracksDataException {
                 DataOutput dos = tupleBuilder.getDataOutput();
 
-                int tupleOffset = accessor.getTupleStartOffset(tIndex);
+                int tupleOffset = stateAccessor.getTupleStartOffset(tIndex);
                 for (int i = 0; i < aggregators.length; i++) {
                     if (aggregators[i].needsBinaryState()) {
-                        int fieldOffset = accessor.getFieldStartOffset(tIndex, keys.length + i);
-                        aggregators[i].outputFinalResult(dos, accessor.getBuffer().array(),
-                                tupleOffset + accessor.getFieldSlotsLength() + fieldOffset,
+                        int fieldOffset = stateAccessor.getFieldStartOffset(tIndex, keys.length + i);
+                        aggregators[i].outputFinalResult(dos, stateAccessor.getBuffer().array(),
+                                tupleOffset + stateAccessor.getFieldSlotsLength() + fieldOffset,
                                 ((AggregateState[]) state.state)[i]);
                     } else {
                         aggregators[i].outputFinalResult(dos, null, 0, ((AggregateState[]) state.state)[i]);
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java
index f3ee778..852a160 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupBuildOperatorNodePushable.java
@@ -18,125 +18,124 @@
  */
 package org.apache.hyracks.dataflow.std.group.external;
 
-import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.LinkedList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.io.RunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.ISpillableTable;
 import org.apache.hyracks.dataflow.std.group.ISpillableTableFactory;
 
-class ExternalGroupBuildOperatorNodePushable extends AbstractUnaryInputSinkOperatorNodePushable {
+public class ExternalGroupBuildOperatorNodePushable extends AbstractUnaryInputSinkOperatorNodePushable
+        implements IRunFileWriterGenerator {
+
+    private static Logger LOGGER = Logger.getLogger("ExternalGroupBuildPhase");
     private final IHyracksTaskContext ctx;
     private final Object stateId;
     private final int[] keyFields;
-    private final IBinaryComparatorFactory[] comparatorFactories;
-    private final INormalizedKeyComputerFactory firstNormalizerFactory;
+    private final IBinaryComparator[] comparators;
+    private final INormalizedKeyComputer firstNormalizerComputer;
     private final IAggregatorDescriptorFactory aggregatorFactory;
     private final int framesLimit;
     private final ISpillableTableFactory spillableTableFactory;
     private final RecordDescriptor inRecordDescriptor;
     private final RecordDescriptor outRecordDescriptor;
-    private final FrameTupleAccessor accessor;
+    private final int tableSize;
+    private final long fileSize;
 
+    private ExternalHashGroupBy externalGroupBy;
     private ExternalGroupState state;
+    private boolean isFailed = false;
 
-    ExternalGroupBuildOperatorNodePushable(IHyracksTaskContext ctx, Object stateId, int[] keyFields, int framesLimit,
-            IBinaryComparatorFactory[] comparatorFactories, INormalizedKeyComputerFactory firstNormalizerFactory,
-            IAggregatorDescriptorFactory aggregatorFactory, RecordDescriptor inRecordDescriptor,
-            RecordDescriptor outRecordDescriptor, ISpillableTableFactory spillableTableFactory) {
+    public ExternalGroupBuildOperatorNodePushable(IHyracksTaskContext ctx, Object stateId, int tableSize, long fileSize,
+            int[] keyFields, int framesLimit, IBinaryComparatorFactory[] comparatorFactories,
+            INormalizedKeyComputerFactory firstNormalizerFactory, IAggregatorDescriptorFactory aggregatorFactory,
+            RecordDescriptor inRecordDescriptor, RecordDescriptor outRecordDescriptor,
+            ISpillableTableFactory spillableTableFactory) {
         this.ctx = ctx;
         this.stateId = stateId;
         this.framesLimit = framesLimit;
         this.aggregatorFactory = aggregatorFactory;
         this.keyFields = keyFields;
-        this.comparatorFactories = comparatorFactories;
-        this.firstNormalizerFactory = firstNormalizerFactory;
+        this.comparators = new IBinaryComparator[comparatorFactories.length];
+        for (int i = 0; i < comparatorFactories.length; ++i) {
+            comparators[i] = comparatorFactories[i].createBinaryComparator();
+        }
+        this.firstNormalizerComputer = firstNormalizerFactory == null ? null
+                : firstNormalizerFactory.createNormalizedKeyComputer();
         this.spillableTableFactory = spillableTableFactory;
         this.inRecordDescriptor = inRecordDescriptor;
         this.outRecordDescriptor = outRecordDescriptor;
-        this.accessor = new FrameTupleAccessor(inRecordDescriptor);
+        this.tableSize = tableSize;
+        this.fileSize = fileSize;
     }
 
     @Override
     public void open() throws HyracksDataException {
         state = new ExternalGroupState(ctx.getJobletContext().getJobId(), stateId);
-        state.setRuns(new LinkedList<RunFileReader>());
-        ISpillableTable table = spillableTableFactory.buildSpillableTable(ctx, keyFields, comparatorFactories,
-                firstNormalizerFactory, aggregatorFactory, inRecordDescriptor, outRecordDescriptor, framesLimit);
-        table.reset();
+        ISpillableTable table = spillableTableFactory.buildSpillableTable(ctx, tableSize, fileSize, keyFields,
+                comparators, firstNormalizerComputer, aggregatorFactory, inRecordDescriptor, outRecordDescriptor,
+                framesLimit, 0);
+        RunFileWriter[] runFileWriters = new RunFileWriter[table.getNumPartitions()];
+        this.externalGroupBy = new ExternalHashGroupBy(this, table, runFileWriters, inRecordDescriptor);
+
         state.setSpillableTable(table);
+        state.setRuns(runFileWriters);
+        state.setSpilledNumTuples(externalGroupBy.getSpilledNumTuples());
     }
 
     @Override
     public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-        accessor.reset(buffer);
-        int tupleCount = accessor.getTupleCount();
-        ISpillableTable gTable = state.getSpillableTable();
-        for (int i = 0; i < tupleCount; i++) {
-            /**
-             * If the group table is too large, flush the table into
-             * a run file.
-             */
-            if (!gTable.insert(accessor, i)) {
-                flushFramesToRun();
-                if (!gTable.insert(accessor, i))
-                    throw new HyracksDataException("Failed to insert a new buffer into the aggregate operator!");
-            }
-        }
+        externalGroupBy.insert(buffer);
     }
 
     @Override
     public void fail() throws HyracksDataException {
-        //do nothing for failures
+        isFailed = true;
     }
 
     @Override
     public void close() throws HyracksDataException {
-        ISpillableTable gTable = state.getSpillableTable();
-        if (gTable.getFrameCount() >= 0) {
-            if (state.getRuns().size() > 0) {
-                /**
-                 * flush the memory into the run file.
-                 */
-                flushFramesToRun();
-                gTable.close();
-                gTable = null;
+        if (isFailed) {
+            for (int i = 0; i < state.getRuns().length; i++) {
+                RunFileWriter run = state.getRuns()[i];
+                if (run != null) {
+                    run.getFileReference().delete();
+                }
+            }
+        } else {
+            externalGroupBy.flushSpilledPartitions();
+            ctx.setStateObject(state);
+            if (LOGGER.isLoggable(Level.FINE)) {
+                int numOfPartition = state.getSpillableTable().getNumPartitions();
+                int numOfSpilledPart = 0;
+                for (int i = 0; i < numOfPartition; i++) {
+                    if (state.getSpilledNumTuples()[i] > 0) {
+                        numOfSpilledPart++;
+                    }
+                }
+                LOGGER.fine("level 0:" + "build with " + numOfPartition + " partitions" + ", spilled "
+                        + numOfSpilledPart + " partitions");
             }
         }
-        ctx.setStateObject(state);
+        state = null;
+        externalGroupBy = null;
     }
 
-    private void flushFramesToRun() throws HyracksDataException {
-        FileReference runFile;
-        try {
-            runFile = ctx.getJobletContext().createManagedWorkspaceFile(
-                    ExternalGroupOperatorDescriptor.class.getSimpleName());
-        } catch (IOException e) {
-            throw new HyracksDataException(e);
-        }
-        RunFileWriter writer = new RunFileWriter(runFile, ctx.getIOManager());
-        writer.open();
-        ISpillableTable gTable = state.getSpillableTable();
-        try {
-            gTable.sortFrames();
-            gTable.flushFrames(writer, true);
-        } catch (Exception ex) {
-            throw new HyracksDataException(ex);
-        } finally {
-            writer.close();
-        }
-        gTable.reset();
-        state.getRuns().add(((RunFileWriter) writer).createReader());
+    @Override
+    public RunFileWriter getRunFileWriter() throws HyracksDataException {
+        FileReference file = ctx.getJobletContext()
+                .createManagedWorkspaceFile(ExternalGroupOperatorDescriptor.class.getSimpleName());
+        return new RunFileWriter(file, ctx.getIOManager());
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupMergeOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupMergeOperatorNodePushable.java
deleted file mode 100644
index fb56c0e..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupMergeOperatorNodePushable.java
+++ /dev/null
@@ -1,469 +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.hyracks.dataflow.std.group.external;
-
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.hyracks.api.comm.IFrame;
-import org.apache.hyracks.api.comm.IFrameTupleAccessor;
-import org.apache.hyracks.api.comm.IFrameWriter;
-import org.apache.hyracks.api.comm.VSizeFrame;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
-import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppenderAccessor;
-import org.apache.hyracks.dataflow.common.io.RunFileReader;
-import org.apache.hyracks.dataflow.common.io.RunFileWriter;
-import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
-import org.apache.hyracks.dataflow.std.group.AggregateState;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptor;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
-import org.apache.hyracks.dataflow.std.group.ISpillableTable;
-import org.apache.hyracks.dataflow.std.util.ReferenceEntry;
-import org.apache.hyracks.dataflow.std.util.ReferencedPriorityQueue;
-
-class ExternalGroupMergeOperatorNodePushable extends AbstractUnaryOutputSourceOperatorNodePushable {
-    private final IHyracksTaskContext ctx;
-    private final Object stateId;
-    private final int[] keyFields;
-    private final IBinaryComparator[] comparators;
-    private final INormalizedKeyComputer nmkComputer;
-    private final AggregateState aggregateState;
-    private final ArrayTupleBuilder tupleBuilder;
-    private final int[] storedKeys;
-    private final IAggregatorDescriptor aggregator;
-    private final boolean isOutputSorted;
-    private final int framesLimit;
-    private final RecordDescriptor outRecordDescriptor;
-    /**
-     * Input frames, one for each run file.
-     */
-    private List<IFrame> inFrames;
-    /**
-     * Output frame.
-     */
-    private IFrame outFrame, writerFrame;
-    private final FrameTupleAppenderAccessor outAppender;
-    private FrameTupleAppender writerAppender;
-    private LinkedList<RunFileReader> runs;
-    private ExternalGroupState aggState;
-    private ArrayTupleBuilder finalTupleBuilder;
-    /**
-     * how many frames to be read ahead once
-     */
-    private int runFrameLimit = 1;
-    private int[] currentFrameIndexInRun;
-    private int[] currentRunFrames;
-
-    ExternalGroupMergeOperatorNodePushable(IHyracksTaskContext ctx, Object stateId,
-            IBinaryComparatorFactory[] comparatorFactories, INormalizedKeyComputerFactory nmkFactory, int[] keyFields,
-            IAggregatorDescriptorFactory mergerFactory, boolean isOutputSorted, int framesLimit,
-            RecordDescriptor outRecordDescriptor) throws HyracksDataException {
-        this.stateId = stateId;
-        this.keyFields = keyFields;
-        comparators = new IBinaryComparator[comparatorFactories.length];
-        for (int i = 0; i < comparatorFactories.length; ++i) {
-            comparators[i] = comparatorFactories[i].createBinaryComparator();
-        }
-        this.nmkComputer = nmkFactory == null ? null : nmkFactory.createNormalizedKeyComputer();
-        int[] keyFieldsInPartialResults = new int[keyFields.length];
-        for (int i = 0; i < keyFieldsInPartialResults.length; i++) {
-            keyFieldsInPartialResults[i] = i;
-        }
-
-        aggregator = mergerFactory.createAggregator(ctx, outRecordDescriptor, outRecordDescriptor, keyFields,
-                keyFieldsInPartialResults, writer);
-        aggregateState = aggregator.createAggregateStates();
-
-        storedKeys = new int[keyFields.length];
-        /**
-         * Get the list of the fields in the stored records.
-         */
-        for (int i = 0; i < keyFields.length; ++i) {
-            storedKeys[i] = i;
-        }
-
-        tupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
-        this.ctx = ctx;
-        outAppender = new FrameTupleAppenderAccessor(outRecordDescriptor);
-        this.isOutputSorted = isOutputSorted;
-        this.framesLimit = framesLimit;
-        this.outRecordDescriptor = outRecordDescriptor;
-    }
-
-    public void initialize() throws HyracksDataException {
-        aggState = (ExternalGroupState) ctx.getStateObject(stateId);
-        runs = aggState.getRuns();
-        writer.open();
-        try {
-            if (runs.size() <= 0) {
-                ISpillableTable gTable = aggState.getSpillableTable();
-                if (gTable != null) {
-                    if (isOutputSorted)
-                        gTable.sortFrames();
-                    gTable.flushFrames(writer, false);
-                }
-                gTable = null;
-                aggState = null;
-            } else {
-                aggState = null;
-                runs = new LinkedList<RunFileReader>(runs);
-                inFrames = new ArrayList<>();
-                outFrame = new VSizeFrame(ctx);
-                outAppender.reset(outFrame, true);
-                while (runs.size() > 0) {
-                    try {
-                        doPass(runs);
-                    } catch (Exception e) {
-                        throw new HyracksDataException(e);
-                    }
-                }
-                inFrames.clear();
-            }
-        } catch (Exception e) {
-            writer.fail();
-            throw new HyracksDataException(e);
-        } finally {
-            aggregateState.close();
-            writer.close();
-        }
-    }
-
-    private void doPass(LinkedList<RunFileReader> runs) throws HyracksDataException {
-        FileReference newRun = null;
-        IFrameWriter writer = this.writer;
-        boolean finalPass = false;
-
-        while (inFrames.size() + 2 < framesLimit) {
-            inFrames.add(new VSizeFrame(ctx));
-        }
-        int runNumber;
-        if (runs.size() + 2 <= framesLimit) {
-            finalPass = true;
-            runFrameLimit = (framesLimit - 2) / runs.size();
-            runNumber = runs.size();
-        } else {
-            runNumber = framesLimit - 2;
-            newRun = ctx.getJobletContext().createManagedWorkspaceFile(
-                    ExternalGroupOperatorDescriptor.class.getSimpleName());
-            writer = new RunFileWriter(newRun, ctx.getIOManager());
-            writer.open();
-        }
-        try {
-            currentFrameIndexInRun = new int[runNumber];
-            currentRunFrames = new int[runNumber];
-            /**
-             * Create file readers for each input run file, only for
-             * the ones fit into the inFrames
-             */
-            RunFileReader[] runFileReaders = new RunFileReader[runNumber];
-            FrameTupleAccessor[] tupleAccessors = new FrameTupleAccessor[inFrames.size()];
-            Comparator<ReferenceEntry> comparator = createEntryComparator(comparators);
-            ReferencedPriorityQueue topTuples = new ReferencedPriorityQueue(runNumber, comparator, keyFields,
-                    nmkComputer);
-            /**
-             * current tuple index in each run
-             */
-            int[] tupleIndices = new int[runNumber];
-
-            for (int i = 0; i < runNumber; i++) {
-                int runIndex = topTuples.peek().getRunid();
-                tupleIndices[runIndex] = 0;
-                // Load the run file
-                runFileReaders[runIndex] = runs.get(runIndex);
-                runFileReaders[runIndex].open();
-
-                currentRunFrames[runIndex] = 0;
-                currentFrameIndexInRun[runIndex] = runIndex * runFrameLimit;
-                for (int j = 0; j < runFrameLimit; j++) {
-                    int frameIndex = currentFrameIndexInRun[runIndex] + j;
-                    if (runFileReaders[runIndex].nextFrame(inFrames.get(frameIndex))) {
-                        tupleAccessors[frameIndex] = new FrameTupleAccessor(outRecordDescriptor);
-                        tupleAccessors[frameIndex].reset(inFrames.get(frameIndex).getBuffer());
-                        currentRunFrames[runIndex]++;
-                        if (j == 0)
-                            setNextTopTuple(runIndex, tupleIndices, runFileReaders, tupleAccessors, topTuples);
-                    } else {
-                        break;
-                    }
-                }
-            }
-
-            /**
-             * Start merging
-             */
-            while (!topTuples.areRunsExhausted()) {
-                /**
-                 * Get the top record
-                 */
-                ReferenceEntry top = topTuples.peek();
-                int tupleIndex = top.getTupleIndex();
-                int runIndex = topTuples.peek().getRunid();
-                IFrameTupleAccessor fta = top.getAccessor();
-
-                int currentTupleInOutFrame = outAppender.getTupleCount() - 1;
-                if (currentTupleInOutFrame < 0
-                        || compareFrameTuples(fta, tupleIndex, outAppender, currentTupleInOutFrame) != 0) {
-                    /**
-                     * Initialize the first output record Reset the
-                     * tuple builder
-                     */
-
-                    tupleBuilder.reset();
-
-                    for (int k = 0; k < storedKeys.length; k++) {
-                        tupleBuilder.addField(fta, tupleIndex, storedKeys[k]);
-                    }
-
-                    aggregator.init(tupleBuilder, fta, tupleIndex, aggregateState);
-
-                    if (!outAppender.appendSkipEmptyField(tupleBuilder.getFieldEndOffsets(),
-                            tupleBuilder.getByteArray(), 0, tupleBuilder.getSize())) {
-                        flushOutFrame(writer, finalPass);
-                        if (!outAppender.appendSkipEmptyField(tupleBuilder.getFieldEndOffsets(),
-                                tupleBuilder.getByteArray(), 0, tupleBuilder.getSize())) {
-                            throw new HyracksDataException(
-                                    "The partial result is too large to be initialized in a frame.");
-                        }
-                    }
-
-                } else {
-                    /**
-                     * if new tuple is in the same group of the
-                     * current aggregator do merge and output to the
-                     * outFrame
-                     */
-
-                    aggregator.aggregate(fta, tupleIndex, outAppender, currentTupleInOutFrame, aggregateState);
-
-                }
-                tupleIndices[runIndex]++;
-                setNextTopTuple(runIndex, tupleIndices, runFileReaders, tupleAccessors, topTuples);
-            }
-
-            if (outAppender.getTupleCount() > 0) {
-                flushOutFrame(writer, finalPass);
-                outAppender.reset(outFrame, true);
-            }
-
-            aggregator.close();
-
-            runs.subList(0, runNumber).clear();
-            /**
-             * insert the new run file into the beginning of the run
-             * file list
-             */
-            if (!finalPass) {
-                runs.add(0, ((RunFileWriter) writer).createReader());
-            }
-        } finally {
-            if (!finalPass) {
-                writer.close();
-            }
-        }
-    }
-
-    private void flushOutFrame(IFrameWriter writer, boolean isFinal) throws HyracksDataException {
-
-        if (finalTupleBuilder == null) {
-            finalTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
-        }
-
-        if (writerFrame == null) {
-            writerFrame = new VSizeFrame(ctx);
-        }
-
-        if (writerAppender == null) {
-            writerAppender = new FrameTupleAppender();
-            writerAppender.reset(writerFrame, true);
-        }
-
-        for (int i = 0; i < outAppender.getTupleCount(); i++) {
-
-            finalTupleBuilder.reset();
-
-            for (int k = 0; k < storedKeys.length; k++) {
-                finalTupleBuilder.addField(outAppender, i, storedKeys[k]);
-            }
-
-            if (isFinal) {
-
-                aggregator.outputFinalResult(finalTupleBuilder, outAppender, i, aggregateState);
-
-            } else {
-
-                aggregator.outputPartialResult(finalTupleBuilder, outAppender, i, aggregateState);
-            }
-
-            if (!writerAppender.appendSkipEmptyField(finalTupleBuilder.getFieldEndOffsets(),
-                    finalTupleBuilder.getByteArray(), 0, finalTupleBuilder.getSize())) {
-                writerAppender.flush(writer, true);
-                if (!writerAppender.appendSkipEmptyField(finalTupleBuilder.getFieldEndOffsets(),
-                        finalTupleBuilder.getByteArray(), 0, finalTupleBuilder.getSize())) {
-                    throw new HyracksDataException("Aggregation output is too large to be fit into a frame.");
-                }
-            }
-        }
-        writerAppender.flush(writer, true);
-
-    }
-
-    private void setNextTopTuple(int runIndex, int[] tupleIndices, RunFileReader[] runCursors,
-            FrameTupleAccessor[] tupleAccessors, ReferencedPriorityQueue topTuples) throws HyracksDataException {
-        int runStart = runIndex * runFrameLimit;
-        boolean existNext = false;
-        if (tupleAccessors[currentFrameIndexInRun[runIndex]] == null || runCursors[runIndex] == null) {
-            /**
-             * run already closed
-             */
-            existNext = false;
-        } else if (currentFrameIndexInRun[runIndex] - runStart < currentRunFrames[runIndex] - 1) {
-            /**
-             * not the last frame for this run
-             */
-            existNext = true;
-            if (tupleIndices[runIndex] >= tupleAccessors[currentFrameIndexInRun[runIndex]].getTupleCount()) {
-                tupleIndices[runIndex] = 0;
-                currentFrameIndexInRun[runIndex]++;
-            }
-        } else if (tupleIndices[runIndex] < tupleAccessors[currentFrameIndexInRun[runIndex]].getTupleCount()) {
-            /**
-             * the last frame has expired
-             */
-            existNext = true;
-        } else {
-            /**
-             * If all tuples in the targeting frame have been
-             * checked.
-             */
-            tupleIndices[runIndex] = 0;
-            currentFrameIndexInRun[runIndex] = runStart;
-            /**
-             * read in batch
-             */
-            currentRunFrames[runIndex] = 0;
-            for (int j = 0; j < runFrameLimit; j++) {
-                int frameIndex = currentFrameIndexInRun[runIndex] + j;
-                if (runCursors[runIndex].nextFrame(inFrames.get(frameIndex))) {
-                    tupleAccessors[frameIndex].reset(inFrames.get(frameIndex).getBuffer());
-                    existNext = true;
-                    currentRunFrames[runIndex]++;
-                } else {
-                    break;
-                }
-            }
-        }
-
-        if (existNext) {
-            topTuples.popAndReplace(tupleAccessors[currentFrameIndexInRun[runIndex]], tupleIndices[runIndex]);
-        } else {
-            topTuples.pop();
-            closeRun(runIndex, runCursors, tupleAccessors);
-        }
-    }
-
-    /**
-     * Close the run file, and also the corresponding readers and
-     * input frame.
-     *
-     * @param index
-     * @param runCursors
-     * @param tupleAccessor
-     * @throws HyracksDataException
-     */
-    private void closeRun(int index, RunFileReader[] runCursors, IFrameTupleAccessor[] tupleAccessor)
-            throws HyracksDataException {
-        if (runCursors[index] != null) {
-            runCursors[index].close();
-            runCursors[index] = null;
-            int frameOffset = index * runFrameLimit;
-            for (int j = 0; j < runFrameLimit; j++) {
-                tupleAccessor[frameOffset + j] = null;
-            }
-        }
-    }
-
-    private int compareFrameTuples(IFrameTupleAccessor fta1, int j1, IFrameTupleAccessor fta2, int j2)
-            throws HyracksDataException {
-        byte[] b1 = fta1.getBuffer().array();
-        byte[] b2 = fta2.getBuffer().array();
-        for (int f = 0; f < keyFields.length; ++f) {
-            int fIdx = f;
-            int s1 = fta1.getTupleStartOffset(j1) + fta1.getFieldSlotsLength() + fta1.getFieldStartOffset(j1, fIdx);
-            int l1 = fta1.getFieldLength(j1, fIdx);
-            int s2 = fta2.getTupleStartOffset(j2) + fta2.getFieldSlotsLength() + fta2.getFieldStartOffset(j2, fIdx);
-            int l2_start = fta2.getFieldStartOffset(j2, fIdx);
-            int l2_end = fta2.getFieldEndOffset(j2, fIdx);
-            int l2 = l2_end - l2_start;
-            int c = comparators[f].compare(b1, s1, l1, b2, s2, l2);
-            if (c != 0) {
-                return c;
-            }
-        }
-        return 0;
-    }
-
-    private Comparator<ReferenceEntry> createEntryComparator(final IBinaryComparator[] comparators)
-            throws HyracksDataException {
-        return new Comparator<ReferenceEntry>() {
-
-            @Override
-            public int compare(ReferenceEntry o1, ReferenceEntry o2) {
-                FrameTupleAccessor fta1 = (FrameTupleAccessor) o1.getAccessor();
-                FrameTupleAccessor fta2 = (FrameTupleAccessor) o2.getAccessor();
-                int j1 = o1.getTupleIndex();
-                int j2 = o2.getTupleIndex();
-                byte[] b1 = fta1.getBuffer().array();
-                byte[] b2 = fta2.getBuffer().array();
-                for (int f = 0; f < keyFields.length; ++f) {
-                    int fIdx = f;
-                    int s1 = fta1.getTupleStartOffset(j1) + fta1.getFieldSlotsLength()
-                            + fta1.getFieldStartOffset(j1, fIdx);
-                    int l1 = fta1.getFieldEndOffset(j1, fIdx) - fta1.getFieldStartOffset(j1, fIdx);
-                    int s2 = fta2.getTupleStartOffset(j2) + fta2.getFieldSlotsLength()
-                            + fta2.getFieldStartOffset(j2, fIdx);
-                    int l2 = fta2.getFieldEndOffset(j2, fIdx) - fta2.getFieldStartOffset(j2, fIdx);
-                    int c;
-                    try {
-                        c = comparators[f].compare(b1, s1, l1, b2, s2, l2);
-                        if (c != 0) {
-                            return c;
-                        }
-                    } catch (HyracksDataException e) {
-                        throw new IllegalArgumentException(e);
-                    }
-
-                }
-                return 0;
-            }
-
-        };
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java
index 4f479b0..433b75d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java
@@ -48,17 +48,21 @@
     private final IBinaryComparatorFactory[] comparatorFactories;
     private final INormalizedKeyComputerFactory firstNormalizerFactory;
 
-    private final IAggregatorDescriptorFactory aggregatorFactory;
-    private final IAggregatorDescriptorFactory mergerFactory;
+    private final IAggregatorDescriptorFactory partialAggregatorFactory;
+    private final IAggregatorDescriptorFactory intermediateAggregateFactory;
 
     private final int framesLimit;
     private final ISpillableTableFactory spillableTableFactory;
-    private final boolean isOutputSorted;
+    private final RecordDescriptor partialRecDesc;
+    private final RecordDescriptor outRecDesc;
+    private final int tableSize;
+    private final long fileSize;
 
-    public ExternalGroupOperatorDescriptor(IOperatorDescriptorRegistry spec, int[] keyFields, int framesLimit,
-            IBinaryComparatorFactory[] comparatorFactories, INormalizedKeyComputerFactory firstNormalizerFactory,
-            IAggregatorDescriptorFactory aggregatorFactory, IAggregatorDescriptorFactory mergerFactory,
-            RecordDescriptor recordDescriptor, ISpillableTableFactory spillableTableFactory, boolean isOutputSorted) {
+    public ExternalGroupOperatorDescriptor(IOperatorDescriptorRegistry spec, int inputSizeInTuple, long inputFileSize,
+            int[] keyFields, int framesLimit, IBinaryComparatorFactory[] comparatorFactories,
+            INormalizedKeyComputerFactory firstNormalizerFactory, IAggregatorDescriptorFactory partialAggregatorFactory,
+            IAggregatorDescriptorFactory intermediateAggregateFactory, RecordDescriptor partialAggRecordDesc,
+            RecordDescriptor outRecordDesc, ISpillableTableFactory spillableTableFactory) {
         super(spec, 1, 1);
         this.framesLimit = framesLimit;
         if (framesLimit <= 1) {
@@ -68,24 +72,28 @@
              */
             throw new IllegalStateException("frame limit should at least be 2, but it is " + framesLimit + "!");
         }
-        this.aggregatorFactory = aggregatorFactory;
-        this.mergerFactory = mergerFactory;
+        this.partialAggregatorFactory = partialAggregatorFactory;
+        this.intermediateAggregateFactory = intermediateAggregateFactory;
         this.keyFields = keyFields;
         this.comparatorFactories = comparatorFactories;
         this.firstNormalizerFactory = firstNormalizerFactory;
         this.spillableTableFactory = spillableTableFactory;
-        this.isOutputSorted = isOutputSorted;
+
+        this.partialRecDesc = partialAggRecordDesc;
+        this.outRecDesc = outRecordDesc;
 
         /**
          * Set the record descriptor. Note that since this operator is a unary
          * operator, only the first record descriptor is used here.
          */
-        recordDescriptors[0] = recordDescriptor;
+        recordDescriptors[0] = outRecordDesc;
+        this.tableSize = inputSizeInTuple;
+        this.fileSize = inputFileSize;
     }
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IOperatorDescriptor#contributeActivities
      * (org.apache.hyracks.api.dataflow.IActivityGraphBuilder)
@@ -114,11 +122,11 @@
         @Override
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 final IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions)
-                throws HyracksDataException {
-            return new ExternalGroupBuildOperatorNodePushable(ctx, new TaskId(getActivityId(), partition), keyFields,
-                    framesLimit, comparatorFactories, firstNormalizerFactory, aggregatorFactory,
-                    recordDescProvider.getInputRecordDescriptor(getActivityId(), 0), recordDescriptors[0],
-                    spillableTableFactory);
+                        throws HyracksDataException {
+            return new ExternalGroupBuildOperatorNodePushable(ctx, new TaskId(getActivityId(), partition), tableSize,
+                    fileSize, keyFields, framesLimit, comparatorFactories, firstNormalizerFactory,
+                    partialAggregatorFactory, recordDescProvider.getInputRecordDescriptor(getActivityId(), 0),
+                    recordDescriptors[0], spillableTableFactory);
         }
     }
 
@@ -132,10 +140,12 @@
         @Override
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions)
-                throws HyracksDataException {
-            return new ExternalGroupMergeOperatorNodePushable(ctx, new TaskId(new ActivityId(getOperatorId(),
-                    AGGREGATE_ACTIVITY_ID), partition), comparatorFactories, firstNormalizerFactory, keyFields,
-                    mergerFactory, isOutputSorted, framesLimit, recordDescriptors[0]);
+                        throws HyracksDataException {
+            return new ExternalGroupWriteOperatorNodePushable(ctx,
+                    new TaskId(new ActivityId(getOperatorId(), AGGREGATE_ACTIVITY_ID), partition),
+                    spillableTableFactory, partialRecDesc, outRecDesc, framesLimit, keyFields, firstNormalizerFactory,
+                    comparatorFactories, intermediateAggregateFactory);
+
         }
 
     }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupState.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupState.java
index d9f51ec..a36e38d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupState.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupState.java
@@ -21,30 +21,27 @@
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.LinkedList;
 
 import org.apache.hyracks.api.job.JobId;
-import org.apache.hyracks.dataflow.common.io.RunFileReader;
+import org.apache.hyracks.dataflow.common.io.RunFileWriter;
 import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
 import org.apache.hyracks.dataflow.std.group.ISpillableTable;
 
 public class ExternalGroupState extends AbstractStateObject {
-    private LinkedList<RunFileReader> runs;
 
+    private RunFileWriter[] runs;
     private ISpillableTable gTable;
-
-    public ExternalGroupState() {
-    }
+    private int[] spilledNumTuples;
 
     ExternalGroupState(JobId jobId, Object id) {
         super(jobId, id);
     }
 
-    public LinkedList<RunFileReader> getRuns() {
+    public RunFileWriter[] getRuns() {
         return runs;
     }
 
-    public void setRuns(LinkedList<RunFileReader> runs) {
+    public void setRuns(RunFileWriter[] runs) {
         this.runs = runs;
     }
 
@@ -65,4 +62,12 @@
     public void fromBytes(DataInput in) throws IOException {
         throw new UnsupportedOperationException();
     }
-}
\ No newline at end of file
+
+    public void setSpilledNumTuples(int[] spilledNumTuples) {
+        this.spilledNumTuples = spilledNumTuples;
+    }
+
+    public int[] getSpilledNumTuples() {
+        return spilledNumTuples;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupWriteOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupWriteOperatorNodePushable.java
new file mode 100644
index 0000000..0dbb063
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupWriteOperatorNodePushable.java
@@ -0,0 +1,167 @@
+/*
+ * 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.hyracks.dataflow.std.group.external;
+
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.dataflow.common.io.RunFileReader;
+import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.group.AggregateType;
+import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
+import org.apache.hyracks.dataflow.std.group.ISpillableTable;
+import org.apache.hyracks.dataflow.std.group.ISpillableTableFactory;
+
+public class ExternalGroupWriteOperatorNodePushable extends AbstractUnaryOutputSourceOperatorNodePushable
+        implements IRunFileWriterGenerator {
+    private static Logger LOGGER = Logger.getLogger("ExternalGroupbyWrite");
+    private final IHyracksTaskContext ctx;
+    private final Object stateId;
+    private final ISpillableTableFactory spillableTableFactory;
+    private final RecordDescriptor partialAggRecordDesc;
+    private final RecordDescriptor outRecordDesc;
+    private final IAggregatorDescriptorFactory mergeAggregatorFactory;
+    private final int[] mergeGroupFields;
+    private final IBinaryComparator[] groupByComparators;
+    private final int frameLimit;
+    private final INormalizedKeyComputer nmkComputer;
+    private final ArrayList<RunFileWriter> generatedRuns = new ArrayList<>();
+
+    public ExternalGroupWriteOperatorNodePushable(IHyracksTaskContext ctx, Object stateId,
+            ISpillableTableFactory spillableTableFactory, RecordDescriptor partialAggRecordDesc,
+            RecordDescriptor outRecordDesc, int framesLimit, int[] groupFields,
+            INormalizedKeyComputerFactory nmkFactory, IBinaryComparatorFactory[] comparatorFactories,
+            IAggregatorDescriptorFactory aggregatorFactory) {
+        this.ctx = ctx;
+        this.stateId = stateId;
+        this.spillableTableFactory = spillableTableFactory;
+        this.frameLimit = framesLimit;
+        this.nmkComputer = nmkFactory == null ? null : nmkFactory.createNormalizedKeyComputer();
+
+        this.partialAggRecordDesc = partialAggRecordDesc;
+        this.outRecordDesc = outRecordDesc;
+
+        this.mergeAggregatorFactory = aggregatorFactory;
+
+        //create merge group fields
+        int numGroupFields = groupFields.length;
+        mergeGroupFields = new int[numGroupFields];
+        for (int i = 0; i < numGroupFields; i++) {
+            mergeGroupFields[i] = i;
+        }
+
+        //setup comparators for grouping
+        groupByComparators = new IBinaryComparator[Math.min(mergeGroupFields.length, comparatorFactories.length)];
+        for (int i = 0; i < groupByComparators.length; i++) {
+            groupByComparators[i] = comparatorFactories[i].createBinaryComparator();
+        }
+    }
+
+    @Override
+    public void initialize() throws HyracksDataException {
+        ExternalGroupState aggState = (ExternalGroupState) ctx.getStateObject(stateId);
+        ISpillableTable table = aggState.getSpillableTable();
+        RunFileWriter[] partitionRuns = aggState.getRuns();
+        int[] numberOfTuples = aggState.getSpilledNumTuples();
+        try {
+            writer.open();
+            doPass(table, partitionRuns, numberOfTuples, writer, 1); // level 0 use used at build stage.
+        } catch (Exception e) {
+            generatedRuns.forEach(run -> run.getFileReference().delete());
+            writer.fail();
+            throw new HyracksDataException(e);
+        } finally {
+            writer.close();
+        }
+    }
+
+    private void doPass(ISpillableTable table, RunFileWriter[] runs, int[] numOfTuples, IFrameWriter writer, int level)
+            throws HyracksDataException {
+        assert table.getNumPartitions() == runs.length;
+        for (int i = 0; i < runs.length; i++) {
+            if (runs[i] == null) {
+                table.flushFrames(i, writer, AggregateType.FINAL);
+            }
+        }
+        table.close();
+
+        for (int i = 0; i < runs.length; i++) {
+            if (runs[i] != null) {
+                ISpillableTable partitionTable = spillableTableFactory.buildSpillableTable(ctx, numOfTuples[i],
+                        runs[i].getFileSize(), mergeGroupFields, groupByComparators, nmkComputer,
+                        mergeAggregatorFactory, partialAggRecordDesc, outRecordDesc, frameLimit, level);
+                RunFileWriter[] runFileWriters = new RunFileWriter[partitionTable.getNumPartitions()];
+                int[] sizeInTuplesNextLevel = buildGroup(runs[i].createDeleteOnCloseReader(), partitionTable,
+                        runFileWriters);
+                for (int idFile = 0; idFile < runFileWriters.length; idFile++) {
+                    if (runFileWriters[idFile] != null) {
+                        generatedRuns.add(runFileWriters[idFile]);
+                    }
+                }
+
+                if (LOGGER.isLoggable(Level.FINE)) {
+                    int numOfSpilledPart = 0;
+                    for (int x = 0; x < numOfTuples.length; x++) {
+                        if (numOfTuples[x] > 0) {
+                            numOfSpilledPart++;
+                        }
+                    }
+                    LOGGER.fine("level " + level + ":" + "build with " + numOfTuples.length + " partitions"
+                            + ", spilled " + numOfSpilledPart + " partitions");
+                }
+                doPass(partitionTable, runFileWriters, sizeInTuplesNextLevel, writer, level + 1);
+            }
+        }
+    }
+
+    private int[] buildGroup(RunFileReader reader, ISpillableTable table, RunFileWriter[] runFileWriters)
+            throws HyracksDataException {
+        ExternalHashGroupBy groupBy = new ExternalHashGroupBy(this, table, runFileWriters, partialAggRecordDesc);
+        reader.open();
+        try {
+            VSizeFrame frame = new VSizeFrame(ctx);
+            while (reader.nextFrame(frame)) {
+                groupBy.insert(frame.getBuffer());
+            }
+            groupBy.flushSpilledPartitions();
+        } finally {
+            reader.close();
+        }
+        return groupBy.getSpilledNumTuples();
+    }
+
+    @Override
+    public RunFileWriter getRunFileWriter() throws HyracksDataException {
+        FileReference newRun = ctx.getJobletContext()
+                .createManagedWorkspaceFile(ExternalGroupOperatorDescriptor.class.getSimpleName());
+        return new RunFileWriter(newRun, ctx.getIOManager());
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java
new file mode 100644
index 0000000..e0ef2b3
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalHashGroupBy.java
@@ -0,0 +1,97 @@
+/*
+ * 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.hyracks.dataflow.std.group.external;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+import org.apache.hyracks.dataflow.std.group.AggregateType;
+import org.apache.hyracks.dataflow.std.group.ISpillableTable;
+
+public class ExternalHashGroupBy {
+
+    private final IRunFileWriterGenerator runFileWriterGenerator;
+
+    private FrameTupleAccessor accessor;
+    private ISpillableTable table;
+    private RunFileWriter[] runWriters;
+    private int[] spilledNumTuples;
+
+    public ExternalHashGroupBy(IRunFileWriterGenerator runFileWriterGenerator, ISpillableTable table,
+            RunFileWriter[] runWriters, RecordDescriptor inRecordDescriptor) {
+        this.runFileWriterGenerator = runFileWriterGenerator;
+        this.table = table;
+        this.runWriters = runWriters;
+        this.accessor = new FrameTupleAccessor(inRecordDescriptor);
+        this.spilledNumTuples = new int[runWriters.length];
+    }
+
+    public void insert(ByteBuffer buffer) throws HyracksDataException {
+        accessor.reset(buffer);
+        int tupleCount = accessor.getTupleCount();
+        for (int i = 0; i < tupleCount; i++) {
+            if (!table.insert(accessor, i)) {
+                do {
+                    int partition = table.findVictimPartition(accessor, i);
+                    if (partition < 0) {
+                        throw new HyracksDataException("Failed to insert a new buffer into the aggregate operator!");
+                    }
+                    RunFileWriter writer = getPartitionWriterOrCreateOneIfNotExist(partition);
+                    flushPartitionToRun(partition, writer);
+                } while (!table.insert(accessor, i));
+            }
+        }
+    }
+
+    private void flushPartitionToRun(int partition, RunFileWriter writer)
+            throws HyracksDataException {
+        try {
+            spilledNumTuples[partition] += table.flushFrames(partition, writer, AggregateType.PARTIAL);
+            table.clear(partition);
+        } catch (Exception ex) {
+            writer.fail();
+            throw new HyracksDataException(ex);
+        }
+    }
+
+    public void flushSpilledPartitions() throws HyracksDataException {
+        for (int i = 0; i < runWriters.length; ++i) {
+            if (runWriters[i] != null) {
+                flushPartitionToRun(i, runWriters[i]);
+                runWriters[i].close();
+            }
+        }
+    }
+
+    private RunFileWriter getPartitionWriterOrCreateOneIfNotExist(int partition) throws HyracksDataException {
+        if (runWriters[partition] == null) {
+            runWriters[partition] = runFileWriterGenerator.getRunFileWriter();
+            runWriters[partition].open();
+        }
+        return runWriters[partition];
+    }
+
+    public int[] getSpilledNumTuples() {
+        return spilledNumTuples;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/IRunFileWriterGenerator.java
similarity index 73%
copy from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
copy to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/IRunFileWriterGenerator.java
index 3dbe0ab..58c6ae1 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/IRunFileWriterGenerator.java
@@ -16,8 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
 
-public interface IFreePageManagerFactory {
-    public IFreePageManager createFreePageManager();
+package org.apache.hyracks.dataflow.std.group.external;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+
+public interface IRunFileWriterGenerator {
+    RunFileWriter getRunFileWriter() throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/GroupingHashTable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/GroupingHashTable.java
deleted file mode 100644
index 97cea25..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/GroupingHashTable.java
+++ /dev/null
@@ -1,251 +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.hyracks.dataflow.std.group.hash;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.hyracks.api.comm.IFrame;
-import org.apache.hyracks.api.comm.IFrameWriter;
-import org.apache.hyracks.api.comm.VSizeFrame;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputer;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
-import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
-import org.apache.hyracks.dataflow.std.group.AggregateState;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptor;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
-
-class GroupingHashTable {
-    /**
-     * The pointers in the link store 3 int values for each entry in the
-     * hashtable: (bufferIdx, tIndex, accumulatorIdx).
-     *
-     * @author vinayakb
-     */
-    private static class Link {
-        private static final int INIT_POINTERS_SIZE = 9;
-
-        int[] pointers;
-        int size;
-
-        Link() {
-            pointers = new int[INIT_POINTERS_SIZE];
-            size = 0;
-        }
-
-        void add(int bufferIdx, int tIndex, int accumulatorIdx) {
-            while (size + 3 > pointers.length) {
-                pointers = Arrays.copyOf(pointers, pointers.length * 2);
-            }
-            pointers[size++] = bufferIdx;
-            pointers[size++] = tIndex;
-            pointers[size++] = accumulatorIdx;
-        }
-    }
-
-    private static final int INIT_AGG_STATE_SIZE = 8;
-    private final IHyracksTaskContext ctx;
-
-    private final List<IFrame> buffers;
-    private final Link[] table;
-    /**
-     * Aggregate states: a list of states for all groups maintained in the main
-     * memory.
-     */
-    private AggregateState[] aggregateStates;
-    private int accumulatorSize;
-
-    private int lastBIndex;
-    private final int[] storedKeys;
-    private final int[] keys;
-    private final IBinaryComparator[] comparators;
-    private final FrameTuplePairComparator ftpc;
-    private final ITuplePartitionComputer tpc;
-    private final IAggregatorDescriptor aggregator;
-
-    private final IFrame outputFrame;
-    private final FrameTupleAppender appender;
-
-    private final FrameTupleAccessor storedKeysAccessor;
-
-    private final ArrayTupleBuilder stateTupleBuilder, outputTupleBuilder;
-
-    GroupingHashTable(IHyracksTaskContext ctx, int[] fields, IBinaryComparatorFactory[] comparatorFactories,
-            ITuplePartitionComputerFactory tpcf, IAggregatorDescriptorFactory aggregatorFactory,
-            RecordDescriptor inRecordDescriptor, RecordDescriptor outRecordDescriptor, int tableSize)
-            throws HyracksDataException {
-        this.ctx = ctx;
-
-        buffers = new ArrayList<>();
-        table = new Link[tableSize];
-
-        keys = fields;
-        storedKeys = new int[fields.length];
-        @SuppressWarnings("rawtypes")
-        ISerializerDeserializer[] storedKeySerDeser = new ISerializerDeserializer[fields.length];
-        for (int i = 0; i < fields.length; ++i) {
-            storedKeys[i] = i;
-            storedKeySerDeser[i] = inRecordDescriptor.getFields()[fields[i]];
-        }
-
-        comparators = new IBinaryComparator[comparatorFactories.length];
-        for (int i = 0; i < comparatorFactories.length; ++i) {
-            comparators[i] = comparatorFactories[i].createBinaryComparator();
-        }
-        ftpc = new FrameTuplePairComparator(fields, storedKeys, comparators);
-        tpc = tpcf.createPartitioner();
-
-        int[] keyFieldsInPartialResults = new int[fields.length];
-        for (int i = 0; i < keyFieldsInPartialResults.length; i++) {
-            keyFieldsInPartialResults[i] = i;
-        }
-
-        this.aggregator = aggregatorFactory.createAggregator(ctx, inRecordDescriptor, outRecordDescriptor, fields,
-                keyFieldsInPartialResults, null);
-
-        this.aggregateStates = new AggregateState[INIT_AGG_STATE_SIZE];
-        accumulatorSize = 0;
-
-        RecordDescriptor storedKeysRecordDescriptor = new RecordDescriptor(storedKeySerDeser);
-        storedKeysAccessor = new FrameTupleAccessor(storedKeysRecordDescriptor);
-        lastBIndex = -1;
-
-        appender = new FrameTupleAppender();
-
-        addNewBuffer();
-
-        if (fields.length < outRecordDescriptor.getFields().length) {
-            stateTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
-        } else {
-            stateTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length + 1);
-        }
-        outputTupleBuilder = new ArrayTupleBuilder(outRecordDescriptor.getFields().length);
-        outputFrame = new VSizeFrame(ctx);
-    }
-
-    private void addNewBuffer() throws HyracksDataException {
-        VSizeFrame frame = new VSizeFrame(ctx);
-        buffers.add(frame);
-        appender.reset(frame, true);
-        ++lastBIndex;
-    }
-
-    void insert(FrameTupleAccessor accessor, int tIndex) throws Exception {
-        int entry = tpc.partition(accessor, tIndex, table.length);
-        Link link = table[entry];
-        if (link == null) {
-            link = table[entry] = new Link();
-        }
-        int saIndex = -1;
-        for (int i = 0; i < link.size; i += 3) {
-            int sbIndex = link.pointers[i];
-            int stIndex = link.pointers[i + 1];
-            storedKeysAccessor.reset(buffers.get(sbIndex).getBuffer());
-            int c = ftpc.compare(accessor, tIndex, storedKeysAccessor, stIndex);
-            if (c == 0) {
-                saIndex = link.pointers[i + 2];
-                break;
-            }
-        }
-        if (saIndex < 0) {
-            // Did not find the key. Insert a new entry.
-            saIndex = accumulatorSize++;
-            // Add keys
-
-            // Add aggregation fields
-            AggregateState newState = aggregator.createAggregateStates();
-
-            stateTupleBuilder.reset();
-            for (int k = 0; k < keys.length; k++) {
-                stateTupleBuilder.addField(accessor, tIndex, keys[k]);
-            }
-
-            aggregator.init(stateTupleBuilder, accessor, tIndex, newState);
-
-            if (!appender.appendSkipEmptyField(stateTupleBuilder.getFieldEndOffsets(),
-                    stateTupleBuilder.getByteArray(), 0, stateTupleBuilder.getSize())) {
-                addNewBuffer();
-                if (!appender.appendSkipEmptyField(stateTupleBuilder.getFieldEndOffsets(),
-                        stateTupleBuilder.getByteArray(), 0, stateTupleBuilder.getSize())) {
-                    throw new HyracksDataException("Cannot init the aggregate state in a single frame.");
-                }
-            }
-
-            if (accumulatorSize >= aggregateStates.length) {
-                aggregateStates = Arrays.copyOf(aggregateStates, aggregateStates.length * 2);
-            }
-
-            aggregateStates[saIndex] = newState;
-
-            link.add(lastBIndex, appender.getTupleCount() - 1, saIndex);
-
-        } else {
-            aggregator.aggregate(accessor, tIndex, null, 0, aggregateStates[saIndex]);
-        }
-    }
-
-    void write(IFrameWriter writer) throws HyracksDataException {
-        appender.reset(outputFrame, true);
-
-        for (int i = 0; i < table.length; ++i) {
-            Link link = table[i];
-            if (link != null) {
-                for (int j = 0; j < link.size; j += 3) {
-                    int bIndex = link.pointers[j];
-                    int tIndex = link.pointers[j + 1];
-                    int aIndex = link.pointers[j + 2];
-                    ByteBuffer keyBuffer = buffers.get(bIndex).getBuffer();
-                    storedKeysAccessor.reset(keyBuffer);
-
-                    // copy keys
-                    outputTupleBuilder.reset();
-                    for (int k = 0; k < storedKeys.length; k++) {
-                        outputTupleBuilder.addField(storedKeysAccessor, tIndex, storedKeys[k]);
-                    }
-
-                    aggregator.outputFinalResult(outputTupleBuilder, storedKeysAccessor, tIndex,
-                            aggregateStates[aIndex]);
-
-                    FrameUtils.appendSkipEmptyFieldToWriter(writer, appender, outputTupleBuilder.getFieldEndOffsets(),
-                            outputTupleBuilder.getByteArray(), 0, outputTupleBuilder.getSize());
-
-                }
-            }
-        }
-        appender.flush(writer, true);
-    }
-
-    void close() throws HyracksDataException {
-        for (AggregateState aState : aggregateStates) {
-            aState.close();
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupBuildOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupBuildOperatorNodePushable.java
deleted file mode 100644
index d9b1b2c..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupBuildOperatorNodePushable.java
+++ /dev/null
@@ -1,93 +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.hyracks.dataflow.std.group.hash;
-
-import java.nio.ByteBuffer;
-
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
-
-class HashGroupBuildOperatorNodePushable extends AbstractUnaryInputSinkOperatorNodePushable {
-    private final IHyracksTaskContext ctx;
-    private final FrameTupleAccessor accessor;
-    private final Object stateId;
-    private final int[] keys;
-    private final ITuplePartitionComputerFactory tpcf;
-    private final IBinaryComparatorFactory[] comparatorFactories;
-    private final IAggregatorDescriptorFactory aggregatorFactory;
-    private final int tableSize;
-    private final RecordDescriptor inRecordDescriptor;
-    private final RecordDescriptor outRecordDescriptor;
-
-    private HashGroupState state;
-
-    HashGroupBuildOperatorNodePushable(IHyracksTaskContext ctx, Object stateId, int[] keys,
-            ITuplePartitionComputerFactory tpcf, IBinaryComparatorFactory[] comparatorFactories,
-            IAggregatorDescriptorFactory aggregatorFactory, int tableSize, RecordDescriptor inRecordDescriptor,
-            RecordDescriptor outRecordDescriptor) {
-        this.ctx = ctx;
-        this.accessor = new FrameTupleAccessor(inRecordDescriptor);
-        this.stateId = stateId;
-        this.keys = keys;
-        this.tpcf = tpcf;
-        this.comparatorFactories = comparatorFactories;
-        this.aggregatorFactory = aggregatorFactory;
-        this.tableSize = tableSize;
-        this.inRecordDescriptor = inRecordDescriptor;
-        this.outRecordDescriptor = outRecordDescriptor;
-    }
-
-    @Override
-    public void open() throws HyracksDataException {
-        state = new HashGroupState(ctx.getJobletContext().getJobId(), stateId);
-        state.setHashTable(new GroupingHashTable(ctx, keys, comparatorFactories, tpcf, aggregatorFactory,
-                inRecordDescriptor, outRecordDescriptor, tableSize));
-    }
-
-    @Override
-    public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-        GroupingHashTable table = state.getHashTable();
-        accessor.reset(buffer);
-        int tupleCount = accessor.getTupleCount();
-        for (int i = 0; i < tupleCount; ++i) {
-            try {
-                table.insert(accessor, i);
-            } catch (Exception e) {
-                System.out.println(e.toString());
-                throw new HyracksDataException(e);
-            }
-        }
-    }
-
-    @Override
-    public void close() throws HyracksDataException {
-        ctx.setStateObject(state);
-    }
-
-    @Override
-    public void fail() throws HyracksDataException {
-        throw new HyracksDataException("HashGroupOperator is failed.");
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java
deleted file mode 100644
index 31ada7b..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java
+++ /dev/null
@@ -1,116 +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.hyracks.dataflow.std.group.hash;
-
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.dataflow.ActivityId;
-import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
-import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
-import org.apache.hyracks.api.dataflow.TaskId;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFactory;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
-import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
-
-/**
- *
- */
-public class HashGroupOperatorDescriptor extends AbstractOperatorDescriptor {
-
-    private static final int HASH_BUILD_ACTIVITY_ID = 0;
-
-    private static final int OUTPUT_ACTIVITY_ID = 1;
-
-    private static final long serialVersionUID = 1L;
-
-    private final int[] keys;
-    private final ITuplePartitionComputerFactory tpcf;
-    private final IBinaryComparatorFactory[] comparatorFactories;
-
-    private final IAggregatorDescriptorFactory aggregatorFactory;
-
-    private final int tableSize;
-
-    public HashGroupOperatorDescriptor(IOperatorDescriptorRegistry spec, int[] keys,
-            ITuplePartitionComputerFactory tpcf, IBinaryComparatorFactory[] comparatorFactories,
-            IAggregatorDescriptorFactory aggregatorFactory, RecordDescriptor outRecordDescriptor, int tableSize) {
-        super(spec, 1, 1);
-        this.keys = keys;
-        this.tpcf = tpcf;
-        this.comparatorFactories = comparatorFactories;
-        this.aggregatorFactory = aggregatorFactory;
-        recordDescriptors[0] = outRecordDescriptor;
-        this.tableSize = tableSize;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.apache.hyracks.api.dataflow.IOperatorDescriptor#contributeActivities
-     * (org.apache.hyracks.api.dataflow.IActivityGraphBuilder)
-     */
-    @Override
-    public void contributeActivities(IActivityGraphBuilder builder) {
-        HashBuildActivity ha = new HashBuildActivity(new ActivityId(odId, HASH_BUILD_ACTIVITY_ID));
-        builder.addActivity(this, ha);
-
-        OutputActivity oa = new OutputActivity(new ActivityId(odId, OUTPUT_ACTIVITY_ID));
-        builder.addActivity(this, oa);
-
-        builder.addSourceEdge(0, ha, 0);
-        builder.addTargetEdge(0, oa, 0);
-        builder.addBlockingEdge(ha, oa);
-    }
-
-    private class HashBuildActivity extends AbstractActivityNode {
-        private static final long serialVersionUID = 1L;
-
-        public HashBuildActivity(ActivityId id) {
-            super(id);
-        }
-
-        @Override
-        public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
-                final IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions) {
-            return new HashGroupBuildOperatorNodePushable(ctx, new TaskId(getActivityId(), partition), keys, tpcf,
-                    comparatorFactories, aggregatorFactory, tableSize, recordDescProvider.getInputRecordDescriptor(
-                            getActivityId(), 0), recordDescriptors[0]);
-        }
-    }
-
-    private class OutputActivity extends AbstractActivityNode {
-        private static final long serialVersionUID = 1L;
-
-        public OutputActivity(ActivityId id) {
-            super(id);
-        }
-
-        @Override
-        public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
-                IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions) {
-            return new HashGroupOutputOperatorNodePushable(ctx, new TaskId(new ActivityId(getOperatorId(),
-                    HASH_BUILD_ACTIVITY_ID), partition));
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOutputOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOutputOperatorNodePushable.java
deleted file mode 100644
index e42b8c6..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOutputOperatorNodePushable.java
+++ /dev/null
@@ -1,48 +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.hyracks.dataflow.std.group.hash;
-
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
-
-class HashGroupOutputOperatorNodePushable extends AbstractUnaryOutputSourceOperatorNodePushable {
-    private final IHyracksTaskContext ctx;
-    private final Object stateId;
-
-    HashGroupOutputOperatorNodePushable(IHyracksTaskContext ctx, Object stateId) {
-        this.ctx = ctx;
-        this.stateId = stateId;
-    }
-
-    @Override
-    public void initialize() throws HyracksDataException {
-        HashGroupState buildState = (HashGroupState) ctx.getStateObject(stateId);
-        GroupingHashTable table = buildState.getHashTable();
-        writer.open();
-        try {
-            table.write(writer);
-        } catch (Exception e) {
-            writer.fail();
-            throw new HyracksDataException(e);
-        } finally {
-            writer.close();
-        }
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupState.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupState.java
deleted file mode 100644
index e96b8aa..0000000
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupState.java
+++ /dev/null
@@ -1,55 +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.hyracks.dataflow.std.group.hash;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hyracks.api.job.JobId;
-import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
-
-public class HashGroupState extends AbstractStateObject {
-    private GroupingHashTable table;
-
-    public HashGroupState() {
-    }
-
-    HashGroupState(JobId jobId, Object id) {
-        super(jobId, id);
-    }
-
-    public GroupingHashTable getHashTable() {
-        return table;
-    }
-
-    public void setHashTable(GroupingHashTable table) {
-        this.table = table;
-    }
-
-    @Override
-    public void toBytes(DataOutput out) throws IOException {
-
-    }
-
-    @Override
-    public void fromBytes(DataInput in) throws IOException {
-
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorDescriptor.java
index a6054d9..8df0002 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorDescriptor.java
@@ -52,4 +52,4 @@
         return new PreclusteredGroupOperatorNodePushable(ctx, groupFields, comparatorFactories, aggregatorFactory,
                 recordDescProvider.getInputRecordDescriptor(getActivityId(), 0), recordDescriptors[0]);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorNodePushable.java
index 7539abf..3286703 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupOperatorNodePushable.java
@@ -73,4 +73,9 @@
     public void close() throws HyracksDataException {
         pgw.close();
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        pgw.flush();
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupWriter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupWriter.java
index 7fa9fcc..30ee3c0 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupWriter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/preclustered/PreclusteredGroupWriter.java
@@ -29,8 +29,8 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppenderWrapper;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppenderWrapper;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.std.group.AggregateState;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptor;
@@ -65,8 +65,8 @@
             RecordDescriptor outRecordDesc, IFrameWriter writer) throws HyracksDataException {
         this.groupFields = groupFields;
         this.comparators = comparators;
-        this.aggregator = aggregatorFactory.createAggregator(ctx, inRecordDesc, outRecordDesc, groupFields,
-                groupFields, writer);
+        this.aggregator = aggregatorFactory.createAggregator(ctx, inRecordDesc, outRecordDesc, groupFields, groupFields,
+                writer);
         this.aggregateState = aggregator.createAggregateStates();
         copyFrame = new VSizeFrame(ctx);
         inFrameAccessor = new FrameTupleAccessor(inRecordDesc);
@@ -138,9 +138,9 @@
         for (int j = 0; j < groupFields.length; j++) {
             tupleBuilder.addField(lastTupleAccessor, lastTupleIndex, groupFields[j]);
         }
-        boolean hasOutput = outputPartial ? aggregator.outputPartialResult(tupleBuilder, lastTupleAccessor,
-                lastTupleIndex, aggregateState) : aggregator.outputFinalResult(tupleBuilder, lastTupleAccessor,
-                lastTupleIndex, aggregateState);
+        boolean hasOutput = outputPartial
+                ? aggregator.outputPartialResult(tupleBuilder, lastTupleAccessor, lastTupleIndex, aggregateState)
+                : aggregator.outputFinalResult(tupleBuilder, lastTupleAccessor, lastTupleIndex, aggregateState);
 
         if (hasOutput) {
             appenderWrapper.appendSkipEmptyField(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
@@ -172,13 +172,16 @@
 
     @Override
     public void close() throws HyracksDataException {
-        if (!isFailed && !first) {
-            assert(copyFrameAccessor.getTupleCount() > 0);
-            writeOutput(copyFrameAccessor, copyFrameAccessor.getTupleCount() - 1);
-            appenderWrapper.flush();
+        try {
+            if (!isFailed && !first) {
+                assert (copyFrameAccessor.getTupleCount() > 0);
+                writeOutput(copyFrameAccessor, copyFrameAccessor.getTupleCount() - 1);
+                appenderWrapper.write();
+            }
+            aggregator.close();
+            aggregateState.close();
+        } finally {
+            appenderWrapper.close();
         }
-        aggregator.close();
-        aggregateState.close();
-        appenderWrapper.close();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunGenerator.java
index d595adb..091d323 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunGenerator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunGenerator.java
@@ -27,18 +27,18 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupWriter;
+import org.apache.hyracks.dataflow.std.sort.AbstractExternalSortRunGenerator;
 import org.apache.hyracks.dataflow.std.sort.Algorithm;
-import org.apache.hyracks.dataflow.std.sort.ExternalSortRunGenerator;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.EnumFreeSlotPolicy;
 
 /**
  * Group-by aggregation is pushed before run file generation.
  *
  * @author yingyib
  */
-public class ExternalSortGroupByRunGenerator extends ExternalSortRunGenerator {
+public class ExternalSortGroupByRunGenerator extends AbstractExternalSortRunGenerator {
 
     private final int[] groupFields;
     private final IBinaryComparatorFactory[] comparatorFactories;
@@ -86,4 +86,4 @@
         return new PreclusteredGroupWriter(ctx, groupFields, comparators, aggregatorFactory,
                 this.inRecordDesc, this.outRecordDesc, writer, true);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunMerger.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunMerger.java
index 7f23bd9..b13c647 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunMerger.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/ExternalSortGroupByRunMerger.java
@@ -27,19 +27,19 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupWriter;
-import org.apache.hyracks.dataflow.std.sort.ExternalSortRunMerger;
+import org.apache.hyracks.dataflow.std.sort.AbstractExternalSortRunMerger;
 import org.apache.hyracks.dataflow.std.sort.ISorter;
-import org.apache.hyracks.dataflow.std.sort.RunAndMaxFrameSizePair;
 
 /**
  * Group-by aggregation is pushed into multi-pass merge of external sort.
  *
  * @author yingyib
  */
-public class ExternalSortGroupByRunMerger extends ExternalSortRunMerger {
+public class ExternalSortGroupByRunMerger extends AbstractExternalSortRunMerger {
 
     private final RecordDescriptor inputRecordDesc;
     private final RecordDescriptor partialAggRecordDesc;
@@ -54,14 +54,14 @@
     private final int[] mergeGroupFields;
     private final IBinaryComparator[] groupByComparators;
 
-    public ExternalSortGroupByRunMerger(IHyracksTaskContext ctx, ISorter frameSorter, List<RunAndMaxFrameSizePair> runs,
+    public ExternalSortGroupByRunMerger(IHyracksTaskContext ctx, ISorter frameSorter, List<GeneratedRunFileReader> runs,
             int[] sortFields, RecordDescriptor inRecordDesc, RecordDescriptor partialAggRecordDesc,
             RecordDescriptor outRecordDesc, int framesLimit, IFrameWriter writer, int[] groupFields,
             INormalizedKeyComputer nmk, IBinaryComparator[] comparators,
             IAggregatorDescriptorFactory partialAggregatorFactory, IAggregatorDescriptorFactory aggregatorFactory,
             boolean localStage) {
-        super(ctx, frameSorter, runs, sortFields, comparators, nmk, partialAggRecordDesc, framesLimit,
-                writer);
+        super(ctx, frameSorter, runs, comparators, nmk, partialAggRecordDesc, framesLimit, writer);
+
         this.inputRecordDesc = inRecordDesc;
         this.partialAggRecordDesc = partialAggRecordDesc;
         this.outRecordDesc = outRecordDesc;
@@ -96,8 +96,8 @@
     protected IFrameWriter prepareSkipMergingFinalResultWriter(IFrameWriter nextWriter) throws HyracksDataException {
         IAggregatorDescriptorFactory aggregatorFactory = localSide ? partialAggregatorFactory : mergeAggregatorFactory;
         boolean outputPartial = false;
-        return new PreclusteredGroupWriter(ctx, groupFields, groupByComparators,
-                aggregatorFactory, inputRecordDesc, outRecordDesc, nextWriter, outputPartial);
+        return new PreclusteredGroupWriter(ctx, groupFields, groupByComparators, aggregatorFactory, inputRecordDesc,
+                outRecordDesc, nextWriter, outputPartial);
     }
 
     @Override
@@ -118,8 +118,8 @@
     @Override
     protected IFrameWriter prepareFinalMergeResultWriter(IFrameWriter nextWriter) throws HyracksDataException {
         boolean outputPartial = false;
-        return new PreclusteredGroupWriter(ctx, mergeGroupFields, groupByComparators,
-                mergeAggregatorFactory, partialAggRecordDesc, outRecordDesc, nextWriter, outputPartial);
+        return new PreclusteredGroupWriter(ctx, mergeGroupFields, groupByComparators, mergeAggregatorFactory,
+                partialAggRecordDesc, outRecordDesc, nextWriter, outputPartial);
     }
 
     @Override
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/SortGroupByOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/SortGroupByOperatorDescriptor.java
index 543e0bf..16d2158 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/SortGroupByOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/sort/SortGroupByOperatorDescriptor.java
@@ -31,13 +31,13 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
+import org.apache.hyracks.dataflow.std.sort.AbstractExternalSortRunMerger;
 import org.apache.hyracks.dataflow.std.sort.AbstractSortRunGenerator;
 import org.apache.hyracks.dataflow.std.sort.AbstractSorterOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.sort.Algorithm;
-import org.apache.hyracks.dataflow.std.sort.ExternalSortRunMerger;
 import org.apache.hyracks.dataflow.std.sort.ISorter;
-import org.apache.hyracks.dataflow.std.sort.RunAndMaxFrameSizePair;
 
 /**
  * This Operator pushes group-by aggregation into the external sort.
@@ -57,17 +57,28 @@
     private Algorithm alg = Algorithm.MERGE_SORT;
 
     /**
-     * @param spec                      , the Hyracks job specification
-     * @param framesLimit               , the frame limit for this operator
-     * @param sortFields                , the fields to sort
-     * @param groupFields               , the fields to group, which can be a prefix subset of sortFields
-     * @param firstKeyNormalizerFactory , the normalized key computer factory of the first key
-     * @param comparatorFactories       , the comparator factories of sort keys
-     * @param partialAggregatorFactory  , for aggregating the input of this operator
-     * @param mergeAggregatorFactory    , for aggregating the intermediate data of this operator
-     * @param partialAggRecordDesc      , the record descriptor of intermediate data
-     * @param outRecordDesc             , the record descriptor of output data
-     * @param finalStage                , whether the operator is used for final stage aggregation
+     * @param spec
+     *            , the Hyracks job specification
+     * @param framesLimit
+     *            , the frame limit for this operator
+     * @param sortFields
+     *            , the fields to sort
+     * @param groupFields
+     *            , the fields to group, which can be a prefix subset of sortFields
+     * @param firstKeyNormalizerFactory
+     *            , the normalized key computer factory of the first key
+     * @param comparatorFactories
+     *            , the comparator factories of sort keys
+     * @param partialAggregatorFactory
+     *            , for aggregating the input of this operator
+     * @param mergeAggregatorFactory
+     *            , for aggregating the intermediate data of this operator
+     * @param partialAggRecordDesc
+     *            , the record descriptor of intermediate data
+     * @param outRecordDesc
+     *            , the record descriptor of output data
+     * @param finalStage
+     *            , whether the operator is used for final stage aggregation
      */
     public SortGroupByOperatorDescriptor(IOperatorDescriptorRegistry spec, int framesLimit, int[] sortFields,
             int[] groupFields, INormalizedKeyComputerFactory firstKeyNormalizerFactory,
@@ -88,30 +99,6 @@
         this.finalStage = finalStage;
     }
 
-    /**
-     * @param spec                      , the Hyracks job specification
-     * @param framesLimit               , the frame limit for this operator
-     * @param sortFields                , the fields to sort
-     * @param groupFields               , the fields to group, which can be a prefix subset of sortFields
-     * @param firstKeyNormalizerFactory , the normalized key computer factory of the first key
-     * @param comparatorFactories       , the comparator factories of sort keys
-     * @param partialAggregatorFactory  , for aggregating the input of this operator
-     * @param mergeAggregatorFactory    , for aggregating the intermediate data of this operator
-     * @param partialAggRecordDesc      , the record descriptor of intermediate data
-     * @param outRecordDesc             , the record descriptor of output data
-     * @param finalStage                , whether the operator is used for final stage aggregation
-     * @param alg                       , the in-memory sort algorithm
-     */
-    public SortGroupByOperatorDescriptor(IOperatorDescriptorRegistry spec, int framesLimit, int[] sortFields,
-            int[] groupFields, INormalizedKeyComputerFactory firstKeyNormalizerFactory,
-            IBinaryComparatorFactory[] comparatorFactories, IAggregatorDescriptorFactory partialAggregatorFactory,
-            IAggregatorDescriptorFactory mergeAggregatorFactory, RecordDescriptor partialAggRecordDesc,
-            RecordDescriptor outRecordDesc, boolean finalStage, Algorithm alg) {
-        this(spec, framesLimit, sortFields, groupFields, firstKeyNormalizerFactory, comparatorFactories,
-                partialAggregatorFactory, mergeAggregatorFactory, partialAggRecordDesc, outRecordDesc, finalStage);
-        this.alg = alg;
-    }
-
     @Override
     public AbstractSorterOperatorDescriptor.SortActivity getSortActivity(ActivityId id) {
         return new AbstractSorterOperatorDescriptor.SortActivity(id) {
@@ -131,9 +118,9 @@
         return new AbstractSorterOperatorDescriptor.MergeActivity(id) {
 
             @Override
-            protected ExternalSortRunMerger getSortRunMerger(IHyracksTaskContext ctx,
+            protected AbstractExternalSortRunMerger getSortRunMerger(IHyracksTaskContext ctx,
                     IRecordDescriptorProvider recordDescProvider, IFrameWriter writer, ISorter sorter,
-                    List<RunAndMaxFrameSizePair> runs, IBinaryComparator[] comparators,
+                    List<GeneratedRunFileReader> runs, IBinaryComparator[] comparators,
                     INormalizedKeyComputer nmkComputer, int necessaryFrames) {
                 return new ExternalSortGroupByRunMerger(ctx, sorter, runs, sortFields,
                         recordDescProvider.getInputRecordDescriptor(new ActivityId(odId, SORT_ACTIVITY_ID), 0),
@@ -142,4 +129,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java
new file mode 100644
index 0000000..98807eb
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/intersect/IntersectOperatorDescriptor.java
@@ -0,0 +1,363 @@
+/*
+ * 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.hyracks.dataflow.std.intersect;
+
+import java.nio.ByteBuffer;
+import java.util.BitSet;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.ActivityId;
+import org.apache.hyracks.api.dataflow.IActivity;
+import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.exceptions.HyracksException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
+import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputOperatorNodePushable;
+
+/**
+ * This intersection operator is to get the common elements from multiple way inputs.
+ * It will only produce the projected fields which are used for comparison.
+ */
+public class IntersectOperatorDescriptor extends AbstractOperatorDescriptor {
+
+    private final int[][] projectFields;
+    private final INormalizedKeyComputerFactory firstKeyNormalizerFactory;
+    private final IBinaryComparatorFactory[] comparatorFactory;
+
+    /**
+     * @param spec
+     * @param nInputs                   Number of inputs
+     * @param compareAndProjectFields   The project field list of each input.
+     *                                  All the fields order should be the same with the comparatorFactories
+     * @param firstKeyNormalizerFactory Normalizer for the first comparison key.
+     * @param comparatorFactories       A list of comparators for each field
+     * @param recordDescriptor
+     * @throws HyracksException
+     */
+    public IntersectOperatorDescriptor(IOperatorDescriptorRegistry spec, int nInputs, int[][] compareAndProjectFields,
+            INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
+            RecordDescriptor recordDescriptor) throws HyracksException {
+        super(spec, nInputs, 1);
+        recordDescriptors[0] = recordDescriptor;
+
+        validateParameters(compareAndProjectFields, comparatorFactories);
+
+        this.projectFields = compareAndProjectFields;
+        this.firstKeyNormalizerFactory = firstKeyNormalizerFactory;
+        this.comparatorFactory = comparatorFactories;
+    }
+
+    private void validateParameters(int[][] compareAndProjectFields, IBinaryComparatorFactory[] comparatorFactories)
+            throws HyracksException {
+
+        int firstLength = compareAndProjectFields[0].length;
+        for (int[] fields : compareAndProjectFields) {
+            if (fields.length != firstLength) {
+                throw new HyracksException("The given input comparison fields is not equal");
+            }
+            for (int fid : fields) {
+                if (fid < 0) {
+                    throw new HyracksException("Invalid field index in given comparison fields array");
+                }
+            }
+        }
+
+        if (firstLength != comparatorFactories.length) {
+            throw new HyracksException("The size of given fields is not equal with the number of comparators");
+        }
+    }
+
+    @Override
+    public void contributeActivities(IActivityGraphBuilder builder) {
+        IActivity intersectActivity = new IntersectActivity(new ActivityId(getOperatorId(), 0));
+        builder.addActivity(this, intersectActivity);
+        for (int i = 0; i < getInputArity(); i++) {
+            builder.addSourceEdge(i, intersectActivity, i);
+        }
+        builder.addTargetEdge(0, intersectActivity, 0);
+    }
+
+    private class IntersectActivity extends AbstractActivityNode {
+
+        public IntersectActivity(ActivityId activityId) {
+            super(activityId);
+        }
+
+        @Override
+        public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
+                IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
+                throws HyracksDataException {
+            RecordDescriptor[] inputRecordDesc = new RecordDescriptor[inputArity];
+            for (int i = 0; i < inputRecordDesc.length; i++) {
+                inputRecordDesc[i] = recordDescProvider.getInputRecordDescriptor(getActivityId(), i);
+            }
+            return new IntersectOperatorNodePushable(ctx, inputArity, inputRecordDesc, projectFields,
+                    firstKeyNormalizerFactory, comparatorFactory);
+        }
+    }
+
+    public static class IntersectOperatorNodePushable extends AbstractUnaryOutputOperatorNodePushable {
+
+        private enum ACTION {FAILED, CLOSE}
+
+        private final int inputArity;
+        private final int[][] projectFields;
+        private final BitSet consumed;
+        private final int[] tupleIndexMarker;
+        private final FrameTupleAccessor[] refAccessor;
+        private final FrameTupleAppender appender;
+
+        private final INormalizedKeyComputer firstKeyNormalizerComputer;
+        private final IBinaryComparator[] comparators;
+
+        private boolean done = false;
+
+        public IntersectOperatorNodePushable(IHyracksTaskContext ctx, int inputArity,
+                RecordDescriptor[] inputRecordDescriptors, int[][] projectFields,
+                INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactory)
+                throws HyracksDataException {
+
+            this.inputArity = inputArity;
+            this.projectFields = projectFields;
+            this.firstKeyNormalizerComputer =
+                    firstKeyNormalizerFactory == null ? null : firstKeyNormalizerFactory.createNormalizedKeyComputer();
+
+            comparators = new IBinaryComparator[projectFields[0].length];
+            for (int i = 0; i < comparators.length; i++) {
+                comparators[i] = comparatorFactory[i].createBinaryComparator();
+            }
+
+            appender = new FrameTupleAppender(new VSizeFrame(ctx));
+
+            refAccessor = new FrameTupleAccessor[inputArity];
+            for (int i = 0; i < inputArity; i++) {
+                refAccessor[i] = new FrameTupleAccessor(inputRecordDescriptors[i]);
+            }
+
+            consumed = new BitSet(inputArity);
+            consumed.set(0, inputArity);
+            tupleIndexMarker = new int[inputArity];
+        }
+
+        @Override
+        public int getInputArity() {
+            return inputArity;
+        }
+
+        @Override
+        public IFrameWriter getInputFrameWriter(final int index) {
+            return new IFrameWriter() {
+                @Override
+                public void open() throws HyracksDataException {
+                    if (index == 0) {
+                        writer.open();
+                    }
+                }
+
+                @Override
+                public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+                    synchronized (IntersectOperatorNodePushable.this) {
+                        if (done) {
+                            return;
+                        }
+                        refAccessor[index].reset(buffer);
+                        tupleIndexMarker[index] = 0;
+                        consumed.clear(index);
+                        if (index != 0) {
+                            if (allInputArrived()) {
+                                IntersectOperatorNodePushable.this.notifyAll();
+                            }
+                            while (!consumed.get(index) && !done) {
+                                waitOrHyracksException();
+                            }
+                        } else { //(index == 0)
+                            while (!consumed.get(0)) {
+                                while (!allInputArrived() && !done) {
+                                    waitOrHyracksException();
+                                }
+                                if (done) {
+                                    break;
+                                }
+                                intersectAllInputs();
+                                IntersectOperatorNodePushable.this.notifyAll();
+                            }
+                        }
+                    }
+                }
+
+                private void waitOrHyracksException() throws HyracksDataException {
+                    try {
+                        IntersectOperatorNodePushable.this.wait();
+                    } catch (InterruptedException e) {
+                        throw new HyracksDataException(e);
+                    }
+                }
+
+                private boolean allInputArrived() {
+                    return consumed.cardinality() == 0;
+                }
+
+                private void intersectAllInputs() throws HyracksDataException {
+                    do {
+                        int maxInput = findMaxInput();
+                        int match = 1;
+                        boolean needToUpdateMax = false;
+                        for (int i = 0; i < inputArity; i++) {
+                            if (i == maxInput) {
+                                continue;
+                            }
+                            while (tupleIndexMarker[i] < refAccessor[i].getTupleCount()) {
+                                int cmp = compare(i, refAccessor[i], tupleIndexMarker[i], maxInput,
+                                        refAccessor[maxInput], tupleIndexMarker[maxInput]);
+                                if (cmp == 0) {
+                                    match++;
+                                    break;
+                                } else if (cmp < 0) {
+                                    tupleIndexMarker[i]++;
+                                } else {
+                                    needToUpdateMax = true;
+                                    break;
+                                }
+                            }
+
+                            if (tupleIndexMarker[i] >= refAccessor[i].getTupleCount()) {
+                                consumed.set(i);
+                            }
+                        }
+                        if (match == inputArity) {
+                            FrameUtils.appendProjectionToWriter(writer, appender, refAccessor[maxInput],
+                                    tupleIndexMarker[maxInput], projectFields[maxInput]);
+                            for (int i = 0; i < inputArity; i++) {
+                                tupleIndexMarker[i]++;
+                                if (tupleIndexMarker[i] >= refAccessor[i].getTupleCount()) {
+                                    consumed.set(i);
+                                }
+                            }
+                        } else if (needToUpdateMax) {
+                            tupleIndexMarker[maxInput]++;
+                            if (tupleIndexMarker[maxInput] >= refAccessor[maxInput].getTupleCount()) {
+                                consumed.set(maxInput);
+                            }
+                        }
+
+                    } while (consumed.nextSetBit(0) < 0);
+                    appender.write(writer, true);
+                }
+
+                private int compare(int input1, FrameTupleAccessor frameTupleAccessor1, int tid1, int input2,
+                        FrameTupleAccessor frameTupleAccessor2, int tid2) throws HyracksDataException {
+                    int firstNorm1 = getFirstNorm(input1, frameTupleAccessor1, tid1);
+                    int firstNorm2 = getFirstNorm(input2, frameTupleAccessor2, tid2);
+
+                    if (firstNorm1 < firstNorm2) {
+                        return -1;
+                    } else if (firstNorm1 > firstNorm2) {
+                        return 1;
+                    }
+
+                    for (int i = 0; i < comparators.length; i++) {
+                        int cmp = comparators[i].compare(frameTupleAccessor1.getBuffer().array(),
+                                frameTupleAccessor1.getAbsoluteFieldStartOffset(tid1, projectFields[input1][i]),
+                                frameTupleAccessor1.getFieldLength(tid1, projectFields[input1][i]),
+                                frameTupleAccessor2.getBuffer().array(),
+                                frameTupleAccessor2.getAbsoluteFieldStartOffset(tid2, projectFields[input2][i]),
+                                frameTupleAccessor2.getFieldLength(tid2, projectFields[input2][i]));
+
+                        if (cmp != 0) {
+                            return cmp;
+                        }
+                    }
+                    return 0;
+                }
+
+                private int getFirstNorm(int inputId1, FrameTupleAccessor frameTupleAccessor1, int tid1) {
+                    return firstKeyNormalizerComputer == null ?
+                            0 :
+                            firstKeyNormalizerComputer.normalize(frameTupleAccessor1.getBuffer().array(),
+                                    frameTupleAccessor1.getAbsoluteFieldStartOffset(tid1, projectFields[inputId1][0]),
+                                    frameTupleAccessor1.getFieldLength(tid1, projectFields[inputId1][0]));
+                }
+
+                private int findMaxInput() throws HyracksDataException {
+                    int max = 0;
+                    for (int i = 1; i < inputArity; i++) {
+                        int cmp = compare(max, refAccessor[max], tupleIndexMarker[max], i, refAccessor[i],
+                                tupleIndexMarker[i]);
+                        if (cmp < 0) {
+                            max = i;
+                        }
+                    }
+                    return max;
+                }
+
+                @Override
+                public void fail() throws HyracksDataException {
+                    clearStateWith(ACTION.FAILED);
+                }
+
+                @Override
+                public void close() throws HyracksDataException {
+                    clearStateWith(ACTION.CLOSE);
+                }
+
+                private void clearStateWith(ACTION action) throws HyracksDataException {
+                    synchronized (IntersectOperatorNodePushable.this) {
+                        if (index == 0) {
+                            doAction(action);
+                        }
+                        if (done) {
+                            return;
+                        }
+                        consumed.set(index);
+                        refAccessor[index] = null;
+                        done = true;
+                        IntersectOperatorNodePushable.this.notifyAll();
+                    }
+                }
+
+                private void doAction(ACTION action) throws HyracksDataException {
+                    switch (action) {
+                        case CLOSE:
+                            writer.close();
+                            break;
+                        case FAILED:
+                            writer.fail();
+                            break;
+                    }
+                }
+
+            };
+        }
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java
index 3037143..4e4256e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java
@@ -153,7 +153,7 @@
             final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(spartAid, 0);
             int numPartitions = (int) Math.ceil(Math.sqrt(inputsize0 * factor / nPartitions));
             final IPredicateEvaluator predEvaluator = ( predEvaluatorFactory == null ? null : predEvaluatorFactory.createPredicateEvaluator() );
-            
+
             return new GraceHashJoinOperatorNodePushable(ctx, new TaskId(new ActivityId(getOperatorId(),
                     RPARTITION_ACTIVITY_ID), partition), new TaskId(new ActivityId(getOperatorId(),
                     SPARTITION_ACTIVITY_ID), partition), recordsPerFrame, factor, keys0, keys1, hashFunctionFactories,
@@ -161,4 +161,4 @@
                     predEvaluator, isLeftOuter);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorNodePushable.java
index d50d307..69e9e6a 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorNodePushable.java
@@ -33,7 +33,7 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.common.data.partition.RepartitionComputerFactory;
@@ -104,11 +104,8 @@
                 nullWriters1[i] = nullWriterFactories[i].createNullWriter();
             }
         }
-
-        writer.open();// open for probe
-
         try {
-
+            writer.open();// open for probe
             IFrame buffer = new VSizeFrame(ctx);
             // buffer
             int tableSize = (int) (numPartitions * recordsPerFrame * factor);
@@ -127,7 +124,7 @@
 
                 // build
                 if (buildWriter != null) {
-                    RunFileReader buildReader = buildWriter.createReader();
+                    RunFileReader buildReader = buildWriter.createDeleteOnCloseReader();
                     buildReader.open();
                     while (buildReader.nextFrame(buffer)) {
                         ByteBuffer copyBuffer = ctx.allocateFrame(buffer.getFrameSize());
@@ -139,7 +136,7 @@
                 }
 
                 // probe
-                RunFileReader probeReader = probeWriter.createReader();
+                RunFileReader probeReader = probeWriter.createDeleteOnCloseReader();
                 probeReader.open();
                 while (probeReader.nextFrame(buffer)) {
                     joiner.join(buffer.getBuffer(), writer);
@@ -148,11 +145,11 @@
                 probeReader.close();
                 joiner.closeJoin(writer);
             }
-        } catch (Exception e) {
+        } catch (Throwable th) {
             writer.fail();
-            throw new HyracksDataException(e);
+            throw new HyracksDataException(th);
         } finally {
             writer.close();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionBuildOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionBuildOperatorNodePushable.java
index e6e0afd..5a5543b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionBuildOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionBuildOperatorNodePushable.java
@@ -131,4 +131,4 @@
     @Override
     public void fail() throws HyracksDataException {
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionState.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionState.java
index eaf1792..a970a6c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionState.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinPartitionState.java
@@ -50,4 +50,4 @@
     public void fromBytes(DataInput in) throws IOException {
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/HybridHashJoinOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/HybridHashJoinOperatorDescriptor.java
index e115937..d0a81ee 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/HybridHashJoinOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/HybridHashJoinOperatorDescriptor.java
@@ -47,7 +47,7 @@
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.common.data.partition.RepartitionComputerFactory;
@@ -80,8 +80,10 @@
 
     /**
      * @param spec
-     * @param memsize               in frames
-     * @param inputsize0            in frames
+     * @param memsize
+     *            in frames
+     * @param inputsize0
+     *            in frames
      * @param recordsPerFrame
      * @param factor
      * @param keys0
@@ -94,25 +96,6 @@
     public HybridHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int memsize, int inputsize0,
             int recordsPerFrame, double factor, int[] keys0, int[] keys1,
             IBinaryHashFunctionFactory[] hashFunctionFactories, IBinaryComparatorFactory[] comparatorFactories,
-            RecordDescriptor recordDescriptor, IPredicateEvaluatorFactory predEvalFactory) throws HyracksDataException {
-        super(spec, 2, 1);
-        this.memsize = memsize;
-        this.inputsize0 = inputsize0;
-        this.factor = factor;
-        this.recordsPerFrame = recordsPerFrame;
-        this.keys0 = keys0;
-        this.keys1 = keys1;
-        this.hashFunctionFactories = hashFunctionFactories;
-        this.comparatorFactories = comparatorFactories;
-        this.predEvaluatorFactory = predEvalFactory;
-        this.isLeftOuter = false;
-        this.nullWriterFactories1 = null;
-        recordDescriptors[0] = recordDescriptor;
-    }
-
-    public HybridHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int memsize, int inputsize0,
-            int recordsPerFrame, double factor, int[] keys0, int[] keys1,
-            IBinaryHashFunctionFactory[] hashFunctionFactories, IBinaryComparatorFactory[] comparatorFactories,
             RecordDescriptor recordDescriptor, IPredicateEvaluatorFactory predEvalFactory, boolean isLeftOuter,
             INullWriterFactory[] nullWriterFactories1) throws HyracksDataException {
         super(spec, 2, 1);
@@ -186,7 +169,7 @@
         @Override
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions)
-                throws HyracksDataException {
+                        throws HyracksDataException {
             final RecordDescriptor rd0 = recordDescProvider.getInputRecordDescriptor(joinAid, 0);
             final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
             final IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
@@ -199,12 +182,12 @@
                     nullWriters1[i] = nullWriterFactories1[i].createNullWriter();
                 }
             }
-            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null : predEvaluatorFactory
-                    .createPredicateEvaluator());
+            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null
+                    : predEvaluatorFactory.createPredicateEvaluator());
 
             IOperatorNodePushable op = new AbstractUnaryInputSinkOperatorNodePushable() {
-                private BuildAndPartitionTaskState state = new BuildAndPartitionTaskState(ctx.getJobletContext()
-                        .getJobId(), new TaskId(getActivityId(), partition));
+                private BuildAndPartitionTaskState state = new BuildAndPartitionTaskState(
+                        ctx.getJobletContext().getJobId(), new TaskId(getActivityId(), partition));
                 private final FrameTupleAccessor accessorBuild = new FrameTupleAccessor(rd1);
                 private final ITuplePartitionComputer hpcBuild = new FieldHashPartitionComputerFactory(keys1,
                         hashFunctionFactories).createPartitioner();
@@ -300,8 +283,8 @@
                         if (memsize > inputsize0) {
                             state.nPartitions = 0;
                         } else {
-                            state.nPartitions = (int) (Math.ceil((double) (inputsize0 * factor / nPartitions - memsize)
-                                    / (double) (memsize - 1)));
+                            state.nPartitions = (int) (Math
+                                    .ceil((inputsize0 * factor / nPartitions - memsize) / (memsize - 1)));
                         }
                         if (state.nPartitions <= 0) {
                             // becomes in-memory HJ
@@ -324,10 +307,9 @@
                             .createPartitioner();
                     int tableSize = (int) (state.memoryForHashtable * recordsPerFrame * factor);
                     ISerializableTable table = new SerializableHashTable(tableSize, ctx);
-                    state.joiner = new InMemoryHashJoin(ctx, tableSize,
-                            new FrameTupleAccessor(rd0), hpc0, new FrameTupleAccessor(rd1), hpc1,
-                            new FrameTuplePairComparator(keys0, keys1, comparators), isLeftOuter, nullWriters1, table,
-                            predEvaluator);
+                    state.joiner = new InMemoryHashJoin(ctx, tableSize, new FrameTupleAccessor(rd0), hpc0,
+                            new FrameTupleAccessor(rd1), hpc1, new FrameTuplePairComparator(keys0, keys1, comparators),
+                            isLeftOuter, nullWriters1, table, predEvaluator);
                     bufferForPartitions = new IFrame[state.nPartitions];
                     state.fWriters = new RunFileWriter[state.nPartitions];
                     for (int i = 0; i < state.nPartitions; i++) {
@@ -351,8 +333,8 @@
                 private void write(int i, ByteBuffer head) throws HyracksDataException {
                     RunFileWriter writer = state.fWriters[i];
                     if (writer == null) {
-                        FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(
-                                BuildAndPartitionActivityNode.class.getSimpleName());
+                        FileReference file = ctx.getJobletContext()
+                                .createManagedWorkspaceFile(BuildAndPartitionActivityNode.class.getSimpleName());
                         writer = new RunFileWriter(file, ctx.getIOManager());
                         writer.open();
                         state.fWriters[i] = writer;
@@ -377,7 +359,7 @@
         @Override
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions)
-                throws HyracksDataException {
+                        throws HyracksDataException {
             final RecordDescriptor rd0 = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
             final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(buildAid, 0);
             final IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
@@ -390,8 +372,8 @@
                     nullWriters1[i] = nullWriterFactories1[i].createNullWriter();
                 }
             }
-            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null : predEvaluatorFactory
-                    .createPredicateEvaluator());
+            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null
+                    : predEvaluatorFactory.createPredicateEvaluator());
 
             IOperatorNodePushable op = new AbstractUnaryInputUnaryOutputOperatorNodePushable() {
                 private BuildAndPartitionTaskState state;
@@ -412,9 +394,9 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = (BuildAndPartitionTaskState) ctx.getStateObject(new TaskId(new ActivityId(getOperatorId(),
-                            BUILD_AND_PARTITION_ACTIVITY_ID), partition));
                     writer.open();
+                    state = (BuildAndPartitionTaskState) ctx.getStateObject(
+                            new TaskId(new ActivityId(getOperatorId(), BUILD_AND_PARTITION_ACTIVITY_ID), partition));
                     buildWriters = state.fWriters;
                     probeWriters = new RunFileWriter[state.nPartitions];
                     bufferForPartitions = new IFrame[state.nPartitions];
@@ -432,7 +414,7 @@
                         int tupleCount0 = accessorProbe.getTupleCount();
                         for (int i = 0; i < tupleCount0; ++i) {
 
-                            int entry ;
+                            int entry;
                             if (state.memoryForHashtable == 0) {
                                 entry = hpcProbe.partition(accessorProbe, i, state.nPartitions);
                                 boolean newBuffer = false;
@@ -482,66 +464,69 @@
 
                 @Override
                 public void close() throws HyracksDataException {
-                    state.joiner.join(inBuffer.getBuffer(), writer);
-                    state.joiner.closeJoin(writer);
-                    ITuplePartitionComputer hpcRep0 = new RepartitionComputerFactory(state.nPartitions, hpcf0)
-                            .createPartitioner();
-                    ITuplePartitionComputer hpcRep1 = new RepartitionComputerFactory(state.nPartitions, hpcf1)
-                            .createPartitioner();
-                    if (state.memoryForHashtable != memsize - 2) {
-                        for (int i = 0; i < state.nPartitions; i++) {
-                            ByteBuffer buf = bufferForPartitions[i].getBuffer();
-                            accessorProbe.reset(buf);
-                            if (accessorProbe.getTupleCount() > 0) {
-                                write(i, buf);
+                    try {
+                        state.joiner.join(inBuffer.getBuffer(), writer);
+                        state.joiner.closeJoin(writer);
+                        ITuplePartitionComputer hpcRep0 = new RepartitionComputerFactory(state.nPartitions, hpcf0)
+                                .createPartitioner();
+                        ITuplePartitionComputer hpcRep1 = new RepartitionComputerFactory(state.nPartitions, hpcf1)
+                                .createPartitioner();
+                        if (state.memoryForHashtable != memsize - 2) {
+                            for (int i = 0; i < state.nPartitions; i++) {
+                                ByteBuffer buf = bufferForPartitions[i].getBuffer();
+                                accessorProbe.reset(buf);
+                                if (accessorProbe.getTupleCount() > 0) {
+                                    write(i, buf);
+                                }
+                                closeWriter(i);
                             }
-                            closeWriter(i);
-                        }
 
-                        inBuffer.reset();
-                        int tableSize = -1;
-                        if (state.memoryForHashtable == 0) {
-                            tableSize = (int) (state.nPartitions * recordsPerFrame * factor);
-                        } else {
-                            tableSize = (int) (memsize * recordsPerFrame * factor);
-                        }
-                        ISerializableTable table = new SerializableHashTable(tableSize, ctx);
-                        for (int partitionid = 0; partitionid < state.nPartitions; partitionid++) {
-                            RunFileWriter buildWriter = buildWriters[partitionid];
-                            RunFileWriter probeWriter = probeWriters[partitionid];
-                            if ((buildWriter == null && !isLeftOuter) || probeWriter == null) {
-                                continue;
+                            inBuffer.reset();
+                            int tableSize = -1;
+                            if (state.memoryForHashtable == 0) {
+                                tableSize = (int) (state.nPartitions * recordsPerFrame * factor);
+                            } else {
+                                tableSize = (int) (memsize * recordsPerFrame * factor);
                             }
-                            table.reset();
-                            InMemoryHashJoin joiner = new InMemoryHashJoin(ctx, tableSize, new FrameTupleAccessor(
-                                    rd0), hpcRep0, new FrameTupleAccessor(rd1), hpcRep1,
-                                    new FrameTuplePairComparator(keys0, keys1, comparators), isLeftOuter, nullWriters1,
-                                    table, predEvaluator);
+                            ISerializableTable table = new SerializableHashTable(tableSize, ctx);
+                            for (int partitionid = 0; partitionid < state.nPartitions; partitionid++) {
+                                RunFileWriter buildWriter = buildWriters[partitionid];
+                                RunFileWriter probeWriter = probeWriters[partitionid];
+                                if ((buildWriter == null && !isLeftOuter) || probeWriter == null) {
+                                    continue;
+                                }
+                                table.reset();
+                                InMemoryHashJoin joiner = new InMemoryHashJoin(ctx, tableSize,
+                                        new FrameTupleAccessor(rd0), hpcRep0, new FrameTupleAccessor(rd1), hpcRep1,
+                                        new FrameTuplePairComparator(keys0, keys1, comparators), isLeftOuter,
+                                        nullWriters1, table, predEvaluator);
 
-                            if (buildWriter != null) {
-                                RunFileReader buildReader = buildWriter.createReader();
-                                buildReader.open();
-                                while (buildReader.nextFrame(inBuffer)) {
-                                    ByteBuffer copyBuffer = ctx.allocateFrame(inBuffer.getFrameSize());
-                                    FrameUtils.copyAndFlip(inBuffer.getBuffer(), copyBuffer);
-                                    joiner.build(copyBuffer);
+                                if (buildWriter != null) {
+                                    RunFileReader buildReader = buildWriter.createDeleteOnCloseReader();
+                                    buildReader.open();
+                                    while (buildReader.nextFrame(inBuffer)) {
+                                        ByteBuffer copyBuffer = ctx.allocateFrame(inBuffer.getFrameSize());
+                                        FrameUtils.copyAndFlip(inBuffer.getBuffer(), copyBuffer);
+                                        joiner.build(copyBuffer);
+                                        inBuffer.reset();
+                                    }
+                                    buildReader.close();
+                                }
+
+                                // probe
+                                RunFileReader probeReader = probeWriter.createDeleteOnCloseReader();
+                                probeReader.open();
+                                while (probeReader.nextFrame(inBuffer)) {
+                                    joiner.join(inBuffer.getBuffer(), writer);
                                     inBuffer.reset();
                                 }
-                                buildReader.close();
+                                probeReader.close();
+                                joiner.closeJoin(writer);
                             }
-
-                            // probe
-                            RunFileReader probeReader = probeWriter.createReader();
-                            probeReader.open();
-                            while (probeReader.nextFrame(inBuffer)) {
-                                joiner.join(inBuffer.getBuffer(), writer);
-                                inBuffer.reset();
-                            }
-                            probeReader.close();
-                            joiner.closeJoin(writer);
                         }
+                    } finally {
+                        writer.close();
                     }
-                    writer.close();
                 }
 
                 private void closeWriter(int i) throws HyracksDataException {
@@ -554,8 +539,8 @@
                 private void write(int i, ByteBuffer head) throws HyracksDataException {
                     RunFileWriter writer = probeWriters[i];
                     if (writer == null) {
-                        FileReference file = ctx.createManagedWorkspaceFile(PartitionAndJoinActivityNode.class
-                                .getSimpleName());
+                        FileReference file = ctx
+                                .createManagedWorkspaceFile(PartitionAndJoinActivityNode.class.getSimpleName());
                         writer = new RunFileWriter(file, ctx.getIOManager());
                         writer.open();
                         probeWriters[i] = writer;
@@ -571,4 +556,4 @@
             return op;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
index 2a66fb7..fee7dd8 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoin.java
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.logging.Logger;
 
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.comm.VSizeFrame;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -34,10 +35,10 @@
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.std.structures.ISerializableTable;
 import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 
 public class InMemoryHashJoin {
 
@@ -45,7 +46,7 @@
     private final List<ByteBuffer> buffers;
     private final FrameTupleAccessor accessorBuild;
     private final ITuplePartitionComputer tpcBuild;
-    private final FrameTupleAccessor accessorProbe;
+    private IFrameTupleAccessor accessorProbe;
     private final ITuplePartitionComputer tpcProbe;
     private final FrameTupleAppender appender;
     private final FrameTuplePairComparator tpComparator;
@@ -59,37 +60,38 @@
 
     private static final Logger LOGGER = Logger.getLogger(InMemoryHashJoin.class.getName());
 
-    public InMemoryHashJoin(IHyracksTaskContext ctx, int tableSize, FrameTupleAccessor accessor0,
-            ITuplePartitionComputer tpc0, FrameTupleAccessor accessor1, ITuplePartitionComputer tpc1,
-            FrameTuplePairComparator comparator, boolean isLeftOuter, INullWriter[] nullWriters1,
+    public InMemoryHashJoin(IHyracksTaskContext ctx, int tableSize, FrameTupleAccessor accessorProbe,
+            ITuplePartitionComputer tpcProbe, FrameTupleAccessor accessorBuild, ITuplePartitionComputer tpcBuild,
+            FrameTuplePairComparator comparator, boolean isLeftOuter, INullWriter[] nullWritersBuild,
             ISerializableTable table, IPredicateEvaluator predEval) throws HyracksDataException {
-        this(ctx, tableSize, accessor0, tpc0, accessor1, tpc1, comparator, isLeftOuter, nullWriters1, table, predEval,
+        this(ctx, tableSize, accessorProbe, tpcProbe, accessorBuild, tpcBuild, comparator, isLeftOuter,
+                nullWritersBuild, table, predEval,
                 false);
     }
 
-    public InMemoryHashJoin(IHyracksTaskContext ctx, int tableSize, FrameTupleAccessor accessor0,
-            ITuplePartitionComputer tpc0, FrameTupleAccessor accessor1, ITuplePartitionComputer tpc1,
-            FrameTuplePairComparator comparator, boolean isLeftOuter, INullWriter[] nullWriters1,
+    public InMemoryHashJoin(IHyracksTaskContext ctx, int tableSize, FrameTupleAccessor accessorProbe,
+            ITuplePartitionComputer tpcProbe, FrameTupleAccessor accessorBuild, ITuplePartitionComputer tpcBuild,
+            FrameTuplePairComparator comparator, boolean isLeftOuter, INullWriter[] nullWritersBuild,
             ISerializableTable table, IPredicateEvaluator predEval, boolean reverse) throws HyracksDataException {
         this.ctx = ctx;
         this.tableSize = tableSize;
         this.table = table;
         storedTuplePointer = new TuplePointer();
         buffers = new ArrayList<ByteBuffer>();
-        this.accessorBuild = accessor1;
-        this.tpcBuild = tpc1;
-        this.accessorProbe = accessor0;
-        this.tpcProbe = tpc0;
+        this.accessorBuild = accessorBuild;
+        this.tpcBuild = tpcBuild;
+        this.accessorProbe = accessorProbe;
+        this.tpcProbe = tpcProbe;
         appender = new FrameTupleAppender(new VSizeFrame(ctx));
         tpComparator = comparator;
         predEvaluator = predEval;
         this.isLeftOuter = isLeftOuter;
         if (isLeftOuter) {
-            int fieldCountOuter = accessor1.getFieldCount();
+            int fieldCountOuter = accessorBuild.getFieldCount();
             nullTupleBuild = new ArrayTupleBuilder(fieldCountOuter);
             DataOutput out = nullTupleBuild.getDataOutput();
             for (int i = 0; i < fieldCountOuter; i++) {
-                nullWriters1[i].writeNull(out);
+                nullWritersBuild[i].writeNull(out);
                 nullTupleBuild.addFieldEndOffset();
             }
         } else {
@@ -113,41 +115,46 @@
         }
     }
 
+    void join(IFrameTupleAccessor accessorProbe, int tid, IFrameWriter writer) throws HyracksDataException {
+        this.accessorProbe = accessorProbe;
+        boolean matchFound = false;
+        if (tableSize != 0) {
+            int entry = tpcProbe.partition(accessorProbe, tid, tableSize);
+            int offset = 0;
+            do {
+                table.getTuplePointer(entry, offset++, storedTuplePointer);
+                if (storedTuplePointer.frameIndex < 0)
+                    break;
+                int bIndex = storedTuplePointer.frameIndex;
+                int tIndex = storedTuplePointer.tupleIndex;
+                accessorBuild.reset(buffers.get(bIndex));
+                int c = tpComparator.compare(accessorProbe, tid, accessorBuild, tIndex);
+                if (c == 0) {
+                    boolean predEval = evaluatePredicate(tid, tIndex);
+                    if (predEval) {
+                        matchFound = true;
+                        appendToResult(tid, tIndex, writer);
+                    }
+                }
+            } while (true);
+        }
+        if (!matchFound && isLeftOuter) {
+            FrameUtils.appendConcatToWriter(writer, appender, accessorProbe, tid,
+                    nullTupleBuild.getFieldEndOffsets(), nullTupleBuild.getByteArray(), 0,
+                    nullTupleBuild.getSize());
+        }
+    }
+
     public void join(ByteBuffer buffer, IFrameWriter writer) throws HyracksDataException {
         accessorProbe.reset(buffer);
         int tupleCount0 = accessorProbe.getTupleCount();
         for (int i = 0; i < tupleCount0; ++i) {
-            boolean matchFound = false;
-            if (tableSize != 0) {
-                int entry = tpcProbe.partition(accessorProbe, i, tableSize);
-                int offset = 0;
-                do {
-                    table.getTuplePointer(entry, offset++, storedTuplePointer);
-                    if (storedTuplePointer.frameIndex < 0)
-                        break;
-                    int bIndex = storedTuplePointer.frameIndex;
-                    int tIndex = storedTuplePointer.tupleIndex;
-                    accessorBuild.reset(buffers.get(bIndex));
-                    int c = tpComparator.compare(accessorProbe, i, accessorBuild, tIndex);
-                    if (c == 0) {
-                        boolean predEval = evaluatePredicate(i, tIndex);
-                        if (predEval) {
-                            matchFound = true;
-                            appendToResult(i, tIndex, writer);
-                        }
-                    }
-                } while (true);
-            }
-            if (!matchFound && isLeftOuter) {
-                FrameUtils.appendConcatToWriter(writer, appender, accessorProbe, i,
-                        nullTupleBuild.getFieldEndOffsets(), nullTupleBuild.getByteArray(), 0,
-                        nullTupleBuild.getSize());
-            }
+            join(accessorProbe, i, writer);
         }
     }
 
     public void closeJoin(IFrameWriter writer) throws HyracksDataException {
-        appender.flush(writer, true);
+        appender.write(writer, true);
         int nFrames = buffers.size();
         buffers.clear();
         ctx.deallocateFrames(nFrames);
@@ -155,14 +162,6 @@
                 + Thread.currentThread().getId() + ".");
     }
 
-    private void flushFrame(ByteBuffer buffer, IFrameWriter writer) throws HyracksDataException {
-        buffer.position(0);
-        buffer.limit(buffer.capacity());
-        writer.nextFrame(buffer);
-        buffer.position(0);
-        buffer.limit(buffer.capacity());
-    }
-
     private boolean evaluatePredicate(int tIx1, int tIx2) {
         if (reverseOutputOrder) { //Role Reversal Optimization is triggered
             return ((predEvaluator == null) || predEvaluator.evaluate(accessorBuild, tIx2, accessorProbe, tIx1));
@@ -172,12 +171,10 @@
     }
 
     private void appendToResult(int probeSidetIx, int buildSidetIx, IFrameWriter writer) throws HyracksDataException {
-        if (!reverseOutputOrder) {
-            FrameUtils.appendConcatToWriter(writer, appender, accessorProbe, probeSidetIx, accessorBuild,
-                    buildSidetIx);
+        if (reverseOutputOrder) {
+            FrameUtils.appendConcatToWriter(writer, appender, accessorBuild, buildSidetIx, accessorProbe, probeSidetIx);
         } else {
-            FrameUtils.appendConcatToWriter(writer, appender, accessorBuild, buildSidetIx, accessorProbe,
-                    probeSidetIx);
+            FrameUtils.appendConcatToWriter(writer, appender, accessorProbe, probeSidetIx, accessorBuild, buildSidetIx);
         }
     }
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoinOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoinOperatorDescriptor.java
index dae441b..be8d319f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoinOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/InMemoryHashJoinOperatorDescriptor.java
@@ -42,7 +42,7 @@
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
@@ -82,8 +82,7 @@
     public InMemoryHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int[] keys0, int[] keys1,
             IBinaryHashFunctionFactory[] hashFunctionFactories, IBinaryComparatorFactory[] comparatorFactories,
             IPredicateEvaluatorFactory predEvalFactory, RecordDescriptor recordDescriptor, boolean isLeftOuter,
-            INullWriterFactory[] nullWriterFactories1,
-            int tableSize) {
+            INullWriterFactory[] nullWriterFactories1, int tableSize) {
         super(spec, 2, 1);
         this.keys0 = keys0;
         this.keys1 = keys1;
@@ -174,9 +173,8 @@
                     nullWriters1[i] = nullWriterFactories1[i].createNullWriter();
                 }
             }
-            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ?
-                    null :
-                    predEvaluatorFactory.createPredicateEvaluator());
+            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null
+                    : predEvaluatorFactory.createPredicateEvaluator());
 
             IOperatorNodePushable op = new AbstractUnaryInputSinkOperatorNodePushable() {
                 private HashBuildTaskState state;
@@ -187,13 +185,12 @@
                             .createPartitioner();
                     ITuplePartitionComputer hpc1 = new FieldHashPartitionComputerFactory(keys1, hashFunctionFactories)
                             .createPartitioner();
-                    state = new HashBuildTaskState(ctx.getJobletContext().getJobId(), new TaskId(getActivityId(),
-                            partition));
+                    state = new HashBuildTaskState(ctx.getJobletContext().getJobId(),
+                            new TaskId(getActivityId(), partition));
                     ISerializableTable table = new SerializableHashTable(tableSize, ctx);
-                    state.joiner = new InMemoryHashJoin(ctx, tableSize,
-                            new FrameTupleAccessor(rd0), hpc0, new FrameTupleAccessor(rd1), hpc1,
-                            new FrameTuplePairComparator(keys0, keys1,
-                                    comparators), isLeftOuter, nullWriters1, table, predEvaluator);
+                    state.joiner = new InMemoryHashJoin(ctx, tableSize, new FrameTupleAccessor(rd0), hpc0,
+                            new FrameTupleAccessor(rd1), hpc1, new FrameTuplePairComparator(keys0, keys1, comparators),
+                            isLeftOuter, nullWriters1, table, predEvaluator);
                 }
 
                 @Override
@@ -231,9 +228,9 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = (HashBuildTaskState) ctx.getStateObject(new TaskId(new ActivityId(getOperatorId(), 0),
-                            partition));
                     writer.open();
+                    state = (HashBuildTaskState) ctx
+                            .getStateObject(new TaskId(new ActivityId(getOperatorId(), 0), partition));
                 }
 
                 @Override
@@ -243,8 +240,11 @@
 
                 @Override
                 public void close() throws HyracksDataException {
-                    state.joiner.closeJoin(writer);
-                    writer.close();
+                    try {
+                        state.joiner.closeJoin(writer);
+                    } finally {
+                        writer.close();
+                    }
                 }
 
                 @Override
@@ -255,4 +255,4 @@
             return op;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
index db7c308..2ad89cf 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoin.java
@@ -20,8 +20,6 @@
 
 import java.io.DataOutput;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -38,6 +36,11 @@
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.common.io.RunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+import org.apache.hyracks.dataflow.std.buffermanager.BufferInfo;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.FrameFreeSlotPolicyFactory;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFrameMemoryManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFramePool;
 
 public class NestedLoopJoin {
     private final FrameTupleAccessor accessorInner;
@@ -46,40 +49,38 @@
     private final ITuplePairComparator tpComparator;
     private final IFrame outBuffer;
     private final IFrame innerBuffer;
-    private final List<ByteBuffer> outBuffers;
-    private final int memSize;
-    private final IHyracksTaskContext ctx;
+    private final VariableFrameMemoryManager outerBufferMngr;
     private RunFileReader runFileReader;
-    private int currentMemSize = 0;
     private final RunFileWriter runFileWriter;
     private final boolean isLeftOuter;
     private final ArrayTupleBuilder nullTupleBuilder;
     private final IPredicateEvaluator predEvaluator;
-    private boolean isReversed;        //Added for handling correct calling for predicate-evaluator upon recursive calls (in OptimizedHybridHashJoin) that cause role-reversal
+    private boolean isReversed; //Added for handling correct calling for predicate-evaluator upon recursive calls (in OptimizedHybridHashJoin) that cause role-reversal
+    private BufferInfo tempInfo = new BufferInfo(null, -1, -1);
 
-    public NestedLoopJoin(IHyracksTaskContext ctx, FrameTupleAccessor accessor0, FrameTupleAccessor accessor1,
-            ITuplePairComparator comparators, int memSize, IPredicateEvaluator predEval, boolean isLeftOuter,
-            INullWriter[] nullWriters1)
-            throws HyracksDataException {
-        this.accessorInner = accessor1;
-        this.accessorOuter = accessor0;
+    public NestedLoopJoin(IHyracksTaskContext ctx, FrameTupleAccessor accessorOuter, FrameTupleAccessor accessorInner,
+            ITuplePairComparator comparatorsOuter2Inner, int memSize, IPredicateEvaluator predEval, boolean isLeftOuter,
+            INullWriter[] nullWriters1) throws HyracksDataException {
+        this.accessorInner = accessorInner;
+        this.accessorOuter = accessorOuter;
         this.appender = new FrameTupleAppender();
-        this.tpComparator = comparators;
+        this.tpComparator = comparatorsOuter2Inner;
         this.outBuffer = new VSizeFrame(ctx);
         this.innerBuffer = new VSizeFrame(ctx);
         this.appender.reset(outBuffer, true);
-        this.outBuffers = new ArrayList<ByteBuffer>();
-        this.memSize = memSize;
         if (memSize < 3) {
             throw new HyracksDataException("Not enough memory is available for Nested Loop Join");
         }
+        this.outerBufferMngr = new VariableFrameMemoryManager(
+                new VariableFramePool(ctx, ctx.getInitialFrameSize() * (memSize - 2)),
+                FrameFreeSlotPolicyFactory.createFreeSlotPolicy(EnumFreeSlotPolicy.LAST_FIT, memSize - 2));
+
         this.predEvaluator = predEval;
         this.isReversed = false;
-        this.ctx = ctx;
 
         this.isLeftOuter = isLeftOuter;
         if (isLeftOuter) {
-            int innerFieldCount = accessorInner.getFieldCount();
+            int innerFieldCount = this.accessorInner.getFieldCount();
             nullTupleBuilder = new ArrayTupleBuilder(innerFieldCount);
             DataOutput out = nullTupleBuilder.getDataOutput();
             for (int i = 0; i < innerFieldCount; i++) {
@@ -90,8 +91,8 @@
             nullTupleBuilder = null;
         }
 
-        FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(
-                this.getClass().getSimpleName() + this.toString());
+        FileReference file = ctx.getJobletContext()
+                .createManagedWorkspaceFile(this.getClass().getSimpleName() + this.toString());
         runFileWriter = new RunFileWriter(file, ctx.getIOManager());
         runFileWriter.open();
     }
@@ -101,45 +102,26 @@
     }
 
     public void join(ByteBuffer outerBuffer, IFrameWriter writer) throws HyracksDataException {
-        if (outBuffers.size() < memSize - 3) {
-            createAndCopyFrame(outerBuffer);
-            return;
-        }
-        if (currentMemSize < memSize - 3) {
-            reloadFrame(outerBuffer);
-            return;
-        }
-        runFileReader = runFileWriter.createReader();
-        runFileReader.open();
-        while (runFileReader.nextFrame(innerBuffer)) {
-            for (ByteBuffer outBuffer : outBuffers) {
-                blockJoin(outBuffer, innerBuffer.getBuffer(), writer);
+        if (outerBufferMngr.insertFrame(outerBuffer) < 0) {
+            runFileReader = runFileWriter.createReader();
+            runFileReader.open();
+            while (runFileReader.nextFrame(innerBuffer)) {
+                for (int i = 0; i < outerBufferMngr.getNumFrames(); i++) {
+                    blockJoin(outerBufferMngr.getFrame(i, tempInfo), innerBuffer.getBuffer(), writer);
+                }
+            }
+            runFileReader.close();
+            outerBufferMngr.reset();
+            if (outerBufferMngr.insertFrame(outerBuffer) < 0) {
+                throw new HyracksDataException("The given outer frame of size:" + outerBuffer.capacity()
+                        + " is too big to cache in the buffer. Please choose a larger buffer memory size");
             }
         }
-        runFileReader.close();
-        currentMemSize = 0;
-        reloadFrame(outerBuffer);
     }
 
-    private void createAndCopyFrame(ByteBuffer outerBuffer) throws HyracksDataException {
-        ByteBuffer outerBufferCopy = ctx.allocateFrame(outerBuffer.capacity());
-        FrameUtils.copyAndFlip(outerBuffer, outerBufferCopy);
-        outBuffers.add(outerBufferCopy);
-        currentMemSize++;
-    }
-
-    private void reloadFrame(ByteBuffer outerBuffer) throws HyracksDataException {
-        outBuffers.get(currentMemSize).clear();
-        if (outBuffers.get(currentMemSize).capacity() != outerBuffer.capacity()) {
-            outBuffers.set(currentMemSize, ctx.allocateFrame(outerBuffer.capacity()));
-        }
-        FrameUtils.copyAndFlip(outerBuffer, outBuffers.get(currentMemSize));
-        currentMemSize++;
-    }
-
-    private void blockJoin(ByteBuffer outerBuffer, ByteBuffer innerBuffer, IFrameWriter writer)
+    private void blockJoin(BufferInfo outerBufferInfo, ByteBuffer innerBuffer, IFrameWriter writer)
             throws HyracksDataException {
-        accessorOuter.reset(outerBuffer);
+        accessorOuter.reset(outerBufferInfo.getBuffer(), outerBufferInfo.getStartOffset(), outerBufferInfo.getLength());
         accessorInner.reset(innerBuffer);
         int tupleCount0 = accessorOuter.getTupleCount();
         int tupleCount1 = accessorInner.getTupleCount();
@@ -166,7 +148,7 @@
     }
 
     private boolean evaluatePredicate(int tIx1, int tIx2) {
-        if (isReversed) {        //Role Reversal Optimization is triggered
+        if (isReversed) { //Role Reversal Optimization is triggered
             return ((predEvaluator == null) || predEvaluator.evaluate(accessorInner, tIx2, accessorOuter, tIx1));
         } else {
             return ((predEvaluator == null) || predEvaluator.evaluate(accessorOuter, tIx1, accessorInner, tIx2));
@@ -174,11 +156,10 @@
     }
 
     private void appendToResults(int outerTupleId, int innerTupleId, IFrameWriter writer) throws HyracksDataException {
-        if (!isReversed) {
-            appendResultToFrame(accessorOuter, outerTupleId, accessorInner, innerTupleId, writer);
-        } else {
-            //Role Reversal Optimization is triggered
+        if (isReversed) {
             appendResultToFrame(accessorInner, innerTupleId, accessorOuter, outerTupleId, writer);
+        } else {
+            appendResultToFrame(accessorOuter, outerTupleId, accessorInner, innerTupleId, writer);
         }
     }
 
@@ -194,18 +175,17 @@
     }
 
     public void closeJoin(IFrameWriter writer) throws HyracksDataException {
-        runFileReader = runFileWriter.createReader();
+        runFileReader = runFileWriter.createDeleteOnCloseReader();
         runFileReader.open();
         while (runFileReader.nextFrame(innerBuffer)) {
-            for (int i = 0; i < currentMemSize; i++) {
-                blockJoin(outBuffers.get(i), innerBuffer.getBuffer(), writer);
+            for (int i = 0; i < outerBufferMngr.getNumFrames(); i++) {
+                blockJoin(outerBufferMngr.getFrame(i, tempInfo), innerBuffer.getBuffer(), writer);
             }
         }
         runFileReader.close();
-        outBuffers.clear();
-        currentMemSize = 0;
+        outerBufferMngr.reset();
 
-        appender.flush(writer, true);
+        appender.write(writer, true);
     }
 
     private int compare(FrameTupleAccessor accessor0, int tIndex0, FrameTupleAccessor accessor1, int tIndex1)
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoinOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoinOperatorDescriptor.java
index 03570c7..dc7d256 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoinOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/NestedLoopJoinOperatorDescriptor.java
@@ -132,9 +132,8 @@
             final RecordDescriptor rd0 = recordDescProvider.getInputRecordDescriptor(nljAid, 0);
             final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
             final ITuplePairComparator comparator = comparatorFactory.createTuplePairComparator(ctx);
-            final IPredicateEvaluator predEvaluator = ((predEvaluatorFactory != null) ?
-                    predEvaluatorFactory.createPredicateEvaluator() :
-                    null);
+            final IPredicateEvaluator predEvaluator = ((predEvaluatorFactory != null)
+                    ? predEvaluatorFactory.createPredicateEvaluator() : null);
 
             final INullWriter[] nullWriters1 = isLeftOuter ? new INullWriter[nullWriterFactories1.length] : null;
             if (isLeftOuter) {
@@ -148,12 +147,11 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = new JoinCacheTaskState(ctx.getJobletContext().getJobId(), new TaskId(getActivityId(),
-                            partition));
+                    state = new JoinCacheTaskState(ctx.getJobletContext().getJobId(),
+                            new TaskId(getActivityId(), partition));
 
-                    state.joiner = new NestedLoopJoin(ctx, new FrameTupleAccessor(rd0),
-                            new FrameTupleAccessor(rd1), comparator, memSize, predEvaluator, isLeftOuter,
-                            nullWriters1);
+                    state.joiner = new NestedLoopJoin(ctx, new FrameTupleAccessor(rd0), new FrameTupleAccessor(rd1),
+                            comparator, memSize, predEvaluator, isLeftOuter, nullWriters1);
 
                 }
 
@@ -194,9 +192,9 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = (JoinCacheTaskState) ctx.getStateObject(new TaskId(new ActivityId(getOperatorId(),
-                            JOIN_CACHE_ACTIVITY_ID), partition));
                     writer.open();
+                    state = (JoinCacheTaskState) ctx.getStateObject(
+                            new TaskId(new ActivityId(getOperatorId(), JOIN_CACHE_ACTIVITY_ID), partition));
                 }
 
                 @Override
@@ -206,8 +204,11 @@
 
                 @Override
                 public void close() throws HyracksDataException {
-                    state.joiner.closeJoin(writer);
-                    writer.close();
+                    try {
+                        state.joiner.closeJoin(writer);
+                    } finally {
+                        writer.close();
+                    }
                 }
 
                 @Override
@@ -218,4 +219,4 @@
             return op;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
index e332ecf..ebcb462 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
@@ -19,9 +19,7 @@
 package org.apache.hyracks.dataflow.std.join;
 
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
 import java.util.BitSet;
-import java.util.logging.Logger;
 
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -37,38 +35,42 @@
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
-import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.common.io.RunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+import org.apache.hyracks.dataflow.std.buffermanager.IPartitionedTupleBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.PreferToSpillFullyOccupiedFramePolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.VPartitionTupleBufferManager;
 import org.apache.hyracks.dataflow.std.structures.ISerializableTable;
 import org.apache.hyracks.dataflow.std.structures.SerializableHashTable;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 
 /**
- * @author pouria
- *         This class mainly applies one level of HHJ on a pair of
- *         relations. It is always called by the descriptor.
+ * This class mainly applies one level of HHJ on a pair of
+ * relations. It is always called by the descriptor.
  */
 public class OptimizedHybridHashJoin {
 
-    private final int NO_MORE_FREE_BUFFER = -1;
-    private final int END_OF_PARTITION = -1;
-    private final int INVALID_BUFFER = -2;
-    private final int UNALLOCATED_FRAME = -3;
-    private final int BUFFER_FOR_RESIDENT_PARTS = -1;
+    // Used for special probe BigObject which can not be held into the Join memory
+    private FrameTupleAppender bigProbeFrameAppender;
+
+    enum SIDE {
+        BUILD,
+        PROBE
+    }
 
     private IHyracksTaskContext ctx;
 
-    private final String rel0Name;
-    private final String rel1Name;
+    private final String buildRelName;
+    private final String probeRelName;
 
     private final int[] buildKeys;
     private final int[] probeKeys;
 
     private final IBinaryComparator[] comparators;
 
-    private ITuplePartitionComputer buildHpc;
-    private ITuplePartitionComputer probeHpc;
+    private final ITuplePartitionComputer buildHpc;
+    private final ITuplePartitionComputer probeHpc;
 
     private final RecordDescriptor buildRd;
     private final RecordDescriptor probeRd;
@@ -78,83 +80,44 @@
 
     private final IPredicateEvaluator predEvaluator;
     private final boolean isLeftOuter;
-    private final INullWriter[] nullWriters1;
+    private final INullWriter[] nullWriters;
 
-    private IFrame[] memBuffs; //Memory buffers for build
-    private int[] curPBuff; //Current (last) Buffer for each partition
-    private int[] nextBuff; //Next buffer in the partition's buffer chain
-    private int[] buildPSizeInTups; //Size of build partitions (in tuples)
-    private int[] probePSizeInTups; //Size of probe partitions (in tuples)
-    private int nextFreeBuffIx; //Index of next available free buffer to allocate/use
-    private BitSet pStatus; //0=resident, 1=spilled
-    private int numOfPartitions;
-    private int memForJoin;
+    private final BitSet spilledStatus; //0=resident, 1=spilled
+    private final int numOfPartitions;
+    private final int memForJoin;
     private InMemoryHashJoin inMemJoiner; //Used for joining resident partitions
 
+    private IPartitionedTupleBufferManager bufferManager;
+    private PreferToSpillFullyOccupiedFramePolicy spillPolicy;
+
     private final FrameTupleAccessor accessorBuild;
     private final FrameTupleAccessor accessorProbe;
-    private FrameTupleAppender buildTupAppender;
-    private FrameTupleAppender probeTupAppenderToResident;
-    private FrameTupleAppender probeTupAppenderToSpilled;
 
-    private int numOfSpilledParts;
-    private IFrame[] sPartBuffs; //Buffers for probe spilled partitions (one buffer per spilled partition)
-    private IFrame probeResBuff; //Buffer for probe resident partition tuples
-    private IFrame reloadBuffer; //Buffer for reloading spilled partitions during partition tuning
-
-    private int[] buildPSizeInFrames; //Used for partition tuning
-    private int freeFramesCounter; //Used for partition tuning
-
-    private boolean isTableEmpty; //Added for handling the case, where build side is empty (tableSize is 0)
     private boolean isReversed; //Added for handling correct calling for predicate-evaluator upon recursive calls that cause role-reversal
 
-    private static final Logger LOGGER = Logger.getLogger(OptimizedHybridHashJoin.class.getName());
+    // stats information
+    private int[] buildPSizeInTups;
+    private IFrame reloadBuffer;
+    private TuplePointer tempPtr = new TuplePointer(); // this is a reusable object to store the pointer,which is not used anywhere.
+                                                       // we mainly use it to match the corresponding function signature.
+    private int[] probePSizeInTups;
 
-    public OptimizedHybridHashJoin(IHyracksTaskContext ctx, int memForJoin, int numOfPartitions, String rel0Name,
-            String rel1Name, int[] keys0, int[] keys1, IBinaryComparator[] comparators, RecordDescriptor buildRd,
-            RecordDescriptor probeRd, ITuplePartitionComputer probeHpc, ITuplePartitionComputer buildHpc,
-            IPredicateEvaluator predEval) {
+    public OptimizedHybridHashJoin(IHyracksTaskContext ctx, int memForJoin, int numOfPartitions, String probeRelName,
+            String buildRelName, int[] probeKeys, int[] buildKeys, IBinaryComparator[] comparators,
+            RecordDescriptor probeRd, RecordDescriptor buildRd, ITuplePartitionComputer probeHpc,
+            ITuplePartitionComputer buildHpc, IPredicateEvaluator predEval, boolean isLeftOuter,
+            INullWriterFactory[] nullWriterFactories1) {
         this.ctx = ctx;
         this.memForJoin = memForJoin;
         this.buildRd = buildRd;
         this.probeRd = probeRd;
         this.buildHpc = buildHpc;
         this.probeHpc = probeHpc;
-        this.buildKeys = keys1;
-        this.probeKeys = keys0;
+        this.buildKeys = buildKeys;
+        this.probeKeys = probeKeys;
         this.comparators = comparators;
-        this.rel0Name = rel0Name;
-        this.rel1Name = rel1Name;
-
-        this.numOfPartitions = numOfPartitions;
-        this.buildRFWriters = new RunFileWriter[numOfPartitions];
-        this.probeRFWriters = new RunFileWriter[numOfPartitions];
-
-        this.accessorBuild = new FrameTupleAccessor(buildRd);
-        this.accessorProbe = new FrameTupleAccessor(probeRd);
-
-        this.predEvaluator = predEval;
-        this.isLeftOuter = false;
-        this.nullWriters1 = null;
-        this.isReversed = false;
-
-    }
-
-    public OptimizedHybridHashJoin(IHyracksTaskContext ctx, int memForJoin, int numOfPartitions, String rel0Name,
-            String rel1Name, int[] keys0, int[] keys1, IBinaryComparator[] comparators, RecordDescriptor buildRd,
-            RecordDescriptor probeRd, ITuplePartitionComputer probeHpc, ITuplePartitionComputer buildHpc,
-            IPredicateEvaluator predEval, boolean isLeftOuter, INullWriterFactory[] nullWriterFactories1) {
-        this.ctx = ctx;
-        this.memForJoin = memForJoin;
-        this.buildRd = buildRd;
-        this.probeRd = probeRd;
-        this.buildHpc = buildHpc;
-        this.probeHpc = probeHpc;
-        this.buildKeys = keys1;
-        this.probeKeys = keys0;
-        this.comparators = comparators;
-        this.rel0Name = rel0Name;
-        this.rel1Name = rel1Name;
+        this.buildRelName = buildRelName;
+        this.probeRelName = probeRelName;
 
         this.numOfPartitions = numOfPartitions;
         this.buildRFWriters = new RunFileWriter[numOfPartitions];
@@ -167,52 +130,30 @@
         this.isLeftOuter = isLeftOuter;
         this.isReversed = false;
 
-        this.nullWriters1 = isLeftOuter ? new INullWriter[nullWriterFactories1.length] : null;
+        this.spilledStatus = new BitSet(numOfPartitions);
+
+        this.nullWriters = isLeftOuter ? new INullWriter[nullWriterFactories1.length] : null;
         if (isLeftOuter) {
             for (int i = 0; i < nullWriterFactories1.length; i++) {
-                nullWriters1[i] = nullWriterFactories1[i].createNullWriter();
+                nullWriters[i] = nullWriterFactories1[i].createNullWriter();
             }
         }
     }
 
     public void initBuild() throws HyracksDataException {
-        memBuffs = new IFrame[memForJoin];
-        curPBuff = new int[numOfPartitions];
-        nextBuff = new int[memForJoin];
-        pStatus = new BitSet(numOfPartitions);
+        bufferManager = new VPartitionTupleBufferManager(ctx,
+                PreferToSpillFullyOccupiedFramePolicy.createAtMostOneFrameForSpilledPartitionConstrain(spilledStatus),
+                numOfPartitions, memForJoin * ctx.getInitialFrameSize());
+        spillPolicy = new PreferToSpillFullyOccupiedFramePolicy(bufferManager, spilledStatus,
+                ctx.getInitialFrameSize());
+        spilledStatus.clear();
         buildPSizeInTups = new int[numOfPartitions];
-
-        buildPSizeInFrames = new int[numOfPartitions];
-        freeFramesCounter = memForJoin - numOfPartitions;
-
-        for (int i = 0; i
-                < numOfPartitions; i++) { //Allocating one buffer per partition and setting as the head of the chain of buffers for that partition
-            memBuffs[i] = new VSizeFrame(ctx);
-            curPBuff[i] = i;
-            nextBuff[i] = -1;
-            buildPSizeInFrames[i] = 1; //The dedicated initial buffer
-        }
-
-        nextFreeBuffIx = ((numOfPartitions < memForJoin) ?
-                numOfPartitions :
-                NO_MORE_FREE_BUFFER); //Setting the chain of unallocated frames
-        for (int i = numOfPartitions; i < memBuffs.length; i++) {
-            nextBuff[i] = UNALLOCATED_FRAME;
-        }
-
-        buildTupAppender = new FrameTupleAppender();
-
     }
 
     public void build(ByteBuffer buffer) throws HyracksDataException {
         accessorBuild.reset(buffer);
         int tupleCount = accessorBuild.getTupleCount();
 
-        boolean print = false;
-        if (print) {
-            accessorBuild.prettyPrint();
-        }
-
         for (int i = 0; i < tupleCount; ++i) {
             int pid = buildHpc.partition(accessorBuild, i, numOfPartitions);
             processTuple(i, pid);
@@ -222,307 +163,198 @@
     }
 
     private void processTuple(int tid, int pid) throws HyracksDataException {
-        IFrame partition = memBuffs[curPBuff[pid]]; //Getting current buffer for the target partition
-
-        if (!pStatus.get(pid)) { //resident partition
-            buildTupAppender.reset(partition, false);
-            while (true) {
-                if (buildTupAppender.append(accessorBuild, tid)) { //Tuple added to resident partition successfully
-                    break;
-                }
-                //partition does not have enough room
-                int newBuffIx = allocateFreeBuffer(pid);
-                if (newBuffIx == NO_MORE_FREE_BUFFER) { //Spill one partition
-                    int pidToSpill = selectPartitionToSpill();
-                    if (pidToSpill == -1) { //No more partition to spill
-                        throw new HyracksDataException(
-                                "not enough memory for Hash Join (Allocation exceeds the limit)");
-                    }
-                    spillPartition(pidToSpill);
-                    buildTupAppender.reset(memBuffs[pidToSpill], true);
-                    processTuple(tid, pid);
-                    break;
-                } //New Buffer allocated successfully
-                partition = memBuffs[curPBuff[pid]]; //Current Buffer for the partition is now updated by allocateFreeBuffer() call above
-                buildTupAppender.reset(partition, true);
-                if (!buildTupAppender.append(accessorBuild, tid)) {
-                    throw new HyracksDataException("Invalid State (Can not append to newly allocated buffer)");
-                }
-                buildPSizeInFrames[pid]++;
-                break;
-            }
-        } else { //spilled partition
-            boolean needClear = false;
-            while (true) {
-                buildTupAppender.reset(partition, needClear);
-                if (buildTupAppender.append(accessorBuild, tid)) {
-                    break;
-                }
-                //Dedicated in-memory buffer for the partition is full, needed to be flushed first 
-                buildWrite(pid, partition.getBuffer());
-                partition.reset();
-                needClear = true;
-                buildPSizeInFrames[pid]++;
-            }
+        while (!bufferManager.insertTuple(pid, accessorBuild, tid, tempPtr)) {
+            selectAndSpillVictim(pid);
         }
     }
 
-    private int allocateFreeBuffer(int pid) throws HyracksDataException {
-        if (nextFreeBuffIx != NO_MORE_FREE_BUFFER) {
-            if (memBuffs[nextFreeBuffIx] == null) {
-                memBuffs[nextFreeBuffIx] = new VSizeFrame(ctx);
-            }
-            int curPartBuffIx = curPBuff[pid];
-            curPBuff[pid] = nextFreeBuffIx;
-            int oldNext = nextBuff[nextFreeBuffIx];
-            nextBuff[nextFreeBuffIx] = curPartBuffIx;
-            if (oldNext == UNALLOCATED_FRAME) {
-                nextFreeBuffIx++;
-                if (nextFreeBuffIx == memForJoin) { //No more free buffer
-                    nextFreeBuffIx = NO_MORE_FREE_BUFFER;
-                }
-            } else {
-                nextFreeBuffIx = oldNext;
-            }
-            memBuffs[curPBuff[pid]].reset();
-
-            freeFramesCounter--;
-            return (curPBuff[pid]);
-        } else {
-            return NO_MORE_FREE_BUFFER; //A partitions needs to be spilled (if feasible)
+    private void selectAndSpillVictim(int pid) throws HyracksDataException {
+        int victimPartition = spillPolicy.selectVictimPartition(pid);
+        if (victimPartition < 0) {
+            throw new HyracksDataException(
+                    "No more space left in the memory buffer, please give join more memory budgets.");
         }
-    }
-
-    private int selectPartitionToSpill() {
-        int maxSize = -1;
-        int partitionToSpill = -1;
-        for (int i = 0; i < buildPSizeInTups.length; i++) { //Find the largest partition, to spill
-            if (!pStatus.get(i) && (buildPSizeInTups[i] > maxSize)) {
-                maxSize = buildPSizeInTups[i];
-                partitionToSpill = i;
-            }
-        }
-        return partitionToSpill;
+        spillPartition(victimPartition);
     }
 
     private void spillPartition(int pid) throws HyracksDataException {
-        LOGGER.fine("OptimizedHybridHashJoin is spilling partition:" + pid + " with " + buildPSizeInFrames[pid]
-                + " frames for Thread ID " + Thread.currentThread().getId() + " (free frames: " + freeFramesCounter
-                + ").");
-        int curBuffIx = curPBuff[pid];
-        while (curBuffIx != END_OF_PARTITION) {
-            IFrame frame = memBuffs[curBuffIx];
-            buildWrite(pid, frame.getBuffer());
-            frame.reset();
-
-            int freedBuffIx = curBuffIx;
-            curBuffIx = nextBuff[curBuffIx];
-
-            if (freedBuffIx != pid) {
-                nextBuff[freedBuffIx] = nextFreeBuffIx;
-                nextFreeBuffIx = freedBuffIx;
-                freeFramesCounter++;
-            }
-        }
-        curPBuff[pid] = pid;
-        pStatus.set(pid);
-        LOGGER.fine("OptimizedHybridHashJoin has freed " + freeFramesCounter + " frames by spilling partition:" + pid
-                + " for Thread ID " + Thread.currentThread().getId() + ".");
+        RunFileWriter writer = getSpillWriterOrCreateNewOneIfNotExist(pid, SIDE.BUILD);
+        bufferManager.flushPartition(pid, writer);
+        bufferManager.clearPartition(pid);
+        spilledStatus.set(pid);
     }
 
-    private void buildWrite(int pid, ByteBuffer buff) throws HyracksDataException {
-        RunFileWriter writer = buildRFWriters[pid];
+    private RunFileWriter getSpillWriterOrCreateNewOneIfNotExist(int pid, SIDE whichSide) throws HyracksDataException {
+        RunFileWriter[] runFileWriters = null;
+        String refName = null;
+        switch (whichSide) {
+            case BUILD:
+                runFileWriters = buildRFWriters;
+                refName = buildRelName;
+                break;
+            case PROBE:
+                refName = probeRelName;
+                runFileWriters = probeRFWriters;
+                break;
+        }
+        RunFileWriter writer = runFileWriters[pid];
         if (writer == null) {
-            FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(rel0Name);
-            LOGGER.fine("OptimizedHybridHashJoin is creating a run file (" + file.getFile().getAbsolutePath()
-                    + ") for partition:" + pid + " for Thread ID " + Thread.currentThread().getId() + ".");
+            FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(refName);
             writer = new RunFileWriter(file, ctx.getIOManager());
             writer.open();
-            buildRFWriters[pid] = writer;
+            runFileWriters[pid] = writer;
         }
-        writer.nextFrame(buff);
+        return writer;
     }
 
     public void closeBuild() throws HyracksDataException {
-        for (int i = 0; i < numOfPartitions; i++) { //Remove Empty Partitions' allocated frame
-            if (buildPSizeInTups[i] == 0) {
-                buildPSizeInFrames[i]--;
-                nextBuff[curPBuff[i]] = nextFreeBuffIx;
-                nextFreeBuffIx = curPBuff[i];
-                curPBuff[i] = INVALID_BUFFER;
-                freeFramesCounter++;
-            }
-        }
 
-        ByteBuffer buff = null;
-        for (int i = pStatus.nextSetBit(0); i >= 0; i = pStatus
-                .nextSetBit(i + 1)) { //flushing and DeAllocating the dedicated buffers for the spilled partitions
-            buff = memBuffs[i].getBuffer();
-            accessorBuild.reset(buff);
-            if (accessorBuild.getTupleCount() > 0) {
-                buildWrite(i, buff);
-                buildPSizeInFrames[i]++;
-            }
-            nextBuff[i] = nextFreeBuffIx;
-            nextFreeBuffIx = i;
-            freeFramesCounter++;
-            curPBuff[i] = INVALID_BUFFER;
+        closeAllSpilledPartitions(SIDE.BUILD);
 
-            if (buildRFWriters[i] != null) {
-                buildRFWriters[i].close();
-            }
-        }
-
-        partitionTune(); //Trying to bring back as many spilled partitions as possible, making them resident
+        bringBackSpilledPartitionIfHasMoreMemory(); //Trying to bring back as many spilled partitions as possible, making them resident
 
         int inMemTupCount = 0;
-        int inMemFrameCount = 0;
-        int spilledFrameCount = 0;
-        numOfSpilledParts = 0;
 
-        for (int i = 0; i < numOfPartitions; i++) {
-            if (!pStatus.get(i)) {
-                inMemTupCount += buildPSizeInTups[i];
-                inMemFrameCount += buildPSizeInFrames[i];
-            } else {
-                spilledFrameCount += buildPSizeInFrames[i];
-                numOfSpilledParts++;
-            }
+        for (int i = spilledStatus.nextClearBit(0); i >= 0
+                && i < numOfPartitions; i = spilledStatus.nextClearBit(i + 1)) {
+            inMemTupCount += buildPSizeInTups[i];
         }
 
-        LOGGER.fine("OptimizedHybridHashJoin build phase has spilled " + numOfSpilledParts + " of " + numOfPartitions
-                + " partitions for Thread ID " + Thread.currentThread().getId() + ". (" + inMemFrameCount
-                + " in-memory frames, " + spilledFrameCount + " spilled frames)");
         createInMemoryJoiner(inMemTupCount);
         cacheInMemJoin();
-        this.isTableEmpty = (inMemTupCount == 0);
     }
 
-    private void partitionTune() throws HyracksDataException {
-        reloadBuffer = new VSizeFrame(ctx);
-        ArrayList<Integer> reloadSet = selectPartitionsToReload();
-        for (int i = 0; i < reloadSet.size(); i++) {
-            int pid = reloadSet.get(i);
-            int[] buffsToLoad = new int[buildPSizeInFrames[pid]];
-            for (int j = 0; j < buffsToLoad.length; j++) {
-                buffsToLoad[j] = nextFreeBuffIx;
-                int oldNext = nextBuff[nextFreeBuffIx];
-                if (oldNext == UNALLOCATED_FRAME) {
-                    nextFreeBuffIx++;
-                    if (nextFreeBuffIx == memForJoin) { //No more free buffer
-                        nextFreeBuffIx = NO_MORE_FREE_BUFFER;
-                    }
-                } else {
-                    nextFreeBuffIx = oldNext;
-                }
-
+    /**
+     * In case of failure happens, we need to clear up the generated temporary files.
+     */
+    public void clearBuildTempFiles() {
+        for (int i = 0; i < buildRFWriters.length; i++) {
+            if (buildRFWriters[i] != null) {
+                buildRFWriters[i].getFileReference().delete();
             }
-            curPBuff[pid] = buffsToLoad[0];
-            for (int k = 1; k < buffsToLoad.length; k++) {
-                nextBuff[buffsToLoad[k - 1]] = buffsToLoad[k];
-            }
-            loadPartitionInMem(pid, buildRFWriters[pid], buffsToLoad);
         }
-        reloadSet.clear();
     }
 
-    private void loadPartitionInMem(int pid, RunFileWriter wr, int[] buffs) throws HyracksDataException {
-        RunFileReader r = wr.createReader();
+    private void closeAllSpilledPartitions(SIDE whichSide) throws HyracksDataException {
+        RunFileWriter[] runFileWriters = null;
+        switch (whichSide) {
+            case BUILD:
+                runFileWriters = buildRFWriters;
+                break;
+            case PROBE:
+                runFileWriters = probeRFWriters;
+                break;
+        }
+
+        for (int pid = spilledStatus.nextSetBit(0); pid >= 0; pid = spilledStatus.nextSetBit(pid + 1)) {
+            if (bufferManager.getNumTuples(pid) > 0) {
+                bufferManager.flushPartition(pid, getSpillWriterOrCreateNewOneIfNotExist(pid, whichSide));
+                bufferManager.clearPartition(pid);
+                runFileWriters[pid].close();
+            }
+        }
+    }
+
+    private void bringBackSpilledPartitionIfHasMoreMemory() throws HyracksDataException {
+        // we need number of |spilledPartitions| buffers to store the probe data
+        int freeSpace = (memForJoin - spilledStatus.cardinality()) * ctx.getInitialFrameSize();
+        for (int p = spilledStatus.nextClearBit(0); p >= 0
+                && p < numOfPartitions; p = spilledStatus.nextClearBit(p + 1)) {
+            freeSpace -= bufferManager.getPhysicalSize(p);
+        }
+
+        int pid = 0;
+        while ((pid = selectPartitionsToReload(freeSpace, pid)) >= 0) {
+            if (!loadPartitionInMem(pid, buildRFWriters[pid])) {
+                return;
+            }
+            freeSpace -= bufferManager.getPhysicalSize(pid);
+        }
+    }
+
+    private boolean loadPartitionInMem(int pid, RunFileWriter wr) throws HyracksDataException {
+        RunFileReader r = wr.createDeleteOnCloseReader();
         r.open();
-        int counter = 0;
-        ByteBuffer mBuff = null;
-        reloadBuffer.reset();
-        while (r.nextFrame(reloadBuffer)) {
-            if (memBuffs[buffs[counter]] == null) {
-                memBuffs[buffs[counter]] = new VSizeFrame(ctx);
-            }
-            memBuffs[buffs[counter]].ensureFrameSize(reloadBuffer.getFrameSize());
-            mBuff = memBuffs[buffs[counter]].getBuffer();
-            FrameUtils.copyAndFlip(reloadBuffer.getBuffer(), mBuff);
-            counter++;
-            reloadBuffer.reset();
+        if (reloadBuffer == null) {
+            reloadBuffer = new VSizeFrame(ctx);
         }
-
-        int curNext = nextBuff[buffs[buffs.length - 1]];
-        nextBuff[buffs[buffs.length - 1]] = END_OF_PARTITION;
-        nextFreeBuffIx = curNext;
+        while (r.nextFrame(reloadBuffer)) {
+            accessorBuild.reset(reloadBuffer.getBuffer());
+            for (int tid = 0; tid < accessorBuild.getTupleCount(); tid++) {
+                if (!bufferManager.insertTuple(pid, accessorBuild, tid, tempPtr)) {
+                    // for some reason (e.g. due to fragmentation) if the inserting failed, we need to clear the occupied frames
+                    bufferManager.clearPartition(pid);
+                    r.close();
+                    return false;
+                }
+            }
+        }
 
         r.close();
-        pStatus.set(pid, false);
+        spilledStatus.set(pid, false);
         buildRFWriters[pid] = null;
+        return true;
     }
 
-    private ArrayList<Integer> selectPartitionsToReload() {
-        ArrayList<Integer> p = new ArrayList<Integer>();
-        for (int i = pStatus.nextSetBit(0); i >= 0; i = pStatus.nextSetBit(i + 1)) {
-            if (buildPSizeInFrames[i] > 0 && (freeFramesCounter - buildPSizeInFrames[i] >= 0)) {
-                p.add(i);
-                freeFramesCounter -= buildPSizeInFrames[i];
-            }
-            if (freeFramesCounter < 1) { //No more free buffer available
-                return p;
+    private int selectPartitionsToReload(int freeSpace, int pid) {
+        for (int i = spilledStatus.nextSetBit(pid); i >= 0; i = spilledStatus.nextSetBit(i + 1)) {
+            assert buildRFWriters[i].getFileSize() > 0 : "How comes a spilled partition have size 0?";
+            if (freeSpace >= buildRFWriters[i].getFileSize()) {
+                return i;
             }
         }
-        return p;
+        return -1;
     }
 
     private void createInMemoryJoiner(int inMemTupCount) throws HyracksDataException {
         ISerializableTable table = new SerializableHashTable(inMemTupCount, ctx);
         this.inMemJoiner = new InMemoryHashJoin(ctx, inMemTupCount, new FrameTupleAccessor(probeRd), probeHpc,
                 new FrameTupleAccessor(buildRd), buildHpc,
-                new FrameTuplePairComparator(probeKeys, buildKeys, comparators), isLeftOuter, nullWriters1, table,
+                new FrameTuplePairComparator(probeKeys, buildKeys, comparators), isLeftOuter, nullWriters, table,
                 predEvaluator, isReversed);
     }
 
     private void cacheInMemJoin() throws HyracksDataException {
 
         for (int pid = 0; pid < numOfPartitions; pid++) {
-            if (!pStatus.get(pid)) {
-                int nextBuffIx = curPBuff[pid];
-                while (nextBuffIx > -1) { //It is not Invalid or End_Of_Partition
-                    inMemJoiner.build(memBuffs[nextBuffIx].getBuffer());
-                    nextBuffIx = nextBuff[nextBuffIx];
-                }
+            if (!spilledStatus.get(pid)) {
+                bufferManager.flushPartition(pid, new IFrameWriter() {
+                    @Override
+                    public void open() throws HyracksDataException {
+
+                    }
+
+                    @Override
+                    public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+                        inMemJoiner.build(buffer);
+                    }
+
+                    @Override
+                    public void fail() throws HyracksDataException {
+
+                    }
+
+                    @Override
+                    public void close() throws HyracksDataException {
+
+                    }
+                });
             }
         }
     }
 
     public void initProbe() throws HyracksDataException {
 
-        sPartBuffs = new IFrame[numOfSpilledParts];
-        for (int i = 0; i < numOfSpilledParts; i++) {
-            sPartBuffs[i] = new VSizeFrame(ctx);
-        }
-        curPBuff = new int[numOfPartitions];
-        int nextBuffIxToAlloc = 0;
-        /* We only need to allocate one frame per spilled partition. 
-         * Resident partitions do not need frames in probe, as their tuples join 
-         * immediately with the resident build tuples using the inMemoryHashJoin */
-        for (int i = 0; i < numOfPartitions; i++) {
-            curPBuff[i] = (pStatus.get(i)) ? nextBuffIxToAlloc++ : BUFFER_FOR_RESIDENT_PARTS;
-        }
         probePSizeInTups = new int[numOfPartitions];
         probeRFWriters = new RunFileWriter[numOfPartitions];
 
-        probeResBuff = new VSizeFrame(ctx);
-
-        probeTupAppenderToResident = new FrameTupleAppender();
-        probeTupAppenderToResident.reset(probeResBuff, true);
-
-        probeTupAppenderToSpilled = new FrameTupleAppender();
-
     }
 
     public void probe(ByteBuffer buffer, IFrameWriter writer) throws HyracksDataException {
         accessorProbe.reset(buffer);
         int tupleCount = accessorProbe.getTupleCount();
 
-        boolean print = false;
-        if (print) {
-            accessorProbe.prettyPrint();
-        }
-
-        if (numOfSpilledParts == 0) {
+        if (isBuildRelAllInMemory()) {
             inMemJoiner.join(buffer, writer);
             return;
         }
@@ -530,74 +362,65 @@
             int pid = probeHpc.partition(accessorProbe, i, numOfPartitions);
 
             if (buildPSizeInTups[pid] > 0 || isLeftOuter) { //Tuple has potential match from previous phase
-                if (pStatus.get(pid)) { //pid is Spilled
-                    boolean needToClear = false;
-                    IFrame frame = sPartBuffs[curPBuff[pid]];
-                    while (true) {
-                        probeTupAppenderToSpilled.reset(frame, needToClear);
-                        if (probeTupAppenderToSpilled.append(accessorProbe, i)) {
+                if (spilledStatus.get(pid)) { //pid is Spilled
+                    while (!bufferManager.insertTuple(pid, accessorProbe, i, tempPtr)) {
+                        int victim = pid;
+                        if (bufferManager.getNumTuples(pid) == 0) { // current pid is empty, choose the biggest one
+                            victim = spillPolicy.findSpilledPartitionWithMaxMemoryUsage();
+                        }
+                        if (victim < 0) { // current tuple is too big for all the free space
+                            flushBigProbeObjectToDisk(pid, accessorProbe, i);
                             break;
                         }
-                        probeWrite(pid, frame.getBuffer());
-                        frame.reset();
-                        needToClear = true;
+                        RunFileWriter runFileWriter = getSpillWriterOrCreateNewOneIfNotExist(victim, SIDE.PROBE);
+                        bufferManager.flushPartition(victim, runFileWriter);
+                        bufferManager.clearPartition(victim);
                     }
                 } else { //pid is Resident
-                    while (true) {
-                        if (probeTupAppenderToResident.append(accessorProbe, i)) {
-                            break;
-                        }
-                        inMemJoiner.join(probeResBuff.getBuffer(), writer);
-                        probeTupAppenderToResident.reset(probeResBuff, true);
-                    }
-
+                    inMemJoiner.join(accessorProbe, i, writer);
                 }
                 probePSizeInTups[pid]++;
             }
-
         }
 
     }
 
-    public void closeProbe(IFrameWriter writer) throws
-            HyracksDataException { //We do NOT join the spilled partitions here, that decision is made at the descriptor level (which join technique to use)
-        inMemJoiner.join(probeResBuff.getBuffer(), writer);
+    private void flushBigProbeObjectToDisk(int pid, FrameTupleAccessor accessorProbe, int i)
+            throws HyracksDataException {
+        if (bigProbeFrameAppender == null) {
+            bigProbeFrameAppender = new FrameTupleAppender(new VSizeFrame(ctx));
+        }
+        RunFileWriter runFileWriter = getSpillWriterOrCreateNewOneIfNotExist(pid, SIDE.PROBE);
+        if (!bigProbeFrameAppender.append(accessorProbe, i)) {
+            throw new HyracksDataException("The given tuple is too big");
+        }
+        bigProbeFrameAppender.write(runFileWriter, true);
+    }
+
+    private boolean isBuildRelAllInMemory() {
+        return spilledStatus.nextSetBit(0) < 0;
+    }
+
+    public void closeProbe(IFrameWriter writer) throws HyracksDataException {
+        //We do NOT join the spilled partitions here, that decision is made at the descriptor level (which join technique to use)
         inMemJoiner.closeJoin(writer);
+        closeAllSpilledPartitions(SIDE.PROBE);
+        bufferManager = null;
+    }
 
-        for (int pid = pStatus.nextSetBit(0); pid >= 0; pid = pStatus.nextSetBit(pid + 1)) {
-            ByteBuffer buff = sPartBuffs[curPBuff[pid]].getBuffer();
-            accessorProbe.reset(buff);
-            if (accessorProbe.getTupleCount() > 0) {
-                probeWrite(pid, buff);
+    /**
+     * In case of failure happens, we need to clear up the generated temporary files.
+     */
+    public void clearProbeTempFiles() {
+        for (int i = 0; i < probeRFWriters.length; i++) {
+            if (probeRFWriters[i] != null) {
+                probeRFWriters[i].getFileReference().delete();
             }
-            closeProbeWriter(pid);
-        }
-    }
-
-    private void probeWrite(int pid, ByteBuffer buff) throws HyracksDataException {
-        RunFileWriter pWriter = probeRFWriters[pid];
-        if (pWriter == null) {
-            FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(rel1Name);
-            pWriter = new RunFileWriter(file, ctx.getIOManager());
-            pWriter.open();
-            probeRFWriters[pid] = pWriter;
-        }
-        pWriter.nextFrame(buff);
-    }
-
-    private void closeProbeWriter(int pid) throws HyracksDataException {
-        RunFileWriter writer = probeRFWriters[pid];
-        if (writer != null) {
-            writer.close();
         }
     }
 
     public RunFileReader getBuildRFReader(int pid) throws HyracksDataException {
-        return ((buildRFWriters[pid] == null) ? null : (buildRFWriters[pid]).createReader());
-    }
-
-    public long getBuildPartitionSize(int pid) {
-        return ((buildRFWriters[pid] == null) ? 0 : buildRFWriters[pid].getFileSize());
+        return ((buildRFWriters[pid] == null) ? null : (buildRFWriters[pid]).createDeleteOnCloseReader());
     }
 
     public int getBuildPartitionSizeInTup(int pid) {
@@ -605,11 +428,7 @@
     }
 
     public RunFileReader getProbeRFReader(int pid) throws HyracksDataException {
-        return ((probeRFWriters[pid] == null) ? null : (probeRFWriters[pid]).createReader());
-    }
-
-    public long getProbePartitionSize(int pid) {
-        return ((probeRFWriters[pid] == null) ? 0 : probeRFWriters[pid].getFileSize());
+        return ((probeRFWriters[pid] == null) ? null : (probeRFWriters[pid]).createDeleteOnCloseReader());
     }
 
     public int getProbePartitionSizeInTup(int pid) {
@@ -637,37 +456,7 @@
     }
 
     public BitSet getPartitionStatus() {
-        return pStatus;
-    }
-
-    public String debugGetStats() {
-        int numOfResidentPartitions = 0;
-        int numOfSpilledPartitions = 0;
-        double sumOfBuildSpilledSizes = 0;
-        double sumOfProbeSpilledSizes = 0;
-        int numOfInMemTups = 0;
-        for (int i = 0; i < numOfPartitions; i++) {
-            if (pStatus.get(i)) { //Spilled
-                numOfSpilledPartitions++;
-                sumOfBuildSpilledSizes += buildPSizeInTups[i];
-                sumOfProbeSpilledSizes += probePSizeInTups[i];
-            } else { //Resident
-                numOfResidentPartitions++;
-                numOfInMemTups += buildPSizeInTups[i];
-            }
-        }
-
-        double avgBuildSpSz = sumOfBuildSpilledSizes / numOfSpilledPartitions;
-        double avgProbeSpSz = sumOfProbeSpilledSizes / numOfSpilledPartitions;
-        String s =
-                "Resident Partitions:\t" + numOfResidentPartitions + "\nSpilled Partitions:\t" + numOfSpilledPartitions
-                        + "\nAvg Build Spilled Size:\t" + avgBuildSpSz + "\nAvg Probe Spilled Size:\t" + avgProbeSpSz
-                        + "\nIn-Memory Tups:\t" + numOfInMemTups + "\nNum of Free Buffers:\t" + freeFramesCounter;
-        return s;
-    }
-
-    public boolean isTableEmpty() {
-        return this.isTableEmpty;
+        return spilledStatus;
     }
 
     public void setIsReversed(boolean b) {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
index 0278f92..22ad91f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.BitSet;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.apache.hyracks.api.comm.IFrame;
@@ -43,16 +44,15 @@
 import org.apache.hyracks.api.dataflow.value.ITuplePairComparator;
 import org.apache.hyracks.api.dataflow.value.ITuplePairComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputer;
-import org.apache.hyracks.api.dataflow.value.ITuplePartitionComputerFamily;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTuplePairComparator;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFamily;
-import org.apache.hyracks.dataflow.common.data.partition.RepartitionComputerFamily;
 import org.apache.hyracks.dataflow.common.io.RunFileReader;
 import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
 import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
@@ -61,6 +61,7 @@
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputUnaryOutputOperatorNodePushable;
 import org.apache.hyracks.dataflow.std.structures.ISerializableTable;
 import org.apache.hyracks.dataflow.std.structures.SerializableHashTable;
+import org.apache.hyracks.dataflow.std.util.FrameTuplePairComparator;
 
 /**
  * @author pouria
@@ -111,15 +112,15 @@
     private static final String PROBE_REL = "RelR";
     private static final String BUILD_REL = "RelS";
 
-    private final int memsize;
+    private final int frameLimit;
     private final int inputsize0;
     private final double fudgeFactor;
     private final int[] probeKeys;
     private final int[] buildKeys;
     private final IBinaryHashFunctionFamily[] hashFunctionGeneratorFactories;
     private final IBinaryComparatorFactory[] comparatorFactories; //For in-mem HJ
-    private final ITuplePairComparatorFactory tuplePairComparatorFactory0; //For NLJ in probe
-    private final ITuplePairComparatorFactory tuplePairComparatorFactory1; //For NLJ in probe
+    private final ITuplePairComparatorFactory tuplePairComparatorFactoryProbe2Build; //For NLJ in probe
+    private final ITuplePairComparatorFactory tuplePairComparatorFactoryBuild2Probe; //For NLJ in probe
     private final IPredicateEvaluatorFactory predEvaluatorFactory;
 
     private final boolean isLeftOuter;
@@ -132,50 +133,38 @@
 
     private static final Logger LOGGER = Logger.getLogger(OptimizedHybridHashJoinOperatorDescriptor.class.getName());
 
-    public OptimizedHybridHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int memsize, int inputsize0,
+    public OptimizedHybridHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int frameLimit, int inputsize0,
             double factor, int[] keys0, int[] keys1, IBinaryHashFunctionFamily[] hashFunctionGeneratorFactories,
             IBinaryComparatorFactory[] comparatorFactories, RecordDescriptor recordDescriptor,
-            ITuplePairComparatorFactory tupPaircomparatorFactory0,
-            ITuplePairComparatorFactory tupPaircomparatorFactory1, IPredicateEvaluatorFactory predEvaluatorFactory,
+            ITuplePairComparatorFactory tupPaircomparatorFactory01,
+            ITuplePairComparatorFactory tupPaircomparatorFactory10, IPredicateEvaluatorFactory predEvaluatorFactory,
             boolean isLeftOuter, INullWriterFactory[] nullWriterFactories1) throws HyracksDataException {
 
         super(spec, 2, 1);
-        this.memsize = memsize;
+        this.frameLimit = frameLimit;
         this.inputsize0 = inputsize0;
         this.fudgeFactor = factor;
         this.probeKeys = keys0;
         this.buildKeys = keys1;
         this.hashFunctionGeneratorFactories = hashFunctionGeneratorFactories;
         this.comparatorFactories = comparatorFactories;
-        this.tuplePairComparatorFactory0 = tupPaircomparatorFactory0;
-        this.tuplePairComparatorFactory1 = tupPaircomparatorFactory1;
+        this.tuplePairComparatorFactoryProbe2Build = tupPaircomparatorFactory01;
+        this.tuplePairComparatorFactoryBuild2Probe = tupPaircomparatorFactory10;
         recordDescriptors[0] = recordDescriptor;
         this.predEvaluatorFactory = predEvaluatorFactory;
         this.isLeftOuter = isLeftOuter;
         this.nullWriterFactories1 = nullWriterFactories1;
     }
 
-    public OptimizedHybridHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int memsize, int inputsize0,
+    public OptimizedHybridHashJoinOperatorDescriptor(IOperatorDescriptorRegistry spec, int frameLimit, int inputsize0,
             double factor, int[] keys0, int[] keys1, IBinaryHashFunctionFamily[] hashFunctionGeneratorFactories,
             IBinaryComparatorFactory[] comparatorFactories, RecordDescriptor recordDescriptor,
-            ITuplePairComparatorFactory tupPaircomparatorFactory0,
-            ITuplePairComparatorFactory tupPaircomparatorFactory1, IPredicateEvaluatorFactory predEvaluatorFactory)
+            ITuplePairComparatorFactory tupPaircomparatorFactory01,
+            ITuplePairComparatorFactory tupPaircomparatorFactory10, IPredicateEvaluatorFactory predEvaluatorFactory)
             throws HyracksDataException {
-
-        super(spec, 2, 1);
-        this.memsize = memsize;
-        this.inputsize0 = inputsize0;
-        this.fudgeFactor = factor;
-        this.probeKeys = keys0;
-        this.buildKeys = keys1;
-        this.hashFunctionGeneratorFactories = hashFunctionGeneratorFactories;
-        this.comparatorFactories = comparatorFactories;
-        this.tuplePairComparatorFactory0 = tupPaircomparatorFactory0;
-        this.tuplePairComparatorFactory1 = tupPaircomparatorFactory1;
-        this.predEvaluatorFactory = predEvaluatorFactory;
-        recordDescriptors[0] = recordDescriptor;
-        this.isLeftOuter = false;
-        this.nullWriterFactories1 = null;
+        this(spec, frameLimit, inputsize0, factor, keys0, keys1, hashFunctionGeneratorFactories,
+                comparatorFactories, recordDescriptor, tupPaircomparatorFactory01, tupPaircomparatorFactory10,
+                predEvaluatorFactory, false, null);
     }
 
     @Override
@@ -207,8 +196,7 @@
         if (memorySize > buildSize) {
             return 1; //We will switch to in-Mem HJ eventually
         }
-        numberOfPartitions = (int) (Math.ceil((double) (buildSize * factor / nPartitions - memorySize)
-                / (double) (memorySize - 1)));
+        numberOfPartitions = (int) (Math.ceil((buildSize * factor / nPartitions - memorySize) / (memorySize - 1)));
         if (numberOfPartitions <= 0) {
             numberOfPartitions = 1; //becomes in-memory hash join
         }
@@ -265,47 +253,44 @@
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions) {
 
-            final RecordDescriptor probeRd = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
-            final RecordDescriptor buildRd = recordDescProvider.getInputRecordDescriptor(probeAid, 0);
+            final RecordDescriptor buildRd = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
+            final RecordDescriptor probeRd = recordDescProvider.getInputRecordDescriptor(probeAid, 0);
 
             final IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
             for (int i = 0; i < comparatorFactories.length; i++) {
                 comparators[i] = comparatorFactories[i].createBinaryComparator();
             }
 
-            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null : predEvaluatorFactory
-                    .createPredicateEvaluator());
+            final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null
+                    : predEvaluatorFactory.createPredicateEvaluator());
 
             IOperatorNodePushable op = new AbstractUnaryInputSinkOperatorNodePushable() {
-                private BuildAndPartitionTaskState state = new BuildAndPartitionTaskState(ctx.getJobletContext()
-                        .getJobId(), new TaskId(getActivityId(), partition));
+                private BuildAndPartitionTaskState state = new BuildAndPartitionTaskState(
+                        ctx.getJobletContext().getJobId(), new TaskId(getActivityId(), partition));
 
                 ITuplePartitionComputer probeHpc = new FieldHashPartitionComputerFamily(probeKeys,
                         hashFunctionGeneratorFactories).createPartitioner(0);
                 ITuplePartitionComputer buildHpc = new FieldHashPartitionComputerFamily(buildKeys,
                         hashFunctionGeneratorFactories).createPartitioner(0);
+                boolean isFailed = false;
 
                 @Override
                 public void open() throws HyracksDataException {
-                    if (memsize <= 2) { //Dedicated buffers: One buffer to read and one buffer for output
+                    if (frameLimit <= 2) { //Dedicated buffers: One buffer to read and one buffer for output
                         throw new HyracksDataException("not enough memory for Hybrid Hash Join");
                     }
-                    state.memForJoin = memsize - 2;
+                    state.memForJoin = frameLimit - 2;
                     state.numOfPartitions = getNumberOfPartitions(state.memForJoin, inputsize0, fudgeFactor,
                             nPartitions);
-                    if (!isLeftOuter) {
-                        state.hybridHJ = new OptimizedHybridHashJoin(ctx, state.memForJoin, state.numOfPartitions,
-                                PROBE_REL, BUILD_REL, probeKeys, buildKeys, comparators, probeRd, buildRd, probeHpc,
-                                buildHpc, predEvaluator);
-                    } else {
-                        state.hybridHJ = new OptimizedHybridHashJoin(ctx, state.memForJoin, state.numOfPartitions,
-                                PROBE_REL, BUILD_REL, probeKeys, buildKeys, comparators, probeRd, buildRd, probeHpc,
-                                buildHpc, predEvaluator, isLeftOuter, nullWriterFactories1);
-                    }
+                    state.hybridHJ = new OptimizedHybridHashJoin(ctx, state.memForJoin, state.numOfPartitions,
+                            PROBE_REL, BUILD_REL, probeKeys, buildKeys, comparators, probeRd, buildRd, probeHpc,
+                            buildHpc, predEvaluator, isLeftOuter, nullWriterFactories1);
 
                     state.hybridHJ.initBuild();
-                    LOGGER.fine("OptimizedHybridHashJoin is starting the build phase with " + state.numOfPartitions
-                            + " partitions using " + state.memForJoin + " frames for memory.");
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine("OptimizedHybridHashJoin is starting the build phase with " + state.numOfPartitions
+                                + " partitions using " + state.memForJoin + " frames for memory.");
+                    }
                 }
 
                 @Override
@@ -316,12 +301,19 @@
                 @Override
                 public void close() throws HyracksDataException {
                     state.hybridHJ.closeBuild();
-                    ctx.setStateObject(state);
-                    LOGGER.fine("OptimizedHybridHashJoin closed its build phase");
+                    if (isFailed){
+                        state.hybridHJ.clearBuildTempFiles();
+                    } else {
+                        ctx.setStateObject(state);
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.fine("OptimizedHybridHashJoin closed its build phase");
+                        }
+                    }
                 }
 
                 @Override
                 public void fail() throws HyracksDataException {
+                    isFailed = true;
                 }
 
             };
@@ -351,13 +343,15 @@
         @Override
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions)
-                throws HyracksDataException {
+                        throws HyracksDataException {
 
-            final RecordDescriptor probeRd = recordDescProvider.getInputRecordDescriptor(buildAid, 0);
-            final RecordDescriptor buildRd = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
+            final RecordDescriptor buildRd = recordDescProvider.getInputRecordDescriptor(buildAid, 0);
+            final RecordDescriptor probeRd = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
             final IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
-            final ITuplePairComparator nljComparator0 = tuplePairComparatorFactory0.createTuplePairComparator(ctx);
-            final ITuplePairComparator nljComparator1 = tuplePairComparatorFactory1.createTuplePairComparator(ctx);
+            final ITuplePairComparator nljComparatorProbe2Build = tuplePairComparatorFactoryProbe2Build
+                    .createTuplePairComparator(ctx);
+            final ITuplePairComparator nljComparatorBuild2Probe = tuplePairComparatorFactoryBuild2Probe
+                    .createTuplePairComparator(ctx);
             final IPredicateEvaluator predEvaluator = (predEvaluatorFactory == null ? null : predEvaluatorFactory
                     .createPredicateEvaluator());
 
@@ -366,9 +360,15 @@
             }
 
             final INullWriter[] nullWriters1 = isLeftOuter ? new INullWriter[nullWriterFactories1.length] : null;
+            final ArrayTupleBuilder nullTupleBuild = isLeftOuter ?
+                    new ArrayTupleBuilder(buildRd.getFieldCount()) :
+                    null;
             if (isLeftOuter) {
+                DataOutput out = nullTupleBuild.getDataOutput();
                 for (int i = 0; i < nullWriterFactories1.length; i++) {
                     nullWriters1[i] = nullWriterFactories1[i].createNullWriter();
+                    nullWriters1[i].writeNull(out);
+                    nullTupleBuild.addFieldEndOffset();
                 }
             }
 
@@ -376,6 +376,9 @@
                 private BuildAndPartitionTaskState state;
                 private IFrame rPartbuff = new VSizeFrame(ctx);
 
+                private FrameTupleAppender nullResultAppender = null;
+                private FrameTupleAccessor probeTupleAccessor;
+
                 @Override
                 public void open() throws HyracksDataException {
                     state = (BuildAndPartitionTaskState) ctx.getStateObject(new TaskId(new ActivityId(getOperatorId(),
@@ -384,7 +387,9 @@
                     writer.open();
                     state.hybridHJ.initProbe();
 
-                    LOGGER.fine("OptimizedHybridHashJoin is starting the probe phase.");
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine("OptimizedHybridHashJoin is starting the probe phase.");
+                    }
                 }
 
                 @Override
@@ -399,260 +404,269 @@
 
                 @Override
                 public void close() throws HyracksDataException {
-                    state.hybridHJ.closeProbe(writer);
+                    try {
+                        state.hybridHJ.closeProbe(writer);
 
-                    BitSet partitionStatus = state.hybridHJ.getPartitionStatus();
+                        BitSet partitionStatus = state.hybridHJ.getPartitionStatus();
 
-                    rPartbuff.reset();
-                    for (int pid = partitionStatus.nextSetBit(0); pid >= 0; pid = partitionStatus.nextSetBit(pid + 1)) {
+                        rPartbuff.reset();
+                        for (int pid = partitionStatus.nextSetBit(0); pid >= 0; pid = partitionStatus.nextSetBit(pid + 1)) {
 
-                        RunFileReader bReader = state.hybridHJ.getBuildRFReader(pid);
-                        RunFileReader pReader = state.hybridHJ.getProbeRFReader(pid);
+                            RunFileReader bReader = state.hybridHJ.getBuildRFReader(pid);
+                            RunFileReader pReader = state.hybridHJ.getProbeRFReader(pid);
 
-                        if (bReader == null || pReader
-                                == null) { //either of sides (or both) does not have any tuple, thus no need for joining (no potential match)
-                            continue;
+                            if (bReader == null || pReader == null) {
+                                if (isLeftOuter && pReader != null) {
+                                    appendNullToProbeTuples(pReader);
+                                }
+                                continue;
+                            }
+                            int bSize = state.hybridHJ.getBuildPartitionSizeInTup(pid);
+                            int pSize = state.hybridHJ.getProbePartitionSizeInTup(pid);
+                            joinPartitionPair(bReader, pReader, bSize, pSize, 1);
                         }
-                        int bSize = state.hybridHJ.getBuildPartitionSizeInTup(pid);
-                        int pSize = state.hybridHJ.getProbePartitionSizeInTup(pid);
-                        int beforeMax = (bSize > pSize) ? bSize : pSize;
-                        joinPartitionPair(state.hybridHJ, bReader, pReader, pid, beforeMax, 1, false);
+                    } finally {
+                        writer.close();
                     }
-                    writer.close();
-                    LOGGER.fine("OptimizedHybridHashJoin closed its probe phase");
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine("OptimizedHybridHashJoin closed its probe phase");
+                    }
                 }
 
-                private void joinPartitionPair(OptimizedHybridHashJoin ohhj, RunFileReader buildSideReader,
-                        RunFileReader probeSideReader, int pid, int beforeMax, int level, boolean wasReversed)
+                //The buildSideReader should be always the original buildSideReader, so should the probeSideReader
+                private void joinPartitionPair(RunFileReader buildSideReader, RunFileReader probeSideReader,
+                        int buildSizeInTuple, int probeSizeInTuple, int level)
                         throws HyracksDataException {
                     ITuplePartitionComputer probeHpc = new FieldHashPartitionComputerFamily(probeKeys,
                             hashFunctionGeneratorFactories).createPartitioner(level);
                     ITuplePartitionComputer buildHpc = new FieldHashPartitionComputerFamily(buildKeys,
                             hashFunctionGeneratorFactories).createPartitioner(level);
 
-                    long buildPartSize = wasReversed ?
-                            (ohhj.getProbePartitionSize(pid) / ctx.getInitialFrameSize()) :
-                            (ohhj
-                                    .getBuildPartitionSize(pid) / ctx.getInitialFrameSize());
-                    long probePartSize = wasReversed ?
-                            (ohhj.getBuildPartitionSize(pid) / ctx.getInitialFrameSize()) :
-                            (ohhj
-                                    .getProbePartitionSize(pid) / ctx.getInitialFrameSize());
+                    long buildPartSize = buildSideReader.getFileSize() / ctx.getInitialFrameSize();
+                    long probePartSize = probeSideReader.getFileSize() / ctx.getInitialFrameSize();
+                    int beforeMax = Math.max(buildSizeInTuple, probeSizeInTuple);
 
-                    LOGGER.fine("\n>>>Joining Partition Pairs (thread_id " + Thread.currentThread().getId() + ") (pid "
-                            + pid + ") - (level " + level + ") - wasReversed " + wasReversed + " - BuildSize:\t"
-                            + buildPartSize + "\tProbeSize:\t" + probePartSize + " - MemForJoin " + (state.memForJoin)
-                            + "  - LeftOuter is " + isLeftOuter);
+                    if (LOGGER.isLoggable(Level.FINE)) {
+                        LOGGER.fine(
+                                "\n>>>Joining Partition Pairs (thread_id " + Thread.currentThread().getId() + ") (pid "
+                                        + ") - (level " + level + ")"
+                                        + " - BuildSize:\t" + buildPartSize + "\tProbeSize:\t" + probePartSize
+                                        + " - MemForJoin "
+                                        + (state.memForJoin)
+                                        + "  - LeftOuter is " + isLeftOuter);
+                    }
 
                     //Apply in-Mem HJ if possible
-                    if (!skipInMemoryHJ && (buildPartSize < state.memForJoin)
-                            || (probePartSize < state.memForJoin && !isLeftOuter)) {
+                    if (!skipInMemoryHJ && ((buildPartSize < state.memForJoin)
+                            || (probePartSize < state.memForJoin && !isLeftOuter))) {
                         int tabSize = -1;
                         if (!forceRR && (isLeftOuter || (buildPartSize
                                 < probePartSize))) { //Case 1.1 - InMemHJ (wout Role-Reversal)
-                            LOGGER.fine("\t>>>Case 1.1 (IsLeftOuter || buildSize<probe) AND ApplyInMemHJ - [Level "
-                                    + level + "]");
-                            tabSize = wasReversed ? ohhj.getProbePartitionSizeInTup(pid) : ohhj
-                                    .getBuildPartitionSizeInTup(pid);
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.fine("\t>>>Case 1.1 (IsLeftOuter || buildSize<probe) AND ApplyInMemHJ - [Level "
+                                        + level + "]");
+                            }
+                            tabSize = buildSizeInTuple;
                             if (tabSize == 0) {
                                 throw new HyracksDataException(
                                         "Trying to join an empty partition. Invalid table size for inMemoryHashJoin.");
                             }
                             //Build Side is smaller
-                            applyInMemHashJoin(buildKeys, probeKeys, tabSize, probeRd, buildRd, probeHpc, buildHpc,
-                                    buildSideReader, probeSideReader, false, pid); //checked-confirmed
+                            applyInMemHashJoin(buildKeys, probeKeys, tabSize, buildRd, probeRd, buildHpc,
+                                    probeHpc, buildSideReader, probeSideReader); // checked-confirmed
                         } else { //Case 1.2 - InMemHJ with Role Reversal
-                            LOGGER.fine(
-                                    "\t>>>Case 1.2. (NoIsLeftOuter || probe<build) AND ApplyInMemHJ WITH RoleReversal - [Level "
-                                            + level + "]");
-                            tabSize = wasReversed ? ohhj.getBuildPartitionSizeInTup(pid) : ohhj
-                                    .getProbePartitionSizeInTup(pid);
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.fine(
+                                        "\t>>>Case 1.2. (NoIsLeftOuter || probe<build) AND ApplyInMemHJ WITH RoleReversal - [Level "
+                                                + level + "]");
+                            }
+                            tabSize = probeSizeInTuple;
                             if (tabSize == 0) {
                                 throw new HyracksDataException(
                                         "Trying to join an empty partition. Invalid table size for inMemoryHashJoin.");
                             }
                             //Probe Side is smaller
-                            applyInMemHashJoin(probeKeys, buildKeys, tabSize, buildRd, probeRd, buildHpc, probeHpc,
-                                    probeSideReader, buildSideReader, true, pid); //checked-confirmed
+                            applyInMemHashJoin(probeKeys, buildKeys, tabSize, probeRd, buildRd, probeHpc,
+                                    buildHpc, probeSideReader, buildSideReader); // checked-confirmed
                         }
                     }
                     //Apply (Recursive) HHJ
                     else {
-                        LOGGER.fine("\t>>>Case 2. ApplyRecursiveHHJ - [Level " + level + "]");
-                        OptimizedHybridHashJoin rHHj;
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.fine("\t>>>Case 2. ApplyRecursiveHHJ - [Level " + level + "]");
+                        }
                         if (!forceRR && (isLeftOuter
                                 || buildPartSize < probePartSize)) { //Case 2.1 - Recursive HHJ (wout Role-Reversal)
-                            LOGGER.fine("\t\t>>>Case 2.1 - RecursiveHHJ WITH (isLeftOuter || build<probe) - [Level "
-                                    + level + "]");
-                            int n = getNumberOfPartitions(state.memForJoin, (int) buildPartSize, fudgeFactor,
-                                    nPartitions);
-                            rHHj = new OptimizedHybridHashJoin(ctx, state.memForJoin, n, PROBE_REL, BUILD_REL,
-                                    probeKeys, buildKeys, comparators, probeRd, buildRd, probeHpc, buildHpc,
-                                    predEvaluator); //checked-confirmed
-
-                            buildSideReader.open();
-                            rHHj.initBuild();
-                            rPartbuff.reset();
-                            while (buildSideReader.nextFrame(rPartbuff)) {
-                                rHHj.build(rPartbuff.getBuffer());
-                            }
-
-                            rHHj.closeBuild();
-
-                            probeSideReader.open();
-                            rHHj.initProbe();
-                            rPartbuff.reset();
-                            while (probeSideReader.nextFrame(rPartbuff)) {
-                                rHHj.probe(rPartbuff.getBuffer(), writer);
-                            }
-                            rHHj.closeProbe(writer);
-
-                            int maxAfterBuildSize = rHHj.getMaxBuildPartitionSize();
-                            int maxAfterProbeSize = rHHj.getMaxProbePartitionSize();
-                            int afterMax = (maxAfterBuildSize > maxAfterProbeSize) ? maxAfterBuildSize
-                                    : maxAfterProbeSize;
-
-                            BitSet rPStatus = rHHj.getPartitionStatus();
-                            if (!forceNLJ && (afterMax < (NLJ_SWITCH_THRESHOLD
-                                    * beforeMax))) { //Case 2.1.1 - Keep applying HHJ
-                                LOGGER.fine(
-                                        "\t\t>>>Case 2.1.1 - KEEP APPLYING RecursiveHHJ WITH (isLeftOuter || build<probe) - [Level "
-                                                + level + "]");
-                                for (int rPid = rPStatus.nextSetBit(0);
-                                     rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) {
-                                    RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
-                                    RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
-
-                                    if (rbrfw == null || rprfw == null) {
-                                        continue;
-                                    }
-
-                                    joinPartitionPair(rHHj, rbrfw, rprfw, rPid, afterMax, (level + 1),
-                                            false); //checked-confirmed
-                                }
-
-                            } else { //Case 2.1.2 - Switch to NLJ
-                                LOGGER.fine(
-                                        "\t\t>>>Case 2.1.2 - SWITCHED to NLJ RecursiveHHJ WITH (isLeftOuter || build<probe) - [Level "
-                                                + level + "]");
-                                for (int rPid = rPStatus.nextSetBit(0);
-                                     rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) {
-                                    RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
-                                    RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
-
-                                    if (rbrfw == null || rprfw == null) {
-                                        continue;
-                                    }
-
-                                    int buildSideInTups = rHHj.getBuildPartitionSizeInTup(rPid);
-                                    int probeSideInTups = rHHj.getProbePartitionSizeInTup(rPid);
-                                    if (isLeftOuter || buildSideInTups < probeSideInTups) {
-                                        applyNestedLoopJoin(buildRd, probeRd, memsize, rprfw, rbrfw, nljComparator0,
-                                                false); //checked-modified
-                                    } else {
-                                        applyNestedLoopJoin(probeRd, buildRd, memsize, rbrfw, rprfw, nljComparator1,
-                                                true); //checked-modified
-                                    }
-                                }
-                            }
-                        } else { //Case 2.2 - Recursive HHJ (with Role-Reversal)
-                            LOGGER.fine("\t\t>>>Case 2.2. - RecursiveHHJ WITH RoleReversal - [Level " + level + "]");
-                            int n = getNumberOfPartitions(state.memForJoin, (int) probePartSize, fudgeFactor,
-                                    nPartitions);
-
-                            rHHj = new OptimizedHybridHashJoin(ctx, state.memForJoin, n, BUILD_REL, PROBE_REL,
-                                    buildKeys, probeKeys, comparators, buildRd, probeRd, buildHpc, probeHpc,
-                                    predEvaluator); //checked-confirmed
-                            rHHj.setIsReversed(true); //Added to use predicateEvaluator (for inMemoryHashJoin) correctly
-
-                            probeSideReader.open();
-                            rHHj.initBuild();
-                            rPartbuff.reset();
-                            while (probeSideReader.nextFrame(rPartbuff)) {
-                                rHHj.build(rPartbuff.getBuffer());
-                            }
-                            rHHj.closeBuild();
-                            rHHj.initProbe();
-                            buildSideReader.open();
-                            rPartbuff.reset();
-                            while (buildSideReader.nextFrame(rPartbuff)) {
-                                rHHj.probe(rPartbuff.getBuffer(), writer);
-                            }
-                            rHHj.closeProbe(writer);
-                            int maxAfterBuildSize = rHHj.getMaxBuildPartitionSize();
-                            int maxAfterProbeSize = rHHj.getMaxProbePartitionSize();
-                            int afterMax = (maxAfterBuildSize > maxAfterProbeSize) ? maxAfterBuildSize
-                                    : maxAfterProbeSize;
-                            BitSet rPStatus = rHHj.getPartitionStatus();
-
-                            if (!forceNLJ && (afterMax < (NLJ_SWITCH_THRESHOLD
-                                    * beforeMax))) { //Case 2.2.1 - Keep applying HHJ
-                                LOGGER.fine("\t\t>>>Case 2.2.1 - KEEP APPLYING RecursiveHHJ WITH RoleReversal - [Level "
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.fine("\t\t>>>Case 2.1 - RecursiveHHJ WITH (isLeftOuter || build<probe) - [Level "
                                         + level + "]");
-                                for (int rPid = rPStatus.nextSetBit(0);
-                                     rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) {
-                                    RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
-                                    RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
-
-                                    if (rbrfw == null || rprfw == null) {
-                                        continue;
-                                    }
-
-                                    joinPartitionPair(rHHj, rprfw, rbrfw, rPid, afterMax, (level + 1),
-                                            true); //checked-confirmed
-                                }
-                            } else { //Case 2.2.2 - Switch to NLJ
-                                LOGGER.fine(
-                                        "\t\t>>>Case 2.2.2 - SWITCHED to NLJ RecursiveHHJ WITH RoleReversal - [Level "
-                                                + level + "]");
-                                for (int rPid = rPStatus.nextSetBit(0);
-                                     rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) {
-                                    RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
-                                    RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
-
-                                    if (rbrfw == null || rprfw == null) {
-                                        continue;
-                                    }
-
-                                    long buildSideSize = rbrfw.getFileSize();
-                                    long probeSideSize = rprfw.getFileSize();
-                                    if (buildSideSize > probeSideSize) {
-                                        applyNestedLoopJoin(buildRd, probeRd, memsize, rbrfw, rprfw, nljComparator0,
-                                                true); //checked-modified
-                                    } else {
-                                        applyNestedLoopJoin(probeRd, buildRd, memsize, rprfw, rbrfw, nljComparator1,
-                                                true); //checked-modified
-                                    }
-                                }
                             }
+                            applyHybridHashJoin((int) buildPartSize, PROBE_REL, BUILD_REL, probeKeys, buildKeys,
+                                    probeRd, buildRd, probeHpc, buildHpc, probeSideReader, buildSideReader, level,
+                                    beforeMax);
+
+                        } else { //Case 2.2 - Recursive HHJ (with Role-Reversal)
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.fine(
+                                        "\t\t>>>Case 2.2. - RecursiveHHJ WITH RoleReversal - [Level " + level + "]");
+                            }
+
+                            applyHybridHashJoin((int) probePartSize, BUILD_REL, PROBE_REL, buildKeys, probeKeys,
+                                    buildRd, probeRd, buildHpc, probeHpc, buildSideReader, probeSideReader, level,
+                                    beforeMax);
+
                         }
-                        buildSideReader.close();
-                        probeSideReader.close();
                     }
                 }
 
+                private void applyHybridHashJoin(int tableSize,
+                        final String PROBE_REL, final String BUILD_REL,
+                        final int[] probeKeys, final int[] buildKeys,
+                        final RecordDescriptor probeRd, final RecordDescriptor buildRd,
+                        final ITuplePartitionComputer probeHpc, final ITuplePartitionComputer buildHpc,
+                        RunFileReader probeSideReader, RunFileReader buildSideReader,
+                        final int level, final long beforeMax)
+                        throws HyracksDataException {
+
+                    boolean isReversed = probeKeys == OptimizedHybridHashJoinOperatorDescriptor.this.buildKeys
+                            && buildKeys == OptimizedHybridHashJoinOperatorDescriptor.this.probeKeys;
+
+                    assert isLeftOuter ? !isReversed : true : "LeftOut Join can not reverse roles";
+
+                    OptimizedHybridHashJoin rHHj;
+                    int n = getNumberOfPartitions(state.memForJoin, tableSize, fudgeFactor,
+                            nPartitions);
+                    rHHj = new OptimizedHybridHashJoin(ctx, state.memForJoin, n, PROBE_REL, BUILD_REL,
+                            probeKeys, buildKeys, comparators, probeRd, buildRd, probeHpc, buildHpc,
+                            predEvaluator, isLeftOuter, nullWriterFactories1); //checked-confirmed
+
+                    rHHj.setIsReversed(isReversed);
+                    buildSideReader.open();
+                    rHHj.initBuild();
+                    rPartbuff.reset();
+                    while (buildSideReader.nextFrame(rPartbuff)) {
+                        rHHj.build(rPartbuff.getBuffer());
+                    }
+                    rHHj.closeBuild();
+                    buildSideReader.close();
+
+                    probeSideReader.open();
+                    rHHj.initProbe();
+                    rPartbuff.reset();
+                    while (probeSideReader.nextFrame(rPartbuff)) {
+                        rHHj.probe(rPartbuff.getBuffer(), writer);
+                    }
+                    rHHj.closeProbe(writer);
+                    probeSideReader.close();
+
+                    int maxAfterBuildSize = rHHj.getMaxBuildPartitionSize();
+                    int maxAfterProbeSize = rHHj.getMaxProbePartitionSize();
+                    int afterMax = Math.max(maxAfterBuildSize, maxAfterProbeSize);
+
+                    BitSet rPStatus = rHHj.getPartitionStatus();
+                    if (!forceNLJ && (afterMax < (NLJ_SWITCH_THRESHOLD
+                            * beforeMax))) { //Case 2.1.1 - Keep applying HHJ
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.fine(
+                                    "\t\t>>>Case 2.1.1 - KEEP APPLYING RecursiveHHJ WITH (isLeftOuter || build<probe) - [Level "
+                                            + level + "]");
+                        }
+                        for (int rPid = rPStatus.nextSetBit(0); rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) {
+                            RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
+                            RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
+                            int rbSizeInTuple = rHHj.getBuildPartitionSizeInTup(rPid);
+                            int rpSizeInTuple = rHHj.getProbePartitionSizeInTup(rPid);
+
+                            if (rbrfw == null || rprfw == null) {
+                                if (isLeftOuter && rprfw != null) { // if outer join, we don't reverse
+                                    appendNullToProbeTuples(rprfw);
+                                }
+                                continue;
+                            }
+
+                            if (isReversed) {
+                                joinPartitionPair(rprfw, rbrfw, rpSizeInTuple, rbSizeInTuple, level + 1);
+                            } else {
+                                joinPartitionPair(rbrfw, rprfw, rbSizeInTuple, rpSizeInTuple, level + 1);
+                            }
+                        }
+
+                    } else { //Case 2.1.2 - Switch to NLJ
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.fine(
+                                    "\t\t>>>Case 2.1.2 - SWITCHED to NLJ RecursiveHHJ WITH (isLeftOuter || build<probe) - [Level "
+                                            + level + "]");
+                        }
+                        for (int rPid = rPStatus.nextSetBit(0); rPid >= 0; rPid = rPStatus.nextSetBit(rPid + 1)) {
+                            RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
+                            RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
+
+                            if (rbrfw == null || rprfw == null) {
+                                if (isLeftOuter && rprfw != null) { // if outer join, we don't reverse
+                                    appendNullToProbeTuples(rprfw);
+                                }
+                                continue;
+                            }
+
+                            int buildSideInTups = rHHj.getBuildPartitionSizeInTup(rPid);
+                            int probeSideInTups = rHHj.getProbePartitionSizeInTup(rPid);
+                            // NLJ order is outer + inner, the order is reversed from the other joins
+                            if (isLeftOuter || probeSideInTups < buildSideInTups) {
+                                applyNestedLoopJoin(probeRd, buildRd, frameLimit, rprfw, rbrfw); //checked-modified
+                            } else {
+                                applyNestedLoopJoin(buildRd, probeRd, frameLimit, rbrfw, rprfw); //checked-modified
+                            }
+                        }
+                    }
+                }
+
+                private void appendNullToProbeTuples(RunFileReader probReader) throws HyracksDataException {
+                    if (nullResultAppender == null) {
+                        nullResultAppender = new FrameTupleAppender(new VSizeFrame(ctx));
+                    }
+                    if (probeTupleAccessor == null) {
+                        probeTupleAccessor = new FrameTupleAccessor(probeRd);
+                    }
+                    probReader.open();
+                    while (probReader.nextFrame(rPartbuff)) {
+                        probeTupleAccessor.reset(rPartbuff.getBuffer());
+                        for (int tid = 0; tid < probeTupleAccessor.getTupleCount(); tid++) {
+                            FrameUtils.appendConcatToWriter(writer, nullResultAppender, probeTupleAccessor, tid,
+                                    nullTupleBuild.getFieldEndOffsets(), nullTupleBuild.getByteArray(), 0,
+                                    nullTupleBuild.getSize());
+                        }
+                    }
+                    probReader.close();
+                    nullResultAppender.write(writer, true);
+                }
+
                 private void applyInMemHashJoin(int[] bKeys, int[] pKeys, int tabSize, RecordDescriptor buildRDesc,
-                        RecordDescriptor probeRDesc, ITuplePartitionComputer hpcRepLarger,
-                        ITuplePartitionComputer hpcRepSmaller, RunFileReader bReader, RunFileReader pReader,
-                        boolean reverse, int pid) throws HyracksDataException {
+                        RecordDescriptor probeRDesc, ITuplePartitionComputer hpcRepBuild,
+                        ITuplePartitionComputer hpcRepProbe, RunFileReader bReader, RunFileReader pReader)
+                        throws HyracksDataException {
+                    boolean isReversed = pKeys == OptimizedHybridHashJoinOperatorDescriptor.this.buildKeys
+                            && bKeys == OptimizedHybridHashJoinOperatorDescriptor.this.probeKeys;
+
+                    assert isLeftOuter ? !isReversed : true : "LeftOut Join can not reverse roles";
+
                     ISerializableTable table = new SerializableHashTable(tabSize, ctx);
                     InMemoryHashJoin joiner = new InMemoryHashJoin(ctx, tabSize, new FrameTupleAccessor(probeRDesc),
-                            hpcRepLarger, new FrameTupleAccessor(buildRDesc), hpcRepSmaller,
+                            hpcRepProbe, new FrameTupleAccessor(buildRDesc), hpcRepBuild,
                             new FrameTuplePairComparator(pKeys, bKeys, comparators), isLeftOuter, nullWriters1, table,
-                            predEvaluator, reverse);
+                            predEvaluator, isReversed);
 
                     bReader.open();
                     rPartbuff.reset();
                     while (bReader.nextFrame(rPartbuff)) {
-                        ByteBuffer copyBuffer = ctx
-                                .allocateFrame(rPartbuff.getFrameSize()); //We need to allocate a copyBuffer, because this buffer gets added to the buffers list in the InMemoryHashJoin
+                        //We need to allocate a copyBuffer, because this buffer gets added to the buffers list in the InMemoryHashJoin
+                        ByteBuffer copyBuffer = ctx.allocateFrame(rPartbuff.getFrameSize());
                         FrameUtils.copyAndFlip(rPartbuff.getBuffer(), copyBuffer);
                         joiner.build(copyBuffer);
                         rPartbuff.reset();
                     }
                     bReader.close();
                     rPartbuff.reset();
-                    // probe
+                    //probe
                     pReader.open();
                     while (pReader.nextFrame(rPartbuff)) {
                         joiner.join(rPartbuff.getBuffer(), writer);
@@ -663,13 +677,19 @@
                 }
 
                 private void applyNestedLoopJoin(RecordDescriptor outerRd, RecordDescriptor innerRd, int memorySize,
-                        RunFileReader outerReader, RunFileReader innerReader, ITuplePairComparator nljComparator,
-                        boolean reverse) throws HyracksDataException {
+                        RunFileReader outerReader, RunFileReader innerReader)
+                        throws HyracksDataException {
+                    // The nested loop join result is outer + inner. All the other operator is probe + build. Hence the reverse relation is different
+                    boolean isReversed = outerRd == buildRd && innerRd == probeRd;
+                    assert isLeftOuter ? !isReversed : true : "LeftOut Join can not reverse roles";
+                    ITuplePairComparator nljComptorOuterInner = isReversed ?
+                            nljComparatorBuild2Probe :
+                            nljComparatorProbe2Build;
                     NestedLoopJoin nlj = new NestedLoopJoin(ctx,
                             new FrameTupleAccessor(outerRd),
-                            new FrameTupleAccessor(innerRd), nljComparator, memorySize,
+                            new FrameTupleAccessor(innerRd), nljComptorOuterInner, memorySize,
                             predEvaluator, isLeftOuter, nullWriters1);
-                    nlj.setIsReversed(reverse);
+                    nlj.setIsReversed(isReversed);
 
                     IFrame cacheBuff = new VSizeFrame(ctx);
                     innerReader.open();
@@ -707,4 +727,4 @@
     public void setForceRR(boolean b) {
         forceRR = (!isLeftOuter && b);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/DeserializedMapperOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/DeserializedMapperOperatorDescriptor.java
index 048cea2..771c5e3 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/DeserializedMapperOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/DeserializedMapperOperatorDescriptor.java
@@ -62,6 +62,10 @@
         public void writeData(Object[] data) throws HyracksDataException {
             mapper.map(data, writer);
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+        }
     }
 
     private static final long serialVersionUID = 1L;
@@ -81,4 +85,4 @@
         return new DeserializedOperatorNodePushable(ctx, new MapperOperator(),
                 recordDescProvider.getInputRecordDescriptor(getActivityId(), 0));
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/IDeserializedMapperFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/IDeserializedMapperFactory.java
index 7efa637..3963c92 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/IDeserializedMapperFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/IDeserializedMapperFactory.java
@@ -24,4 +24,4 @@
 
 public interface IDeserializedMapperFactory extends Serializable {
     public IDeserializedMapper createMapper() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/ReflectionBasedDeserializedMapperFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/ReflectionBasedDeserializedMapperFactory.java
index 0ba17ae..e7e084c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/ReflectionBasedDeserializedMapperFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/ReflectionBasedDeserializedMapperFactory.java
@@ -39,4 +39,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/SamplerDeserializedMapperFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/SamplerDeserializedMapperFactory.java
index d0e695c..de231ec 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/SamplerDeserializedMapperFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/map/SamplerDeserializedMapperFactory.java
@@ -44,4 +44,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorDescriptor.java
index 27ca571..205bb3c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorDescriptor.java
@@ -48,4 +48,4 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
         return new ConstantTupleSourceOperatorNodePushable(ctx, fieldSlots, tupleData, tupleSize);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java
index 2398372..5df134f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/ConstantTupleSourceOperatorNodePushable.java
@@ -48,12 +48,12 @@
             appender.append(fieldSlots, tupleData, 0, tupleSize);
         writer.open();
         try {
-            appender.flush(writer, false);
-        } catch (Exception e) {
+            appender.write(writer, false);
+        } catch (Throwable th) {
             writer.fail();
-            throw new HyracksDataException(e);
+            throw new HyracksDataException(th);
         } finally {
             writer.close();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/IdentityOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/IdentityOperatorDescriptor.java
index 971f61d..a07540b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/IdentityOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/IdentityOperatorDescriptor.java
@@ -40,7 +40,7 @@
     @Override
     public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
             final IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         return new AbstractUnaryInputUnaryOutputOperatorNodePushable() {
             @Override
             public void open() throws HyracksDataException {
@@ -61,6 +61,11 @@
             public void close() throws HyracksDataException {
                 writer.close();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                writer.flush();
+            }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/LimitOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/LimitOperatorDescriptor.java
index 5c09f42..084c9ab 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/LimitOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/LimitOperatorDescriptor.java
@@ -46,7 +46,7 @@
     @Override
     public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
             final IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
 
         return new AbstractUnaryInputUnaryOutputOperatorNodePushable() {
             private FrameTupleAccessor fta;
@@ -73,7 +73,7 @@
                             FrameUtils.appendToWriter(writer, partialAppender, fta, i);
                             currentSize++;
                         }
-                        partialAppender.flush(writer,false);
+                        partialAppender.write(writer, false);
                         finished = true;
                     } else {
                         FrameUtils.flushFrame(buffer, writer);
@@ -92,6 +92,11 @@
             public void close() throws HyracksDataException {
                 writer.close();
             }
+
+            @Override
+            public void flush() throws HyracksDataException {
+                writer.flush();
+            }
         };
     }
 
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializerTaskState.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializerTaskState.java
index 145ec3c..4253114 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializerTaskState.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializerTaskState.java
@@ -22,6 +22,7 @@
 import java.io.DataOutput;
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -32,16 +33,21 @@
 import org.apache.hyracks.api.job.JobId;
 import org.apache.hyracks.dataflow.common.io.RunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
-import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
 import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
 
 public class MaterializerTaskState extends AbstractStateObject {
     private RunFileWriter out;
+    private final AtomicInteger numConsumers = new AtomicInteger(1);
 
     public MaterializerTaskState(JobId jobId, TaskId taskId) {
         super(jobId, taskId);
     }
 
+    public MaterializerTaskState(JobId jobId, TaskId taskId, int numConsumers) {
+        super(jobId, taskId);
+        this.numConsumers.set(numConsumers);
+    }
+
     @Override
     public void toBytes(DataOutput out) throws IOException {
 
@@ -53,8 +59,8 @@
     }
 
     public void open(IHyracksTaskContext ctx) throws HyracksDataException {
-        FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(
-                MaterializerTaskState.class.getSimpleName());
+        FileReference file = ctx.getJobletContext()
+                .createManagedWorkspaceFile(MaterializerTaskState.class.getSimpleName());
         out = new RunFileWriter(file, ctx.getIOManager());
         out.open();
     }
@@ -69,22 +75,26 @@
 
     public void writeOut(IFrameWriter writer, IFrame frame) throws HyracksDataException {
         RunFileReader in = out.createReader();
-        writer.open();
         try {
-            in.open();
-            while (in.nextFrame(frame)) {
-                writer.nextFrame(frame.getBuffer());
+            writer.open();
+            try {
+                in.open();
+                while (in.nextFrame(frame)) {
+                    writer.nextFrame(frame.getBuffer());
+                }
+            } catch (Throwable th) {
+                throw new HyracksDataException(th);
+            } finally {
+                in.close();
             }
-            in.close();
-        } catch (Exception e) {
+        } catch (Throwable th) {
             writer.fail();
-            throw new HyracksDataException(e);
+            throw new HyracksDataException(th);
         } finally {
             writer.close();
+            if (numConsumers.decrementAndGet() == 0) {
+                out.getFileReference().delete();
+            }
         }
     }
-    
-    public void deleteFile() {
-        out.getFileReference().delete();
-    }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializingOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializingOperatorDescriptor.java
index 36bf919..5922935 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializingOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/MaterializingOperatorDescriptor.java
@@ -30,8 +30,6 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
 import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
 import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;
@@ -61,8 +59,8 @@
     @Override
     public void contributeActivities(IActivityGraphBuilder builder) {
         if (isSingleActivity) {
-            MaterializerReaderActivityNode mra = new MaterializerReaderActivityNode(new ActivityId(odId,
-                    MATERIALIZER_READER_ACTIVITY_ID));
+            MaterializerReaderActivityNode mra = new MaterializerReaderActivityNode(
+                    new ActivityId(odId, MATERIALIZER_READER_ACTIVITY_ID));
 
             builder.addActivity(this, mra);
             builder.addSourceEdge(0, mra, 0);
@@ -97,8 +95,8 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = new MaterializerTaskState(ctx.getJobletContext().getJobId(), new TaskId(getActivityId(),
-                            partition));
+                    state = new MaterializerTaskState(ctx.getJobletContext().getJobId(),
+                            new TaskId(getActivityId(), partition));
                     state.open(ctx);
                 }
 
@@ -116,7 +114,6 @@
                     state.close();
                     state.writeOut(writer, new VSizeFrame(ctx));
                 }
-
             };
         }
     }
@@ -136,8 +133,8 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = new MaterializerTaskState(ctx.getJobletContext().getJobId(), new TaskId(getActivityId(),
-                            partition));
+                    state = new MaterializerTaskState(ctx.getJobletContext().getJobId(),
+                            new TaskId(getActivityId(), partition));
                     state.open(ctx);
                 }
 
@@ -172,8 +169,8 @@
             return new AbstractUnaryOutputSourceOperatorNodePushable() {
                 @Override
                 public void initialize() throws HyracksDataException {
-                    MaterializerTaskState state = (MaterializerTaskState) ctx.getStateObject(new TaskId(new ActivityId(
-                            getOperatorId(), MATERIALIZER_ACTIVITY_ID), partition));
+                    MaterializerTaskState state = (MaterializerTaskState) ctx.getStateObject(
+                            new TaskId(new ActivityId(getOperatorId(), MATERIALIZER_ACTIVITY_ID), partition));
                     state.writeOut(writer, new VSizeFrame(ctx));
                 }
 
@@ -183,4 +180,4 @@
             };
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/NullSinkOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/NullSinkOperatorDescriptor.java
index cf66ae1..48e6b35 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/NullSinkOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/NullSinkOperatorDescriptor.java
@@ -56,4 +56,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java
index 792a041..7530849 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java
@@ -62,6 +62,11 @@
         public void setDataWriter(int index, IOpenableDataWriter<Object[]> writer) {
             throw new IllegalArgumentException();
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+            System.err.flush();
+        }
     }
 
     @Override
@@ -70,4 +75,4 @@
         return new DeserializedOperatorNodePushable(ctx, new PrinterOperator(),
                 recordDescProvider.getInputRecordDescriptor(getActivityId(), 0));
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitOperatorDescriptor.java
index 04b893a..dc368eb 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitOperatorDescriptor.java
@@ -43,10 +43,10 @@
     private final static int SPLITTER_MATERIALIZER_ACTIVITY_ID = 0;
     private final static int MATERIALIZE_READER_ACTIVITY_ID = 1;
 
-    private boolean[] outputMaterializationFlags;
-    private boolean requiresMaterialization;
-    private int numberOfNonMaterializedOutputs = 0;
-    private int numberOfActiveMaterializeReaders = 0;
+    private final boolean[] outputMaterializationFlags;
+    private final boolean requiresMaterialization;
+    private final int numberOfNonMaterializedOutputs;
+    private final int numberOfMaterializedOutputs;
 
     public SplitOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor rDesc, int outputArity) {
         this(spec, rDesc, outputArity, new boolean[outputArity]);
@@ -59,43 +59,42 @@
             recordDescriptors[i] = rDesc;
         }
         this.outputMaterializationFlags = outputMaterializationFlags;
-        requiresMaterialization = false;
+
+        boolean reqMaterialization = false;
+        int matOutputs = 0;
+        int nonMatOutputs = 0;
         for (boolean flag : outputMaterializationFlags) {
             if (flag) {
-                requiresMaterialization = true;
-                break;
+                reqMaterialization = true;
+                matOutputs++;
+            } else {
+                nonMatOutputs++;
             }
         }
 
+        this.requiresMaterialization = reqMaterialization;
+        this.numberOfMaterializedOutputs = matOutputs;
+        this.numberOfNonMaterializedOutputs = nonMatOutputs;
+
     }
 
     @Override
     public void contributeActivities(IActivityGraphBuilder builder) {
-        SplitterMaterializerActivityNode sma = new SplitterMaterializerActivityNode(new ActivityId(odId,
-                SPLITTER_MATERIALIZER_ACTIVITY_ID));
+        SplitterMaterializerActivityNode sma = new SplitterMaterializerActivityNode(
+                new ActivityId(odId, SPLITTER_MATERIALIZER_ACTIVITY_ID));
         builder.addActivity(this, sma);
         builder.addSourceEdge(0, sma, 0);
-        int taskOutputIndex = 0;
+        int pipelineOutputIndex = 0;
+        int activityId = MATERIALIZE_READER_ACTIVITY_ID;
         for (int i = 0; i < outputArity; i++) {
-            if (!outputMaterializationFlags[i]) {
-                builder.addTargetEdge(i, sma, taskOutputIndex);
-                taskOutputIndex++;
-            }
-        }
-        numberOfNonMaterializedOutputs = taskOutputIndex;
-
-        if (requiresMaterialization) {
-            int activityId = MATERIALIZE_READER_ACTIVITY_ID;
-            for (int i = 0; i < outputArity; i++) {
-                if (outputMaterializationFlags[i]) {
-                    MaterializeReaderActivityNode mra = new MaterializeReaderActivityNode(new ActivityId(odId,
-                            activityId));
-                    builder.addActivity(this, mra);
-                    builder.addTargetEdge(i, mra, 0);
-                    builder.addBlockingEdge(sma, mra);
-                    numberOfActiveMaterializeReaders++;
-                    activityId++;
-                }
+            if (outputMaterializationFlags[i]) {
+                MaterializeReaderActivityNode mra = new MaterializeReaderActivityNode(
+                        new ActivityId(odId, activityId++));
+                builder.addActivity(this, mra);
+                builder.addBlockingEdge(sma, mra);
+                builder.addTargetEdge(i, mra, 0);
+            } else {
+                builder.addTargetEdge(i, sma, pipelineOutputIndex++);
             }
         }
     }
@@ -113,15 +112,17 @@
             return new AbstractUnaryInputOperatorNodePushable() {
                 private MaterializerTaskState state;
                 private final IFrameWriter[] writers = new IFrameWriter[numberOfNonMaterializedOutputs];
+                private final boolean[] isOpen = new boolean[numberOfNonMaterializedOutputs];
 
                 @Override
                 public void open() throws HyracksDataException {
                     if (requiresMaterialization) {
-                        state = new MaterializerTaskState(ctx.getJobletContext().getJobId(), new TaskId(
-                                getActivityId(), partition));
+                        state = new MaterializerTaskState(ctx.getJobletContext().getJobId(),
+                                new TaskId(getActivityId(), partition), numberOfMaterializedOutputs);
                         state.open(ctx);
                     }
                     for (int i = 0; i < numberOfNonMaterializedOutputs; i++) {
+                        isOpen[i] = true;
                         writers[i].open();
                     }
                 }
@@ -137,20 +138,58 @@
                 }
 
                 @Override
-                public void close() throws HyracksDataException {
-                    if (requiresMaterialization) {
-                        state.close();
-                        ctx.setStateObject(state);
-                    }
+                public void flush() throws HyracksDataException {
                     for (int i = 0; i < numberOfNonMaterializedOutputs; i++) {
-                        writers[i].close();
+                        writers[i].flush();
+                    }
+                }
+
+                @Override
+                public void close() throws HyracksDataException {
+                    HyracksDataException hde = null;
+                    try {
+                        if (requiresMaterialization) {
+                            state.close();
+                            ctx.setStateObject(state);
+                        }
+                    } finally {
+                        for (int i = 0; i < numberOfNonMaterializedOutputs; i++) {
+                            if (isOpen[i]) {
+                                try {
+                                    writers[i].close();
+                                } catch (Throwable th) {
+                                    if (hde == null) {
+                                        hde = new HyracksDataException(th);
+                                    } else {
+                                        hde.addSuppressed(th);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    if (hde != null) {
+                        throw hde;
                     }
                 }
 
                 @Override
                 public void fail() throws HyracksDataException {
+                    HyracksDataException hde = null;
                     for (int i = 0; i < numberOfNonMaterializedOutputs; i++) {
-                        writers[i].fail();
+                        if (isOpen[i]) {
+                            try {
+                                writers[i].fail();
+                            } catch (Throwable th) {
+                                if (hde == null) {
+                                    hde = new HyracksDataException(th);
+                                } else {
+                                    hde.addSuppressed(th);
+                                }
+                            }
+                        }
+                    }
+                    if (hde != null) {
+                        throw hde;
                     }
                 }
 
@@ -172,25 +211,16 @@
         @Override
         public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
                 final IRecordDescriptorProvider recordDescProvider, final int partition, int nPartitions)
-                throws HyracksDataException {
+                        throws HyracksDataException {
             return new AbstractUnaryOutputSourceOperatorNodePushable() {
 
                 @Override
                 public void initialize() throws HyracksDataException {
-                    MaterializerTaskState state = (MaterializerTaskState) ctx.getStateObject(new TaskId(new ActivityId(
-                            getOperatorId(), SPLITTER_MATERIALIZER_ACTIVITY_ID), partition));
+                    MaterializerTaskState state = (MaterializerTaskState) ctx.getStateObject(
+                            new TaskId(new ActivityId(getOperatorId(), SPLITTER_MATERIALIZER_ACTIVITY_ID), partition));
                     state.writeOut(writer, new VSizeFrame(ctx));
                 }
 
-                @Override
-                public void deinitialize() throws HyracksDataException {
-                    numberOfActiveMaterializeReaders--;
-                    MaterializerTaskState state = (MaterializerTaskState) ctx.getStateObject(new TaskId(new ActivityId(
-                            getOperatorId(), SPLITTER_MATERIALIZER_ACTIVITY_ID), partition));
-                    if (numberOfActiveMaterializeReaders == 0) {
-                        state.deleteFile();
-                    }
-                }
             };
         }
     }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitVectorOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitVectorOperatorDescriptor.java
index 4f12db1..47a05f7 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitVectorOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/misc/SplitVectorOperatorDescriptor.java
@@ -88,8 +88,8 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = new CollectTaskState(ctx.getJobletContext().getJobId(), new TaskId(getActivityId(),
-                            partition));
+                    state = new CollectTaskState(ctx.getJobletContext().getJobId(),
+                            new TaskId(getActivityId(), partition));
                     state.buffer = new ArrayList<Object[]>();
                 }
 
@@ -107,9 +107,14 @@
                 public void fail() throws HyracksDataException {
 
                 }
+
+                @Override
+                public void flush() throws HyracksDataException {
+                    // flush() is a no op since the frame writer's whole job is to write state data to a buffer
+                }
             };
-            return new DeserializedOperatorNodePushable(ctx, op, recordDescProvider.getInputRecordDescriptor(
-                    getActivityId(), 0));
+            return new DeserializedOperatorNodePushable(ctx, op,
+                    recordDescProvider.getInputRecordDescriptor(getActivityId(), 0));
         }
     }
 
@@ -138,8 +143,8 @@
 
                 @Override
                 public void open() throws HyracksDataException {
-                    state = (CollectTaskState) ctx.getStateObject(new TaskId(new ActivityId(getOperatorId(),
-                            COLLECT_ACTIVITY_ID), partition));
+                    state = (CollectTaskState) ctx.getStateObject(
+                            new TaskId(new ActivityId(getOperatorId(), COLLECT_ACTIVITY_ID), partition));
                 }
 
                 @Override
@@ -161,9 +166,14 @@
                 public void fail() throws HyracksDataException {
                     writer.fail();
                 }
+
+                @Override
+                public void flush() throws HyracksDataException {
+                    writer.flush();
+                }
             };
-            return new DeserializedOperatorNodePushable(ctx, op, recordDescProvider.getOutputRecordDescriptor(
-                    getActivityId(), 0));
+            return new DeserializedOperatorNodePushable(ctx, op,
+                    recordDescProvider.getOutputRecordDescriptor(getActivityId(), 0));
         }
     }
 
@@ -171,7 +181,8 @@
 
     private final int splits;
 
-    public SplitVectorOperatorDescriptor(IOperatorDescriptorRegistry spec, int splits, RecordDescriptor recordDescriptor) {
+    public SplitVectorOperatorDescriptor(IOperatorDescriptorRegistry spec, int splits,
+            RecordDescriptor recordDescriptor) {
         super(spec, 1, 1);
         this.splits = splits;
         recordDescriptors[0] = recordDescriptor;
@@ -190,4 +201,4 @@
 
         builder.addBlockingEdge(ca, sa);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
index 25a876e..90b4b6c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/result/ResultWriterOperatorDescriptor.java
@@ -122,4 +122,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractExternalSortRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractExternalSortRunGenerator.java
new file mode 100644
index 0000000..7c7bfec
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractExternalSortRunGenerator.java
@@ -0,0 +1,91 @@
+/*
+ * 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.hyracks.dataflow.std.sort;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.FrameFreeSlotPolicyFactory;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameFreeSlotPolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFrameMemoryManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFramePool;
+
+public abstract class AbstractExternalSortRunGenerator extends AbstractSortRunGenerator {
+
+    protected final IHyracksTaskContext ctx;
+    protected final IFrameSorter frameSorter;
+    protected final int maxSortFrames;
+
+    public AbstractExternalSortRunGenerator(IHyracksTaskContext ctx, int[] sortFields,
+            INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
+            RecordDescriptor recordDesc, Algorithm alg, int framesLimit) throws HyracksDataException {
+        this(ctx, sortFields, firstKeyNormalizerFactory, comparatorFactories, recordDesc, alg,
+                EnumFreeSlotPolicy.LAST_FIT, framesLimit);
+    }
+
+    public AbstractExternalSortRunGenerator(IHyracksTaskContext ctx, int[] sortFields,
+            INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
+            RecordDescriptor recordDesc, Algorithm alg, EnumFreeSlotPolicy policy, int framesLimit)
+                    throws HyracksDataException {
+        this(ctx, sortFields, firstKeyNormalizerFactory, comparatorFactories, recordDesc, alg, policy, framesLimit,
+                Integer.MAX_VALUE);
+    }
+
+    public AbstractExternalSortRunGenerator(IHyracksTaskContext ctx, int[] sortFields,
+            INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
+            RecordDescriptor recordDesc, Algorithm alg, EnumFreeSlotPolicy policy, int framesLimit, int outputLimit)
+                    throws HyracksDataException {
+        super();
+        this.ctx = ctx;
+        maxSortFrames = framesLimit - 1;
+
+        IFrameFreeSlotPolicy freeSlotPolicy = FrameFreeSlotPolicyFactory.createFreeSlotPolicy(policy, maxSortFrames);
+        IFrameBufferManager bufferManager = new VariableFrameMemoryManager(
+                new VariableFramePool(ctx, maxSortFrames * ctx.getInitialFrameSize()), freeSlotPolicy);
+        if (alg == Algorithm.MERGE_SORT) {
+            frameSorter = new FrameSorterMergeSort(ctx, bufferManager, sortFields, firstKeyNormalizerFactory,
+                    comparatorFactories, recordDesc, outputLimit);
+        } else {
+            frameSorter = new FrameSorterQuickSort(ctx, bufferManager, sortFields, firstKeyNormalizerFactory,
+                    comparatorFactories, recordDesc, outputLimit);
+        }
+    }
+
+    @Override
+    public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+        if (!frameSorter.insertFrame(buffer)) {
+            flushFramesToRun();
+            if (!frameSorter.insertFrame(buffer)) {
+                throw new HyracksDataException("The given frame is too big to insert into the sorting memory.");
+            }
+        }
+    }
+
+    @Override
+    public ISorter getSorter() {
+        return frameSorter;
+    }
+
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractExternalSortRunMerger.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractExternalSortRunMerger.java
new file mode 100644
index 0000000..6e2c3f0
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractExternalSortRunMerger.java
@@ -0,0 +1,247 @@
+/*
+ * 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.hyracks.dataflow.std.sort;
+
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.hyracks.api.comm.FrameConstants;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
+import org.apache.hyracks.dataflow.common.io.RunFileWriter;
+import org.apache.hyracks.dataflow.std.sort.util.GroupVSizeFrame;
+
+public abstract class AbstractExternalSortRunMerger {
+
+    protected final IHyracksTaskContext ctx;
+    protected final IFrameWriter writer;
+
+    private final List<GeneratedRunFileReader> runs;
+    private final BitSet currentGenerationRunAvailable;
+    private final IBinaryComparator[] comparators;
+    private final INormalizedKeyComputer nmkComputer;
+    private final RecordDescriptor recordDesc;
+    private final int framesLimit;
+    private final int MAX_FRAME_SIZE;
+    private final int topK;
+    private List<GroupVSizeFrame> inFrames;
+    private VSizeFrame outputFrame;
+    private ISorter sorter;
+
+    private static final Logger LOGGER = Logger.getLogger(AbstractExternalSortRunMerger.class.getName());
+
+    public AbstractExternalSortRunMerger(IHyracksTaskContext ctx, ISorter sorter, List<GeneratedRunFileReader> runs,
+            IBinaryComparator[] comparators, INormalizedKeyComputer nmkComputer, RecordDescriptor recordDesc,
+            int framesLimit, IFrameWriter writer) {
+        this(ctx, sorter, runs, comparators, nmkComputer, recordDesc, framesLimit, Integer.MAX_VALUE, writer);
+    }
+
+    public AbstractExternalSortRunMerger(IHyracksTaskContext ctx, ISorter sorter, List<GeneratedRunFileReader> runs,
+            IBinaryComparator[] comparators, INormalizedKeyComputer nmkComputer, RecordDescriptor recordDesc,
+            int framesLimit, int topK, IFrameWriter writer) {
+        this.ctx = ctx;
+        this.sorter = sorter;
+        this.runs = new LinkedList<>(runs);
+        this.currentGenerationRunAvailable = new BitSet(runs.size());
+        this.comparators = comparators;
+        this.nmkComputer = nmkComputer;
+        this.recordDesc = recordDesc;
+        this.framesLimit = framesLimit;
+        this.writer = writer;
+        this.MAX_FRAME_SIZE = FrameConstants.MAX_NUM_MINFRAME * ctx.getInitialFrameSize();
+        this.topK = topK;
+    }
+
+    public void process() throws HyracksDataException {
+        IFrameWriter finalWriter = null;
+        try {
+            if (runs.size() <= 0) {
+                finalWriter = prepareSkipMergingFinalResultWriter(writer);
+                finalWriter.open();
+                if (sorter != null) {
+                    if (sorter.hasRemaining()) {
+                        sorter.flush(finalWriter);
+                    }
+                    sorter.close();
+                }
+            } else {
+                /** recycle sort buffer */
+                if (sorter != null) {
+                    sorter.close();
+                }
+
+                finalWriter = prepareFinalMergeResultWriter(writer);
+                finalWriter.open();
+
+                int maxMergeWidth = framesLimit - 1;
+
+                inFrames = new ArrayList<>(maxMergeWidth);
+                outputFrame = new VSizeFrame(ctx);
+                List<GeneratedRunFileReader> partialRuns = new ArrayList<>(maxMergeWidth);
+
+                int stop = runs.size();
+                currentGenerationRunAvailable.set(0, stop);
+
+                while (true) {
+
+                    int unUsed = selectPartialRuns(maxMergeWidth * ctx.getInitialFrameSize(), runs, partialRuns,
+                            currentGenerationRunAvailable, stop);
+                    prepareFrames(unUsed, inFrames, partialRuns);
+
+                    if (!currentGenerationRunAvailable.isEmpty() || stop < runs.size()) {
+                        GeneratedRunFileReader reader;
+                        if (partialRuns.size() == 1) {
+                            if (!currentGenerationRunAvailable.isEmpty()) {
+                                throw new HyracksDataException(
+                                        "The record is too big to put into the merging frame, please"
+                                                + " allocate more sorting memory");
+                            } else {
+                                reader = partialRuns.get(0);
+                            }
+
+                        } else {
+                            RunFileWriter mergeFileWriter = prepareIntermediateMergeRunFile();
+                            IFrameWriter mergeResultWriter = prepareIntermediateMergeResultWriter(mergeFileWriter);
+
+                            mergeResultWriter.open();
+                            merge(mergeResultWriter, partialRuns);
+                            mergeResultWriter.close();
+
+                            reader = mergeFileWriter.createReader();
+                        }
+                        runs.add(reader);
+
+                        if (currentGenerationRunAvailable.isEmpty()) {
+
+                            if (LOGGER.isLoggable(Level.FINE)) {
+                                LOGGER.fine("generated runs:" + stop);
+                            }
+                            runs.subList(0, stop).clear();
+                            currentGenerationRunAvailable.clear();
+                            currentGenerationRunAvailable.set(0, runs.size());
+                            stop = runs.size();
+                        }
+                    } else {
+                        if (LOGGER.isLoggable(Level.FINE)) {
+                            LOGGER.fine("final runs:" + stop);
+                        }
+                        merge(finalWriter, partialRuns);
+                        break;
+                    }
+                }
+            }
+        } catch (Exception e) {
+            if (finalWriter != null) {
+                finalWriter.fail();
+            }
+            throw new HyracksDataException(e);
+        } finally {
+            if (finalWriter != null) {
+                finalWriter.close();
+            }
+        }
+    }
+
+    private static int selectPartialRuns(int budget, List<GeneratedRunFileReader> runs,
+            List<GeneratedRunFileReader> partialRuns, BitSet runAvailable, int stop) {
+        partialRuns.clear();
+        int maxFrameSizeOfGenRun = 0;
+        int nextRunId = runAvailable.nextSetBit(0);
+        while (budget > 0 && nextRunId >= 0 && nextRunId < stop) {
+            int runFrameSize = runs.get(nextRunId).getMaxFrameSize();
+            if (budget - runFrameSize >= 0) {
+                partialRuns.add(runs.get(nextRunId));
+                budget -= runFrameSize;
+                runAvailable.clear(nextRunId);
+                maxFrameSizeOfGenRun = Math.max(runFrameSize, maxFrameSizeOfGenRun);
+            }
+            nextRunId = runAvailable.nextSetBit(nextRunId + 1);
+        }
+        return budget;
+    }
+
+    private void prepareFrames(int extraFreeMem, List<GroupVSizeFrame> inFrames,
+            List<GeneratedRunFileReader> partialRuns) throws HyracksDataException {
+        if (extraFreeMem > 0 && partialRuns.size() > 1) {
+            int extraFrames = extraFreeMem / ctx.getInitialFrameSize();
+            int avg = (extraFrames / partialRuns.size()) * ctx.getInitialFrameSize();
+            int residue = (extraFrames % partialRuns.size());
+            for (int i = 0; i < residue; i++) {
+                partialRuns.get(i).updateSize(Math.min(MAX_FRAME_SIZE,
+                        partialRuns.get(i).getMaxFrameSize() + avg + ctx.getInitialFrameSize()));
+            }
+            for (int i = residue; i < partialRuns.size() && avg > 0; i++) {
+                partialRuns.get(i).updateSize(Math.min(MAX_FRAME_SIZE, partialRuns.get(i).getMaxFrameSize() + avg));
+            }
+        }
+
+        if (inFrames.size() > partialRuns.size()) {
+            inFrames.subList(partialRuns.size(), inFrames.size()).clear();
+        }
+        int i;
+        for (i = 0; i < inFrames.size(); i++) {
+            inFrames.get(i).resize(partialRuns.get(i).getMaxFrameSize());
+        }
+        for (; i < partialRuns.size(); i++) {
+            inFrames.add(new GroupVSizeFrame(ctx, partialRuns.get(i).getMaxFrameSize()));
+        }
+    }
+
+    abstract protected IFrameWriter prepareSkipMergingFinalResultWriter(IFrameWriter nextWriter)
+            throws HyracksDataException;
+
+    abstract protected RunFileWriter prepareIntermediateMergeRunFile() throws HyracksDataException;
+
+    abstract protected IFrameWriter prepareIntermediateMergeResultWriter(RunFileWriter mergeFileWriter)
+            throws HyracksDataException;
+
+    abstract protected IFrameWriter prepareFinalMergeResultWriter(IFrameWriter nextWriter) throws HyracksDataException;
+
+    abstract protected int[] getSortFields();
+
+    private void merge(IFrameWriter writer, List<GeneratedRunFileReader> partialRuns) throws HyracksDataException {
+        RunMergingFrameReader merger = new RunMergingFrameReader(ctx, partialRuns, inFrames, getSortFields(),
+                comparators, nmkComputer, recordDesc, topK);
+        int io = 0;
+        merger.open();
+        try {
+            while (merger.nextFrame(outputFrame)) {
+                FrameUtils.flushFrame(outputFrame.getBuffer(), writer);
+                io++;
+            }
+        } finally {
+            merger.close();
+            if (LOGGER.isLoggable(Level.FINE)) {
+                LOGGER.fine("Output " + io + " frames");
+            }
+        }
+    }
+
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java
index f50d14c..f213b97 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractFrameSorter.java
@@ -36,8 +36,10 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
+import org.apache.hyracks.dataflow.std.buffermanager.BufferInfo;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameBufferManager;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameBufferManager;
 
 public abstract class AbstractFrameSorter implements IFrameSorter {
 
@@ -60,6 +62,9 @@
     protected int[] tPointers;
     protected int tupleCount;
 
+    private FrameTupleAccessor fta2;
+    private BufferInfo info = new BufferInfo(null, -1, -1);
+
     public AbstractFrameSorter(IHyracksTaskContext ctx, IFrameBufferManager bufferManager, int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
             RecordDescriptor recordDescriptor) throws HyracksDataException {
@@ -82,6 +87,7 @@
         this.outputAppender = new FrameTupleAppender();
         this.outputFrame = new VSizeFrame(ctx);
         this.outputLimit = outputLimit;
+        this.fta2 = new FrameTupleAccessor(recordDescriptor);
     }
 
     @Override
@@ -106,9 +112,8 @@
     public void sort() throws HyracksDataException {
         tupleCount = 0;
         for (int i = 0; i < bufferManager.getNumFrames(); ++i) {
-            inputTupleAccessor
-                    .reset(bufferManager.getFrame(i), bufferManager.getFrameStartOffset(i),
-                            bufferManager.getFrameSize(i));
+            bufferManager.getFrame(i, info);
+            inputTupleAccessor.reset(info.getBuffer(), info.getStartOffset(), info.getLength());
             tupleCount += inputTupleAccessor.getTupleCount();
         }
         if (tPointers == null || tPointers.length < tupleCount * PTR_SIZE) {
@@ -117,9 +122,8 @@
         int ptr = 0;
         int sfIdx = sortFields[0];
         for (int i = 0; i < bufferManager.getNumFrames(); ++i) {
-            inputTupleAccessor
-                    .reset(bufferManager.getFrame(i), bufferManager.getFrameStartOffset(i),
-                            bufferManager.getFrameSize(i));
+            bufferManager.getFrame(i, info);
+            inputTupleAccessor.reset(info.getBuffer(), info.getStartOffset(), info.getLength());
             int tCount = inputTupleAccessor.getTupleCount();
             byte[] array = inputTupleAccessor.getBuffer().array();
             for (int j = 0; j < tCount; ++j) {
@@ -163,9 +167,8 @@
             int i = tPointers[ptr * PTR_SIZE + ID_FRAMEID];
             int tStart = tPointers[ptr * PTR_SIZE + ID_TUPLE_START];
             int tEnd = tPointers[ptr * PTR_SIZE + ID_TUPLE_END];
-            ByteBuffer buffer = bufferManager.getFrame(i);
-            inputTupleAccessor.reset(buffer, bufferManager.getFrameStartOffset(i), bufferManager.getFrameSize(i));
-
+            bufferManager.getFrame(i, info);
+            inputTupleAccessor.reset(info.getBuffer(), info.getStartOffset(), info.getLength());
             int flushed = FrameUtils.appendToWriter(writer, outputAppender, inputTupleAccessor, tStart, tEnd);
             if (flushed > 0) {
                 maxFrameSize = Math.max(maxFrameSize, flushed);
@@ -173,7 +176,7 @@
             }
         }
         maxFrameSize = Math.max(maxFrameSize, outputFrame.getFrameSize());
-        outputAppender.flush(writer, true);
+        outputAppender.write(writer, true);
         if (LOGGER.isLoggable(Level.FINE)) {
             LOGGER.fine(
                     "Flushed records:" + limit + " out of " + tupleCount + "; Flushed through " + (io + 1) + " frames");
@@ -181,6 +184,45 @@
         return maxFrameSize;
     }
 
+    protected final int compare(int tp1, int tp2) throws HyracksDataException {
+        int i1 = tPointers[tp1 * 4];
+        int j1 = tPointers[tp1 * 4 + 1];
+        int v1 = tPointers[tp1 * 4 + 3];
+
+        int tp2i = tPointers[tp2 * 4];
+        int tp2j = tPointers[tp2 * 4 + 1];
+        int tp2v = tPointers[tp2 * 4 + 3];
+
+        if (v1 != tp2v) {
+            return ((((long) v1) & 0xffffffffL) < (((long) tp2v) & 0xffffffffL)) ? -1 : 1;
+        }
+        int i2 = tp2i;
+        int j2 = tp2j;
+        bufferManager.getFrame(i1, info);
+        byte[] b1 = info.getBuffer().array();
+        inputTupleAccessor.reset(info.getBuffer(), info.getStartOffset(), info.getLength());
+
+        bufferManager.getFrame(i2, info);
+        byte[] b2 = info.getBuffer().array();
+        fta2.reset(info.getBuffer(), info.getStartOffset(), info.getLength());
+        for (int f = 0; f < comparators.length; ++f) {
+            int fIdx = sortFields[f];
+            int f1Start = fIdx == 0 ? 0 : IntSerDeUtils.getInt(b1, j1 + (fIdx - 1) * 4);
+            int f1End = IntSerDeUtils.getInt(b1, j1 + fIdx * 4);
+            int s1 = j1 + inputTupleAccessor.getFieldSlotsLength() + f1Start;
+            int l1 = f1End - f1Start;
+            int f2Start = fIdx == 0 ? 0 : IntSerDeUtils.getInt(b2, j2 + (fIdx - 1) * 4);
+            int f2End = IntSerDeUtils.getInt(b2, j2 + fIdx * 4);
+            int s2 = j2 + fta2.getFieldSlotsLength() + f2Start;
+            int l2 = f2End - f2Start;
+            int c = comparators[f].compare(b1, s1, l1, b2, s2, l2);
+            if (c != 0) {
+                return c;
+            }
+        }
+        return 0;
+    }
+
     @Override
     public void close() {
         tupleCount = 0;
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSortRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSortRunGenerator.java
index cde11a0..bcebb7d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSortRunGenerator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSortRunGenerator.java
@@ -24,26 +24,27 @@
 
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
 
 public abstract class AbstractSortRunGenerator implements IRunGenerator {
-    protected final List<RunAndMaxFrameSizePair> runAndMaxSizes;
+    protected final List<GeneratedRunFileReader> generatedRunFileReaders;
 
     public AbstractSortRunGenerator() {
-        runAndMaxSizes = new LinkedList<>();
+        generatedRunFileReaders = new LinkedList<>();
     }
 
     abstract public ISorter getSorter() throws HyracksDataException;
 
     @Override
     public void open() throws HyracksDataException {
-        runAndMaxSizes.clear();
+        generatedRunFileReaders.clear();
     }
 
     @Override
     public void close() throws HyracksDataException {
         if (getSorter().hasRemaining()) {
-            if (runAndMaxSizes.size() <= 0) {
+            if (generatedRunFileReaders.size() <= 0) {
                 getSorter().sort();
             } else {
                 flushFramesToRun();
@@ -60,13 +61,12 @@
         RunFileWriter runWriter = getRunFileWriter();
         IFrameWriter flushWriter = getFlushableFrameWriter(runWriter);
         flushWriter.open();
-        int maxFlushedFrameSize;
         try {
-            maxFlushedFrameSize = getSorter().flush(flushWriter);
+            getSorter().flush(flushWriter);
         } finally {
             flushWriter.close();
         }
-        runAndMaxSizes.add(new RunAndMaxFrameSizePair(runWriter.createReader(), maxFlushedFrameSize));
+        generatedRunFileReaders.add(runWriter.createDeleteOnCloseReader());
         getSorter().reset();
     }
 
@@ -75,7 +75,7 @@
     }
 
     @Override
-    public List<RunAndMaxFrameSizePair> getRuns() {
-        return runAndMaxSizes;
+    public List<GeneratedRunFileReader> getRuns() {
+        return generatedRunFileReaders;
     }
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSorterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSorterOperatorDescriptor.java
index 8856c41..665a90b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSorterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/AbstractSorterOperatorDescriptor.java
@@ -42,6 +42,7 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
 import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
@@ -92,7 +93,7 @@
     }
 
     public static class SortTaskState extends AbstractStateObject {
-        public List<RunAndMaxFrameSizePair> runAndMaxFrameSizePairs;
+        public List<GeneratedRunFileReader> generatedRunFileReaders;
         public ISorter sorter;
 
         public SortTaskState(JobId jobId, TaskId taskId) {
@@ -142,7 +143,7 @@
                     SortTaskState state = new SortTaskState(ctx.getJobletContext().getJobId(),
                             new TaskId(getActivityId(), partition));
                     runGen.close();
-                    state.runAndMaxFrameSizePairs = runGen.getRuns();
+                    state.generatedRunFileReaders = runGen.getRuns();
                     state.sorter = runGen.getSorter();
                     if (LOGGER.isLoggable(Level.INFO)) {
                         LOGGER.info("InitialNumberOfRuns:" + runGen.getRuns().size());
@@ -166,9 +167,9 @@
             super(id);
         }
 
-        protected abstract ExternalSortRunMerger getSortRunMerger(IHyracksTaskContext ctx,
+        protected abstract AbstractExternalSortRunMerger getSortRunMerger(IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, IFrameWriter writer, ISorter sorter,
-                List<RunAndMaxFrameSizePair> runs, IBinaryComparator[] comparators, INormalizedKeyComputer nmkComputer,
+                List<GeneratedRunFileReader> runs, IBinaryComparator[] comparators, INormalizedKeyComputer nmkComputer,
                 int necessaryFrames);
 
         @Override
@@ -180,17 +181,16 @@
                 public void initialize() throws HyracksDataException {
                     SortTaskState state = (SortTaskState) ctx
                             .getStateObject(new TaskId(new ActivityId(getOperatorId(), SORT_ACTIVITY_ID), partition));
-                    List<RunAndMaxFrameSizePair> runs = state.runAndMaxFrameSizePairs;
+                    List<GeneratedRunFileReader> runs = state.generatedRunFileReaders;
                     ISorter sorter = state.sorter;
                     IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
                     for (int i = 0; i < comparatorFactories.length; ++i) {
                         comparators[i] = comparatorFactories[i].createBinaryComparator();
                     }
-                    INormalizedKeyComputer nmkComputer = firstKeyNormalizerFactory == null ?
-                            null :
-                            firstKeyNormalizerFactory.createNormalizedKeyComputer();
-                    ExternalSortRunMerger merger = getSortRunMerger(ctx, recordDescProvider, writer, sorter, runs,
-                            comparators, nmkComputer, framesLimit);
+                    INormalizedKeyComputer nmkComputer = firstKeyNormalizerFactory == null ? null
+                            : firstKeyNormalizerFactory.createNormalizedKeyComputer();
+                    AbstractExternalSortRunMerger merger = getSortRunMerger(ctx, recordDescProvider, writer, sorter,
+                            runs, comparators, nmkComputer, framesLimit);
                     merger.process();
                 }
             };
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortOperatorDescriptor.java
index 24fd1dd..36d0c1b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortOperatorDescriptor.java
@@ -18,15 +18,21 @@
  */
 package org.apache.hyracks.dataflow.std.sort;
 
+import java.util.List;
+
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.ActivityId;
-import org.apache.hyracks.api.dataflow.value.*;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.EnumFreeSlotPolicy;
-
-import java.util.List;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
 
 public class ExternalSortOperatorDescriptor extends AbstractSorterOperatorDescriptor {
 
@@ -61,8 +67,8 @@
             @Override
             protected AbstractSortRunGenerator getRunGenerator(IHyracksTaskContext ctx,
                     IRecordDescriptorProvider recordDescProvider) throws HyracksDataException {
-                return new ExternalSortRunGenerator(ctx, sortFields, firstKeyNormalizerFactory,
-                        comparatorFactories, recordDescriptors[0], alg, policy, framesLimit, outputLimit);
+                return new ExternalSortRunGenerator(ctx, sortFields, firstKeyNormalizerFactory, comparatorFactories,
+                        recordDescriptors[0], alg, policy, framesLimit, outputLimit);
             }
         };
     }
@@ -72,10 +78,11 @@
         return new AbstractSorterOperatorDescriptor.MergeActivity(id) {
             @Override
             protected ExternalSortRunMerger getSortRunMerger(IHyracksTaskContext ctx,
-                    IRecordDescriptorProvider recordDescProvider, IFrameWriter writer, ISorter sorter, List<RunAndMaxFrameSizePair> runs, IBinaryComparator[] comparators,
+                    IRecordDescriptorProvider recordDescProvider, IFrameWriter writer, ISorter sorter,
+                    List<GeneratedRunFileReader> runs, IBinaryComparator[] comparators,
                     INormalizedKeyComputer nmkComputer, int necessaryFrames) {
-                return new ExternalSortRunMerger(ctx, sorter, runs, sortFields, comparators,
-                        nmkComputer, recordDescriptors[0], necessaryFrames, outputLimit, writer);
+                return new ExternalSortRunMerger(ctx, sorter, runs, sortFields, comparators, nmkComputer,
+                        recordDescriptors[0], necessaryFrames, outputLimit, writer);
             }
         };
     }
@@ -99,4 +106,4 @@
         this.outputLimit = outputLimit;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunGenerator.java
index ea46682..3075719 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunGenerator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunGenerator.java
@@ -18,8 +18,6 @@
  */
 package org.apache.hyracks.dataflow.std.sort;
 
-import java.nio.ByteBuffer;
-
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -28,20 +26,9 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.EnumFreeSlotPolicy;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.FrameFreeSlotSmallestFit;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.FrameFreeSlotBiggestFirst;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.FrameFreeSlotLastFit;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameBufferManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameFreeSlotPolicy;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFrameMemoryManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
 
-public class ExternalSortRunGenerator extends AbstractSortRunGenerator {
-
-    protected final IHyracksTaskContext ctx;
-    protected final IFrameSorter frameSorter;
-    protected final int maxSortFrames;
+public class ExternalSortRunGenerator extends AbstractExternalSortRunGenerator {
 
     public ExternalSortRunGenerator(IHyracksTaskContext ctx, int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
@@ -53,7 +40,7 @@
     public ExternalSortRunGenerator(IHyracksTaskContext ctx, int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
             RecordDescriptor recordDesc, Algorithm alg, EnumFreeSlotPolicy policy, int framesLimit)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         this(ctx, sortFields, firstKeyNormalizerFactory, comparatorFactories, recordDesc, alg, policy, framesLimit,
                 Integer.MAX_VALUE);
     }
@@ -61,56 +48,21 @@
     public ExternalSortRunGenerator(IHyracksTaskContext ctx, int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
             RecordDescriptor recordDesc, Algorithm alg, EnumFreeSlotPolicy policy, int framesLimit, int outputLimit)
-            throws HyracksDataException {
-        this.ctx = ctx;
-        maxSortFrames = framesLimit - 1;
-
-        IFrameFreeSlotPolicy freeSlotPolicy = null;
-        switch (policy) {
-            case SMALLEST_FIT:
-                freeSlotPolicy = new FrameFreeSlotSmallestFit();
-                break;
-            case LAST_FIT:
-                freeSlotPolicy = new FrameFreeSlotLastFit(maxSortFrames);
-                break;
-            case BIGGEST_FIT:
-                freeSlotPolicy = new FrameFreeSlotBiggestFirst(maxSortFrames);
-                break;
-        }
-        IFrameBufferManager bufferManager = new VariableFrameMemoryManager(
-                new VariableFramePool(ctx, maxSortFrames * ctx.getInitialFrameSize()), freeSlotPolicy);
-        if (alg == Algorithm.MERGE_SORT) {
-            frameSorter = new FrameSorterMergeSort(ctx, bufferManager, sortFields, firstKeyNormalizerFactory,
-                    comparatorFactories, recordDesc, outputLimit);
-        } else {
-            frameSorter = new FrameSorterQuickSort(ctx, bufferManager, sortFields, firstKeyNormalizerFactory,
-                    comparatorFactories, recordDesc, outputLimit);
-        }
+                    throws HyracksDataException {
+        super(ctx, sortFields, firstKeyNormalizerFactory, comparatorFactories, recordDesc, alg, policy, framesLimit,
+                outputLimit);
     }
 
     @Override
-    public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
-        if (!frameSorter.insertFrame(buffer)) {
-            flushFramesToRun();
-            if (!frameSorter.insertFrame(buffer)) {
-                throw new HyracksDataException("The given frame is too big to insert into the sorting memory.");
-            }
-        }
-    }
-
     protected RunFileWriter getRunFileWriter() throws HyracksDataException {
-        FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(
-                ExternalSortRunGenerator.class.getSimpleName());
+        FileReference file = ctx.getJobletContext()
+                .createManagedWorkspaceFile(ExternalSortRunGenerator.class.getSimpleName());
         return new RunFileWriter(file, ctx.getIOManager());
     }
 
+    @Override
     protected IFrameWriter getFlushableFrameWriter(RunFileWriter writer) throws HyracksDataException {
         return writer;
     }
 
-    @Override
-    public ISorter getSorter() {
-        return frameSorter;
-    }
-
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunMerger.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunMerger.java
index 9715b71..e773a3b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunMerger.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ExternalSortRunMerger.java
@@ -18,258 +18,54 @@
  */
 package org.apache.hyracks.dataflow.std.sort;
 
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
-import org.apache.hyracks.api.comm.FrameConstants;
-import org.apache.hyracks.api.comm.IFrameReader;
 import org.apache.hyracks.api.comm.IFrameWriter;
-import org.apache.hyracks.api.comm.VSizeFrame;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
-import org.apache.hyracks.dataflow.std.sort.util.GroupVSizeFrame;
 
-public class ExternalSortRunMerger {
+public class ExternalSortRunMerger extends AbstractExternalSortRunMerger {
 
-    protected final IHyracksTaskContext ctx;
-    protected final IFrameWriter writer;
-
-    private final List<RunAndMaxFrameSizePair> runs;
-    private final BitSet currentGenerationRunAvailable;
     private final int[] sortFields;
-    private final IBinaryComparator[] comparators;
-    private final INormalizedKeyComputer nmkComputer;
-    private final RecordDescriptor recordDesc;
-    private final int framesLimit;
-    private final int MAX_FRAME_SIZE;
-    private final ArrayList<IFrameReader> tempRuns;
-    private final int topK;
-    private List<GroupVSizeFrame> inFrames;
-    private VSizeFrame outputFrame;
-    private ISorter sorter;
 
-    private static final Logger LOGGER = Logger.getLogger(ExternalSortRunMerger.class.getName());
-
-    public ExternalSortRunMerger(IHyracksTaskContext ctx, ISorter sorter, List<RunAndMaxFrameSizePair> runs,
-            int[] sortFields, IBinaryComparator[] comparators, INormalizedKeyComputer nmkComputer,
-            RecordDescriptor recordDesc, int framesLimit, IFrameWriter writer) {
-        this(ctx, sorter, runs, sortFields, comparators, nmkComputer, recordDesc, framesLimit,
-                Integer.MAX_VALUE, writer);
-    }
-
-    public ExternalSortRunMerger(IHyracksTaskContext ctx, ISorter sorter, List<RunAndMaxFrameSizePair> runs,
+    public ExternalSortRunMerger(IHyracksTaskContext ctx, ISorter sorter, List<GeneratedRunFileReader> runs,
             int[] sortFields, IBinaryComparator[] comparators, INormalizedKeyComputer nmkComputer,
             RecordDescriptor recordDesc, int framesLimit, int topK, IFrameWriter writer) {
-        this.ctx = ctx;
-        this.sorter = sorter;
-        this.runs = new LinkedList<>(runs);
-        this.currentGenerationRunAvailable = new BitSet(runs.size());
+        super(ctx, sorter, runs, comparators, nmkComputer, recordDesc, framesLimit, topK, writer);
         this.sortFields = sortFields;
-        this.comparators = comparators;
-        this.nmkComputer = nmkComputer;
-        this.recordDesc = recordDesc;
-        this.framesLimit = framesLimit;
-        this.writer = writer;
-        this.MAX_FRAME_SIZE = FrameConstants.MAX_NUM_MINFRAME * ctx.getInitialFrameSize();
-        this.topK = topK;
-        this.tempRuns = new ArrayList<>(runs.size());
     }
 
-    public void process() throws HyracksDataException {
-        IFrameWriter finalWriter = null;
-        try {
-            if (runs.size() <= 0) {
-                finalWriter = prepareSkipMergingFinalResultWriter(writer);
-                finalWriter.open();
-                if (sorter != null) {
-                    if (sorter.hasRemaining()) {
-                        sorter.flush(finalWriter);
-                    }
-                    sorter.close();
-                }
-            } else {
-                /** recycle sort buffer */
-                if (sorter != null) {
-                    sorter.close();
-                }
-
-                finalWriter = prepareFinalMergeResultWriter(writer);
-                finalWriter.open();
-
-                int maxMergeWidth = framesLimit - 1;
-
-                inFrames = new ArrayList<>(maxMergeWidth);
-                outputFrame = new VSizeFrame(ctx);
-                List<RunAndMaxFrameSizePair> partialRuns = new ArrayList<>(maxMergeWidth);
-
-                int stop = runs.size();
-                currentGenerationRunAvailable.set(0, stop);
-
-                while (true) {
-
-                    int unUsed = selectPartialRuns(maxMergeWidth * ctx.getInitialFrameSize(), runs, partialRuns,
-                            currentGenerationRunAvailable,
-                            stop);
-                    prepareFrames(unUsed, inFrames, partialRuns);
-
-                    if (!currentGenerationRunAvailable.isEmpty() || stop < runs.size()) {
-                        IFrameReader reader;
-                        int mergedMaxFrameSize;
-                        if (partialRuns.size() == 1) {
-                            if (!currentGenerationRunAvailable.isEmpty()) {
-                                throw new HyracksDataException(
-                                        "The record is too big to put into the merging frame, please"
-                                                + " allocate more sorting memory");
-                            } else {
-                                reader = partialRuns.get(0).run;
-                                mergedMaxFrameSize = partialRuns.get(0).maxFrameSize;
-                            }
-
-                        } else {
-                            RunFileWriter mergeFileWriter = prepareIntermediateMergeRunFile();
-                            IFrameWriter mergeResultWriter = prepareIntermediateMergeResultWriter(mergeFileWriter);
-
-                            mergeResultWriter.open();
-                            mergedMaxFrameSize = merge(mergeResultWriter, partialRuns);
-                            mergeResultWriter.close();
-
-                            reader = mergeFileWriter.createReader();
-                        }
-
-                        appendNewRuns(reader, mergedMaxFrameSize);
-                        if (currentGenerationRunAvailable.isEmpty()) {
-
-                            if (LOGGER.isLoggable(Level.FINE)) {
-                                LOGGER.fine("generated runs:" + stop);
-                            }
-                            runs.subList(0, stop).clear();
-                            currentGenerationRunAvailable.clear();
-                            currentGenerationRunAvailable.set(0, runs.size());
-                            stop = runs.size();
-                        }
-                    } else {
-                        if (LOGGER.isLoggable(Level.FINE)) {
-                            LOGGER.fine("final runs:" + stop);
-                        }
-                        merge(finalWriter, partialRuns);
-                        break;
-                    }
-                }
-            }
-        } catch (Exception e) {
-            finalWriter.fail();
-            throw new HyracksDataException(e);
-        } finally {
-            finalWriter.close();
-        }
-    }
-
-    private void appendNewRuns(IFrameReader reader, int mergedPartialMaxSize) {
-        runs.add(new RunAndMaxFrameSizePair(reader, mergedPartialMaxSize));
-    }
-
-    private static int selectPartialRuns(int budget, List<RunAndMaxFrameSizePair> runs,
-            List<RunAndMaxFrameSizePair> partialRuns, BitSet runAvailable, int stop) {
-        partialRuns.clear();
-        int maxFrameSizeOfGenRun = 0;
-        int nextRunId = runAvailable.nextSetBit(0);
-        while (budget > 0 && nextRunId >= 0 && nextRunId < stop) {
-            int runFrameSize = runs.get(nextRunId).maxFrameSize;
-            if (budget - runFrameSize >= 0) {
-                partialRuns.add(runs.get(nextRunId));
-                budget -= runFrameSize;
-                runAvailable.clear(nextRunId);
-                maxFrameSizeOfGenRun = runFrameSize > maxFrameSizeOfGenRun ? runFrameSize : maxFrameSizeOfGenRun;
-            }
-            nextRunId = runAvailable.nextSetBit(nextRunId + 1);
-        }
-        return budget;
-    }
-
-    private void prepareFrames(int extraFreeMem, List<GroupVSizeFrame> inFrames,
-            List<RunAndMaxFrameSizePair> patialRuns)
-            throws HyracksDataException {
-        if (extraFreeMem > 0 && patialRuns.size() > 1) {
-            int extraFrames = extraFreeMem / ctx.getInitialFrameSize();
-            int avg = (extraFrames / patialRuns.size()) * ctx.getInitialFrameSize();
-            int residue = (extraFrames % patialRuns.size());
-            for (int i = 0; i < residue; i++) {
-                patialRuns.get(i).updateSize(
-                        Math.min(MAX_FRAME_SIZE, patialRuns.get(i).maxFrameSize + avg + ctx.getInitialFrameSize()));
-            }
-            for (int i = residue; i < patialRuns.size() && avg > 0; i++) {
-                patialRuns.get(i).updateSize(Math.min(MAX_FRAME_SIZE, patialRuns.get(i).maxFrameSize + avg));
-            }
-        }
-
-        if (inFrames.size() > patialRuns.size()) {
-            inFrames.subList(patialRuns.size(), inFrames.size()).clear();
-        }
-        int i;
-        for (i = 0; i < inFrames.size(); i++) {
-            inFrames.get(i).resize(patialRuns.get(i).maxFrameSize);
-        }
-        for (; i < patialRuns.size(); i++) {
-            inFrames.add(new GroupVSizeFrame(ctx, patialRuns.get(i).maxFrameSize));
-        }
-    }
-
+    @Override
     protected IFrameWriter prepareSkipMergingFinalResultWriter(IFrameWriter nextWriter) throws HyracksDataException {
         return nextWriter;
     }
 
+    @Override
     protected RunFileWriter prepareIntermediateMergeRunFile() throws HyracksDataException {
         FileReference newRun = ctx.createManagedWorkspaceFile(ExternalSortRunMerger.class.getSimpleName());
         return new RunFileWriter(newRun, ctx.getIOManager());
     }
 
+    @Override
     protected IFrameWriter prepareIntermediateMergeResultWriter(RunFileWriter mergeFileWriter)
             throws HyracksDataException {
         return mergeFileWriter;
     }
 
+    @Override
     protected IFrameWriter prepareFinalMergeResultWriter(IFrameWriter nextWriter) throws HyracksDataException {
         return nextWriter;
     }
 
+    @Override
     protected int[] getSortFields() {
         return sortFields;
     }
 
-    private int merge(IFrameWriter writer, List<RunAndMaxFrameSizePair> partialRuns)
-            throws HyracksDataException {
-        tempRuns.clear();
-        for (int i = 0; i < partialRuns.size(); i++) {
-            tempRuns.add(partialRuns.get(i).run);
-        }
-        RunMergingFrameReader merger = new RunMergingFrameReader(ctx, tempRuns, inFrames, getSortFields(),
-                comparators, nmkComputer, recordDesc, topK);
-        int maxFrameSize = 0;
-        int io = 0;
-        merger.open();
-        try {
-            while (merger.nextFrame(outputFrame)) {
-                FrameUtils.flushFrame(outputFrame.getBuffer(), writer);
-                maxFrameSize = maxFrameSize < outputFrame.getFrameSize() ? outputFrame.getFrameSize() : maxFrameSize;
-                io++;
-            }
-        } finally {
-            merger.close();
-            if (LOGGER.isLoggable(Level.FINE)) {
-                LOGGER.fine("Output " + io + " frames");
-            }
-        }
-        return maxFrameSize;
-    }
-
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterMergeSort.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterMergeSort.java
index 5ed11b9..f1f1b1b 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterMergeSort.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterMergeSort.java
@@ -18,21 +18,16 @@
  */
 package org.apache.hyracks.dataflow.std.sort;
 
-import java.nio.ByteBuffer;
-
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameBufferManager;
 
 public class FrameSorterMergeSort extends AbstractFrameSorter {
 
     private int[] tPointersTemp;
-    private FrameTupleAccessor fta2;
 
     public FrameSorterMergeSort(IHyracksTaskContext ctx, IFrameBufferManager bufferManager, int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
@@ -46,7 +41,6 @@
             RecordDescriptor recordDescriptor, int outputLimit) throws HyracksDataException {
         super(ctx, bufferManager, sortFields, firstKeyNormalizerFactory, comparatorFactories, recordDescriptor,
                 outputLimit);
-        fta2 = new FrameTupleAccessor(recordDescriptor);
     }
 
     @Override
@@ -122,42 +116,4 @@
         tPointersTemp[dest * 4 + 3] = tPointers[src * 4 + 3];
     }
 
-    private int compare(int tp1, int tp2) throws HyracksDataException {
-        int i1 = tPointers[tp1 * 4];
-        int j1 = tPointers[tp1 * 4 + 1];
-        int v1 = tPointers[tp1 * 4 + 3];
-
-        int tp2i = tPointers[tp2 * 4];
-        int tp2j = tPointers[tp2 * 4 + 1];
-        int tp2v = tPointers[tp2 * 4 + 3];
-
-        if (v1 != tp2v) {
-            return ((((long) v1) & 0xffffffffL) < (((long) tp2v) & 0xffffffffL)) ? -1 : 1;
-        }
-        int i2 = tp2i;
-        int j2 = tp2j;
-        ByteBuffer buf1 = super.bufferManager.getFrame(i1);
-        ByteBuffer buf2 = super.bufferManager.getFrame(i2);
-        byte[] b1 = buf1.array();
-        byte[] b2 = buf2.array();
-        inputTupleAccessor.reset(buf1);
-        fta2.reset(buf2);
-        for (int f = 0; f < comparators.length; ++f) {
-            int fIdx = sortFields[f];
-            int f1Start = fIdx == 0 ? 0 : IntSerDeUtils.getInt(b1, j1 + (fIdx - 1) * 4);
-            int f1End = IntSerDeUtils.getInt(b1, j1 + fIdx * 4);
-            int s1 = j1 + inputTupleAccessor.getFieldSlotsLength() + f1Start;
-            int l1 = f1End - f1Start;
-            int f2Start = fIdx == 0 ? 0 : IntSerDeUtils.getInt(b2, j2 + (fIdx - 1) * 4);
-            int f2End = IntSerDeUtils.getInt(b2, j2 + fIdx * 4);
-            int s2 = j2 + fta2.getFieldSlotsLength() + f2Start;
-            int l2 = f2End - f2Start;
-            int c = comparators[f].compare(b1, s1, l1, b2, s2, l2);
-            if (c != 0) {
-                return c;
-            }
-        }
-        return 0;
-    }
-
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterQuickSort.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterQuickSort.java
index 9032a8b..cf864f6 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterQuickSort.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/FrameSorterQuickSort.java
@@ -18,20 +18,15 @@
  */
 package org.apache.hyracks.dataflow.std.sort;
 
-import java.nio.ByteBuffer;
-
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameBufferManager;
 
 public class FrameSorterQuickSort extends AbstractFrameSorter {
 
-    private FrameTupleAccessor fta2;
-
     public FrameSorterQuickSort(IHyracksTaskContext ctx, IFrameBufferManager bufferManager, int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories,
             RecordDescriptor recordDescriptor) throws HyracksDataException {
@@ -44,19 +39,15 @@
             RecordDescriptor recordDescriptor, int outputLimit) throws HyracksDataException {
         super(ctx, bufferManager, sortFields, firstKeyNormalizerFactory, comparatorFactories, recordDescriptor,
                 outputLimit);
-        fta2 = new FrameTupleAccessor(recordDescriptor);
     }
 
     @Override
     void sortTupleReferences() throws HyracksDataException {
-        sort(tPointers, 0, tupleCount);
+        sort(0, tupleCount);
     }
 
-    void sort(int[] tPointers, int offset, int length) throws HyracksDataException {
+    void sort(int offset, int length) throws HyracksDataException {
         int m = offset + (length >> 1);
-        int mi = tPointers[m * 4];
-        int mj = tPointers[m * 4 + 1];
-        int mv = tPointers[m * 4 + 3];
 
         int a = offset;
         int b = a;
@@ -64,7 +55,7 @@
         int d = c;
         while (true) {
             while (b <= c) {
-                int cmp = compare(tPointers, b, mi, mj, mv);
+                int cmp = compare(b, m);
                 if (cmp > 0) {
                     break;
                 }
@@ -74,7 +65,7 @@
                 ++b;
             }
             while (c >= b) {
-                int cmp = compare(tPointers, c, mi, mj, mv);
+                int cmp = compare(c, m);
                 if (cmp < 0) {
                     break;
                 }
@@ -96,10 +87,10 @@
         vecswap(tPointers, b, n - s, s);
 
         if ((s = b - a) > 1) {
-            sort(tPointers, offset, s);
+            sort(offset, s);
         }
         if ((s = d - c) > 1) {
-            sort(tPointers, n - s, s);
+            sort(n - s, s);
         }
     }
 
@@ -117,37 +108,4 @@
         }
     }
 
-    private int compare(int[] tPointers, int tp1, int tp2i, int tp2j, int tp2v) throws HyracksDataException {
-        int i1 = tPointers[tp1 * 4];
-        int j1 = tPointers[tp1 * 4 + 1];
-        int v1 = tPointers[tp1 * 4 + 3];
-        if (v1 != tp2v) {
-            return ((((long) v1) & 0xffffffffL) < (((long) tp2v) & 0xffffffffL)) ? -1 : 1;
-        }
-        int i2 = tp2i;
-        int j2 = tp2j;
-        ByteBuffer buf1 = super.bufferManager.getFrame(i1);
-        ByteBuffer buf2 = super.bufferManager.getFrame(i2);
-        byte[] b1 = buf1.array();
-        byte[] b2 = buf2.array();
-        inputTupleAccessor.reset(buf1);
-        fta2.reset(buf2);
-        for (int f = 0; f < comparators.length; ++f) {
-            int fIdx = sortFields[f];
-            int f1Start = fIdx == 0 ? 0 : buf1.getInt(j1 + (fIdx - 1) * 4);
-            int f1End = buf1.getInt(j1 + fIdx * 4);
-            int s1 = j1 + inputTupleAccessor.getFieldSlotsLength() + f1Start;
-            int l1 = f1End - f1Start;
-            int f2Start = fIdx == 0 ? 0 : buf2.getInt(j2 + (fIdx - 1) * 4);
-            int f2End = buf2.getInt(j2 + fIdx * 4);
-            int s2 = j2 + fta2.getFieldSlotsLength() + f2Start;
-            int l2 = f2End - f2Start;
-            int c = comparators[f].compare(b1, s1, l1, b2, s2, l2);
-            if (c != 0) {
-                return c;
-            }
-        }
-        return 0;
-    }
-
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HeapSortRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HeapSortRunGenerator.java
index bf4f621..648be02 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HeapSortRunGenerator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HeapSortRunGenerator.java
@@ -31,10 +31,10 @@
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFramePool;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.ITupleBufferManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFramePool;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableTupleMemoryManager;
+import org.apache.hyracks.dataflow.std.buffermanager.IFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.IDeletableTupleBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableDeletableTupleMemoryManager;
 
 public class HeapSortRunGenerator extends AbstractSortRunGenerator {
     protected final IHyracksTaskContext ctx;
@@ -64,9 +64,8 @@
     @Override
     public void open() throws HyracksDataException {
         IFramePool framePool = new VariableFramePool(ctx, (frameLimit - 1) * ctx.getInitialFrameSize());
-        ITupleBufferManager bufferManager = new VariableTupleMemoryManager(framePool, recordDescriptor);
-        tupleSorter = new TupleSorterHeapSort(ctx, bufferManager, topK, sortFields, nmkFactory,
-                comparatorFactories);
+        IDeletableTupleBufferManager bufferManager = new VariableDeletableTupleMemoryManager(framePool, recordDescriptor);
+        tupleSorter = new TupleSorterHeapSort(ctx, bufferManager, topK, sortFields, nmkFactory, comparatorFactories);
         super.open();
     }
 
@@ -77,8 +76,8 @@
 
     @Override
     protected RunFileWriter getRunFileWriter() throws HyracksDataException {
-        FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(
-                HeapSortRunGenerator.class.getSimpleName());
+        FileReference file = ctx.getJobletContext()
+                .createManagedWorkspaceFile(HeapSortRunGenerator.class.getSimpleName());
         return new RunFileWriter(file, ctx.getIOManager());
     }
 
@@ -99,5 +98,4 @@
             }
         }
     }
-
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HybridTopKSortRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HybridTopKSortRunGenerator.java
index af271ff..9be4bc6 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HybridTopKSortRunGenerator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/HybridTopKSortRunGenerator.java
@@ -30,9 +30,10 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.io.RunFileWriter;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.FrameFreeSlotBiggestFirst;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFrameMemoryManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.FrameFreeSlotPolicyFactory;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFrameMemoryManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFramePool;
 
 public class HybridTopKSortRunGenerator extends HeapSortRunGenerator {
     private static final Logger LOG = Logger.getLogger(HybridTopKSortRunGenerator.class.getName());
@@ -59,8 +60,8 @@
 
     @Override
     protected RunFileWriter getRunFileWriter() throws HyracksDataException {
-        FileReference file = ctx.getJobletContext().createManagedWorkspaceFile(
-                HybridTopKSortRunGenerator.class.getSimpleName());
+        FileReference file = ctx.getJobletContext()
+                .createManagedWorkspaceFile(HybridTopKSortRunGenerator.class.getSimpleName());
         return new RunFileWriter(file, ctx.getIOManager());
     }
 
@@ -95,7 +96,8 @@
             if (frameSorter == null) {
                 VariableFrameMemoryManager bufferManager = new VariableFrameMemoryManager(
                         new VariableFramePool(ctx, (frameLimit - 1) * ctx.getInitialFrameSize()),
-                        new FrameFreeSlotBiggestFirst(frameLimit - 1));
+                        FrameFreeSlotPolicyFactory.createFreeSlotPolicy(EnumFreeSlotPolicy.BIGGEST_FIT,
+                                frameLimit - 1));
                 frameSorter = new FrameSorterMergeSort(ctx, bufferManager, sortFields, nmkFactory, comparatorFactories,
                         recordDescriptor, topK);
                 if (LOG.isLoggable(Level.FINE)) {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/IRunGenerator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/IRunGenerator.java
index 51abc25..02880dd 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/IRunGenerator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/IRunGenerator.java
@@ -21,6 +21,7 @@
 import java.util.List;
 
 import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 
 /**
  * @author pouria
@@ -31,5 +32,5 @@
     /**
      * @return the list of generated (sorted) runs
      */
-    List<RunAndMaxFrameSizePair> getRuns();
-}
\ No newline at end of file
+    List<GeneratedRunFileReader> getRuns();
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ISorter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ISorter.java
index 5f83a79..3fb2b54 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ISorter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/ISorter.java
@@ -30,7 +30,7 @@
 
     void sort() throws HyracksDataException;
 
-    void close();
+    void close() throws HyracksDataException;
 
     int flush(IFrameWriter writer) throws HyracksDataException;
 
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java
index 8d54c39..521c2ae 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/InMemorySortOperatorDescriptor.java
@@ -40,10 +40,11 @@
 import org.apache.hyracks.dataflow.std.base.AbstractStateObject;
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputSinkOperatorNodePushable;
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.FrameFreeSlotLastFit;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.IFrameBufferManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFrameMemoryManager;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.VariableFramePool;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
+import org.apache.hyracks.dataflow.std.buffermanager.FrameFreeSlotPolicyFactory;
+import org.apache.hyracks.dataflow.std.buffermanager.IFrameBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFrameMemoryManager;
+import org.apache.hyracks.dataflow.std.buffermanager.VariableFramePool;
 
 public class InMemorySortOperatorDescriptor extends AbstractOperatorDescriptor {
     private static final long serialVersionUID = 1L;
@@ -87,9 +88,6 @@
     private static class SortTaskState extends AbstractStateObject {
         private FrameSorterMergeSort frameSorter;
 
-        public SortTaskState() {
-        }
-
         private SortTaskState(JobId jobId, TaskId taskId) {
             super(jobId, taskId);
         }
@@ -122,7 +120,8 @@
                             new TaskId(getActivityId(), partition));
 
                     IFrameBufferManager frameBufferManager = new VariableFrameMemoryManager(
-                            new VariableFramePool(ctx, VariableFramePool.UNLIMITED_MEMORY), new FrameFreeSlotLastFit());
+                            new VariableFramePool(ctx, VariableFramePool.UNLIMITED_MEMORY),
+                            FrameFreeSlotPolicyFactory.createFreeSlotPolicy(EnumFreeSlotPolicy.LAST_FIT));
 
                     state.frameSorter = new FrameSorterMergeSort(ctx, frameBufferManager, sortFields,
                             firstKeyNormalizerFactory, comparatorFactories, recordDescriptors[0]);
@@ -165,14 +164,14 @@
             IOperatorNodePushable op = new AbstractUnaryOutputSourceOperatorNodePushable() {
                 @Override
                 public void initialize() throws HyracksDataException {
-                    writer.open();
                     try {
-                        SortTaskState state = (SortTaskState) ctx.getStateObject(new TaskId(new ActivityId(
-                                getOperatorId(), SORT_ACTIVITY_ID), partition));
+                        writer.open();
+                        SortTaskState state = (SortTaskState) ctx.getStateObject(
+                                new TaskId(new ActivityId(getOperatorId(), SORT_ACTIVITY_ID), partition));
                         state.frameSorter.flush(writer);
-                    } catch (Exception e) {
+                    } catch (Throwable th) {
                         writer.fail();
-                        throw new HyracksDataException(e);
+                        throw new HyracksDataException(th);
                     } finally {
                         writer.close();
                     }
@@ -181,4 +180,4 @@
             return op;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunMergingFrameReader.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunMergingFrameReader.java
index 54e5b7c..f001bed 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunMergingFrameReader.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunMergingFrameReader.java
@@ -196,4 +196,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TopKSorterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TopKSorterOperatorDescriptor.java
index cd0008f..5df09c6 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TopKSorterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TopKSorterOperatorDescriptor.java
@@ -19,13 +19,19 @@
 
 package org.apache.hyracks.dataflow.std.sort;
 
+import java.util.List;
+
 import org.apache.hyracks.api.comm.IFrameWriter;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.ActivityId;
-import org.apache.hyracks.api.dataflow.value.*;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
-
-import java.util.List;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 
 public class TopKSorterOperatorDescriptor extends AbstractSorterOperatorDescriptor {
 
@@ -56,10 +62,11 @@
         return new MergeActivity(id) {
             @Override
             protected ExternalSortRunMerger getSortRunMerger(IHyracksTaskContext ctx,
-                    IRecordDescriptorProvider recordDescProvider, IFrameWriter writer, ISorter sorter, List<RunAndMaxFrameSizePair> runs, IBinaryComparator[] comparators,
+                    IRecordDescriptorProvider recordDescProvider, IFrameWriter writer, ISorter sorter,
+                    List<GeneratedRunFileReader> runs, IBinaryComparator[] comparators,
                     INormalizedKeyComputer nmkComputer, int necessaryFrames) {
-                return new ExternalSortRunMerger(ctx, sorter, runs, sortFields, comparators,
-                        nmkComputer, recordDescriptors[0], necessaryFrames, topK, writer);
+                return new ExternalSortRunMerger(ctx, sorter, runs, sortFields, comparators, nmkComputer,
+                        recordDescriptors[0], necessaryFrames, topK, writer);
             }
         };
     }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TupleSorterHeapSort.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TupleSorterHeapSort.java
index 5c31f89..a5ec88a 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TupleSorterHeapSort.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/TupleSorterHeapSort.java
@@ -36,8 +36,8 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
 import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.ITupleBufferAccessor;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.ITupleBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.IDeletableTupleBufferManager;
+import org.apache.hyracks.dataflow.std.buffermanager.ITuplePointerAccessor;
 import org.apache.hyracks.dataflow.std.structures.IResetableComparable;
 import org.apache.hyracks.dataflow.std.structures.IResetableComparableFactory;
 import org.apache.hyracks.dataflow.std.structures.MaxHeap;
@@ -70,8 +70,8 @@
             }
             bufferAccessor1.reset(tuplePointer);
             bufferAccessor2.reset(o.tuplePointer);
-            byte[] b1 = bufferAccessor1.getTupleBuffer().array();
-            byte[] b2 = bufferAccessor2.getTupleBuffer().array();
+            byte[] b1 = bufferAccessor1.getBuffer().array();
+            byte[] b2 = bufferAccessor2.getBuffer().array();
 
             for (int f = 0; f < comparators.length; ++f) {
                 int fIdx = sortFields[f];
@@ -104,9 +104,9 @@
         }
     }
 
-    private final ITupleBufferManager bufferManager;
-    private final ITupleBufferAccessor bufferAccessor1;
-    private final ITupleBufferAccessor bufferAccessor2;
+    private final IDeletableTupleBufferManager bufferManager;
+    private final ITuplePointerAccessor bufferAccessor1;
+    private final ITuplePointerAccessor bufferAccessor2;
     private final int topK;
     private final FrameTupleAppender outputAppender;
     private final IFrame outputFrame;
@@ -120,12 +120,13 @@
     private MaxHeap heap;
     private boolean isSorted;
 
-    public TupleSorterHeapSort(IHyracksTaskContext ctx, ITupleBufferManager bufferManager, int topK, int[] sortFields,
+    public TupleSorterHeapSort(IHyracksTaskContext ctx, IDeletableTupleBufferManager bufferManager, int topK,
+            int[] sortFields,
             INormalizedKeyComputerFactory firstKeyNormalizerFactory, IBinaryComparatorFactory[] comparatorFactories)
             throws HyracksDataException {
         this.bufferManager = bufferManager;
-        this.bufferAccessor1 = bufferManager.getTupleAccessor();
-        this.bufferAccessor2 = bufferManager.getTupleAccessor();
+        this.bufferAccessor1 = bufferManager.createTupleAccessor();
+        this.bufferAccessor2 = bufferManager.createTupleAccessor();
         this.topK = topK;
         this.outputFrame = new VSizeFrame(ctx);
         this.outputAppender = new FrameTupleAppender();
@@ -190,7 +191,7 @@
         }
         bufferAccessor2.reset(maxEntry.tuplePointer);
         byte[] b1 = frameTupleAccessor.getBuffer().array();
-        byte[] b2 = bufferAccessor2.getTupleBuffer().array();
+        byte[] b2 = bufferAccessor2.getBuffer().array();
 
         for (int f = 0; f < comparators.length; ++f) {
             int fIdx = sortFields[f];
@@ -236,7 +237,7 @@
     };
 
     @Override
-    public void close() {
+    public void close() throws HyracksDataException {
         heap = null;
         bufferManager.close();
         isSorted = false;
@@ -254,7 +255,7 @@
             HeapEntry minEntry = (HeapEntry) entries[i];
             bufferAccessor1.reset(minEntry.tuplePointer);
             int flushed = FrameUtils
-                    .appendToWriter(writer, outputAppender, bufferAccessor1.getTupleBuffer().array(),
+                    .appendToWriter(writer, outputAppender, bufferAccessor1.getBuffer().array(),
                             bufferAccessor1.getTupleStartOffset(), bufferAccessor1.getTupleLength());
             if (flushed > 0) {
                 maxFrameSize = Math.max(maxFrameSize, flushed);
@@ -262,7 +263,7 @@
             }
         }
         maxFrameSize = Math.max(maxFrameSize, outputFrame.getFrameSize());
-        outputAppender.flush(writer, true);
+        outputAppender.write(writer, true);
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info(
                     "Flushed records:" + numEntries + "; Flushed through " + (io + 1) + " frames");
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/IAppendDeletableFrameTupleAccessor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/IAppendDeletableFrameTupleAccessor.java
index f77ec63..31ea07d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/IAppendDeletableFrameTupleAccessor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/util/IAppendDeletableFrameTupleAccessor.java
@@ -26,7 +26,7 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 /**
- * Basically it a union of the {@link IFrameTupleAccessor} and {@link IFrameTupleAppender}.
+ * Basically, it is an union of the {@link IFrameTupleAccessor} and {@link IFrameTupleAppender}.
  * Moreover, it has the delete function as well.
  * This is a special TupleAccessor used for TopK sorting.
  * In HeapSort, or other Tuple-based operators, we need to append the tuple, access the arbitrary previously
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/AbstractHeap.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/AbstractHeap.java
index a0abaf7..d9a62c8 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/AbstractHeap.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/AbstractHeap.java
@@ -21,7 +21,7 @@
 
 import java.util.Arrays;
 
-import org.apache.hyracks.dataflow.std.util.MathUtil;
+import org.apache.hyracks.util.MathUtil;
 
 public abstract class AbstractHeap implements IHeap<IResetableComparable> {
     protected static final int NOT_EXIST = -1;
@@ -72,9 +72,7 @@
 
     @Override
     public void reset() {
-        for (int i = 0; i < numEntry; i++) {
-            entries[i] = null;
-        }
+        Arrays.fill(entries, null);
         numEntry = 0;
     }
 
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/IMinMaxHeap.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/IMinMaxHeap.java
index df7c80c..277dc9f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/IMinMaxHeap.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/IMinMaxHeap.java
@@ -19,4 +19,4 @@
 package org.apache.hyracks.dataflow.std.structures;
 
 public interface IMinMaxHeap<T> extends IMinHeap<T>, IMaxHeap<T> {
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/ISerializableTable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/ISerializableTable.java
index ceae0f1..8cd6792 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/ISerializableTable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/ISerializableTable.java
@@ -22,15 +22,19 @@
 
 public interface ISerializableTable {
 
-    public void insert(int entry, TuplePointer tuplePointer) throws HyracksDataException;
+    void insert(int entry, TuplePointer tuplePointer) throws HyracksDataException;
 
-    public void getTuplePointer(int entry, int offset, TuplePointer tuplePointer);
+    void delete(int entry);
 
-    public int getFrameCount();
+    boolean getTuplePointer(int entry, int offset, TuplePointer tuplePointer);
 
-    public int getTupleCount();
+    int getFrameCount();
 
-    public void reset();
+    int getTupleCount();
 
-    public void close();
+    int getTupleCount(int entry);
+
+    void reset();
+
+    void close();
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTable.java
index 7db57c0..8699c10 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTable.java
@@ -21,7 +21,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.context.IHyracksFrameMgrContext;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 /**
@@ -36,14 +36,14 @@
     private IntSerDeBuffer[] headers;
     private List<IntSerDeBuffer> contents = new ArrayList<IntSerDeBuffer>();
     private List<Integer> frameCurrentIndex = new ArrayList<Integer>();
-    private final IHyracksTaskContext ctx;
-    private int frameCapacity = 0;
+    private final IHyracksFrameMgrContext ctx;
+    private final int frameCapacity;
     private int currentLargestFrameIndex = 0;
     private int tupleCount = 0;
     private int headerFrameCount = 0;
     private TuplePointer tempTuplePointer = new TuplePointer();
 
-    public SerializableHashTable(int tableSize, final IHyracksTaskContext ctx) throws HyracksDataException {
+    public SerializableHashTable(int tableSize, final IHyracksFrameMgrContext ctx) throws HyracksDataException {
         this.ctx = ctx;
         int frameSize = ctx.getInitialFrameSize();
 
@@ -81,28 +81,45 @@
     }
 
     @Override
-    public void getTuplePointer(int entry, int offset, TuplePointer dataPointer) {
+    public void delete(int entry) {
+        int hFrameIndex = getHeaderFrameIndex(entry);
+        int headerOffset = getHeaderFrameOffset(entry);
+        IntSerDeBuffer header = headers[hFrameIndex];
+        if (header != null) {
+            int frameIndex = header.getInt(headerOffset);
+            int offsetIndex = header.getInt(headerOffset + 1);
+            if (frameIndex >= 0) {
+                IntSerDeBuffer frame = contents.get(frameIndex);
+                int entryUsedItems = frame.getInt(offsetIndex + 1);
+                frame.writeInt(offsetIndex + 1, 0);
+                tupleCount -= entryUsedItems;
+            }
+        }
+    }
+
+    @Override
+    public boolean getTuplePointer(int entry, int offset, TuplePointer dataPointer) {
         int hFrameIndex = getHeaderFrameIndex(entry);
         int headerOffset = getHeaderFrameOffset(entry);
         IntSerDeBuffer header = headers[hFrameIndex];
         if (header == null) {
             dataPointer.frameIndex = -1;
             dataPointer.tupleIndex = -1;
-            return;
+            return false;
         }
         int frameIndex = header.getInt(headerOffset);
         int offsetIndex = header.getInt(headerOffset + 1);
         if (frameIndex < 0) {
             dataPointer.frameIndex = -1;
             dataPointer.tupleIndex = -1;
-            return;
+            return false;
         }
         IntSerDeBuffer frame = contents.get(frameIndex);
         int entryUsedItems = frame.getInt(offsetIndex + 1);
         if (offset > entryUsedItems - 1) {
             dataPointer.frameIndex = -1;
             dataPointer.tupleIndex = -1;
-            return;
+            return false;
         }
         int startIndex = offsetIndex + 2 + offset * 2;
         while (startIndex >= frameCapacity) {
@@ -112,6 +129,7 @@
         frame = contents.get(frameIndex);
         dataPointer.frameIndex = frame.getInt(startIndex);
         dataPointer.tupleIndex = frame.getInt(startIndex + 1);
+        return true;
     }
 
     @Override
@@ -139,9 +157,26 @@
     }
 
     @Override
+    public int getTupleCount(int entry) {
+        int hFrameIndex = getHeaderFrameIndex(entry);
+        int headerOffset = getHeaderFrameOffset(entry);
+        IntSerDeBuffer header = headers[hFrameIndex];
+        if (header != null) {
+            int frameIndex = header.getInt(headerOffset);
+            int offsetIndex = header.getInt(headerOffset + 1);
+            if (frameIndex >= 0) {
+                IntSerDeBuffer frame = contents.get(frameIndex);
+                int entryUsedItems = frame.getInt(offsetIndex + 1);
+                return entryUsedItems;
+            }
+        }
+        return 0;
+    }
+
+    @Override
     public void close() {
         int nFrames = contents.size();
-    	for (int i = 0; i < headers.length; i++)
+        for (int i = 0; i < headers.length; i++)
             headers[i] = null;
         contents.clear();
         frameCurrentIndex.clear();
@@ -259,31 +294,30 @@
         return offset;
     }
 
-}
+    private static class IntSerDeBuffer {
 
-class IntSerDeBuffer {
+        private byte[] bytes;
 
-    private byte[] bytes;
+        public IntSerDeBuffer(byte[] data) {
+            this.bytes = data;
+        }
 
-    public IntSerDeBuffer(byte[] data) {
-        this.bytes = data;
-    }
+        public int getInt(int pos) {
+            int offset = pos * 4;
+            return ((bytes[offset] & 0xff) << 24) + ((bytes[offset + 1] & 0xff) << 16)
+                    + ((bytes[offset + 2] & 0xff) << 8) + ((bytes[offset + 3] & 0xff) << 0);
+        }
 
-    public int getInt(int pos) {
-        int offset = pos * 4;
-        return ((bytes[offset] & 0xff) << 24) + ((bytes[offset + 1] & 0xff) << 16) + ((bytes[offset + 2] & 0xff) << 8)
-                + ((bytes[offset + 3] & 0xff) << 0);
-    }
+        public void writeInt(int pos, int value) {
+            int offset = pos * 4;
+            bytes[offset++] = (byte) (value >> 24);
+            bytes[offset++] = (byte) (value >> 16);
+            bytes[offset++] = (byte) (value >> 8);
+            bytes[offset++] = (byte) (value);
+        }
 
-    public void writeInt(int pos, int value) {
-        int offset = pos * 4;
-        bytes[offset++] = (byte) (value >> 24);
-        bytes[offset++] = (byte) (value >> 16);
-        bytes[offset++] = (byte) (value >> 8);
-        bytes[offset++] = (byte) (value);
-    }
-
-    public int capacity() {
-        return bytes.length / 4;
+        public int capacity() {
+            return bytes.length / 4;
+        }
     }
 }
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/TuplePointer.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/TuplePointer.java
index 47b4887..71f9639 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/TuplePointer.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/structures/TuplePointer.java
@@ -62,4 +62,4 @@
         this.tupleIndex = tupleId;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java
index 3457fe8..06497d5 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/union/UnionAllOperatorDescriptor.java
@@ -34,7 +34,8 @@
 import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputOperatorNodePushable;
 
 public class UnionAllOperatorDescriptor extends AbstractOperatorDescriptor {
-    public UnionAllOperatorDescriptor(IOperatorDescriptorRegistry spec, int nInputs, RecordDescriptor recordDescriptor) {
+    public UnionAllOperatorDescriptor(IOperatorDescriptorRegistry spec, int nInputs,
+            RecordDescriptor recordDescriptor) {
         super(spec, nInputs, 1);
         recordDescriptors[0] = recordDescriptor;
     }
@@ -61,7 +62,7 @@
         @Override
         public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
                 IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
-                throws HyracksDataException {
+                        throws HyracksDataException {
             RecordDescriptor inRecordDesc = recordDescProvider.getInputRecordDescriptor(getActivityId(), 0);
             return new UnionOperator(ctx, inRecordDesc);
         }
@@ -69,9 +70,7 @@
 
     private class UnionOperator extends AbstractUnaryOutputOperatorNodePushable {
         private int nOpened;
-
         private int nClosed;
-
         private boolean failed;
 
         public UnionOperator(IHyracksTaskContext ctx, RecordDescriptor inRecordDesc) {
@@ -106,7 +105,7 @@
                 @Override
                 public void fail() throws HyracksDataException {
                     synchronized (UnionOperator.this) {
-                        if (failed) {
+                        if (!failed) {
                             writer.fail();
                         }
                         failed = true;
@@ -117,11 +116,19 @@
                 public void close() throws HyracksDataException {
                     synchronized (UnionOperator.this) {
                         if (++nClosed == inputArity) {
+                            // a single close
                             writer.close();
                         }
                     }
                 }
+
+                @Override
+                public void flush() throws HyracksDataException {
+                    synchronized (UnionOperator.this) {
+                        writer.flush();
+                    }
+                }
             };
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/DeserializedOperatorNodePushable.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/DeserializedOperatorNodePushable.java
index b656b46..e641920 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/DeserializedOperatorNodePushable.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/DeserializedOperatorNodePushable.java
@@ -76,4 +76,9 @@
     public String getDisplayName() {
         return "Deserialized(" + delegate + ")";
     }
-}
\ No newline at end of file
+
+    @Override
+    public void flush() throws HyracksDataException {
+        delegate.flush();
+    }
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTuplePairComparator.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/FrameTuplePairComparator.java
similarity index 65%
rename from hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTuplePairComparator.java
rename to hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/FrameTuplePairComparator.java
index e21a6ac..c74fe04 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/FrameTuplePairComparator.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/FrameTuplePairComparator.java
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.dataflow.common.comm.io;
+package org.apache.hyracks.dataflow.std.util;
 
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.std.buffermanager.ITuplePointerAccessor;
 
 public class FrameTuplePairComparator {
     private final int[] keys0;
@@ -32,7 +34,7 @@
         this.comparators = comparators;
     }
 
-    public int compare(FrameTupleAccessor accessor0, int tIndex0, FrameTupleAccessor accessor1, int tIndex1)
+    public int compare(IFrameTupleAccessor accessor0, int tIndex0, IFrameTupleAccessor accessor1, int tIndex1)
             throws HyracksDataException {
         int tStart0 = accessor0.getTupleStartOffset(tIndex0);
         int fStartOffset0 = accessor0.getFieldSlotsLength() + tStart0;
@@ -59,4 +61,28 @@
         }
         return 0;
     }
-}
\ No newline at end of file
+
+    public int compare(IFrameTupleAccessor accessor0, int tIndex0, ITuplePointerAccessor bufferAccessor)
+            throws HyracksDataException {
+        int tStart0 = accessor0.getTupleStartOffset(tIndex0);
+        int fStartOffset0 = accessor0.getFieldSlotsLength() + tStart0;
+
+        for (int i = 0; i < keys0.length; ++i) {
+            int fIdx0 = keys0[i];
+            int fStart0 = accessor0.getFieldStartOffset(tIndex0, fIdx0);
+            int fEnd0 = accessor0.getFieldEndOffset(tIndex0, fIdx0);
+            int fLen0 = fEnd0 - fStart0;
+
+            int fStart1 = bufferAccessor.getAbsFieldStartOffset(keys1[i]);
+            int fLen1 = bufferAccessor.getFieldLength(keys1[i]);
+
+            int c = comparators[i].compare(accessor0.getBuffer().array(), fStart0 + fStartOffset0, fLen0, bufferAccessor
+                    .getBuffer().array(), fStart1, fLen1);
+            if (c != 0) {
+                return c;
+            }
+        }
+        return 0;
+    }
+
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferenceEntry.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferenceEntry.java
index b445094..8eb5c2e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferenceEntry.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferenceEntry.java
@@ -84,4 +84,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferencedPriorityQueue.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferencedPriorityQueue.java
index bc9e361..cc6c2d9 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferencedPriorityQueue.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/ReferencedPriorityQueue.java
@@ -140,4 +140,4 @@
     public int size() {
         return nItems;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/SelectionTree.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/SelectionTree.java
index 1a05a85..873e8ab 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/SelectionTree.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/SelectionTree.java
@@ -108,4 +108,4 @@
     public interface Entry extends Comparable<Entry> {
         public abstract boolean advance();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/StringSerializationUtils.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/StringSerializationUtils.java
index 83ed504..7eab6c0 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/StringSerializationUtils.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/StringSerializationUtils.java
@@ -28,4 +28,4 @@
             return String.valueOf(object);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractFramePoolTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractFramePoolTest.java
new file mode 100644
index 0000000..3e4e578
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractFramePoolTest.java
@@ -0,0 +1,144 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.BUDGET;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.MIN_FRAME_SIZE;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.NUM_MIN_FRAME;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.commonFrameManager;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Test;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public abstract class AbstractFramePoolTest {
+    IFramePool pool;
+
+    @Test
+    public void testGetMinFrameSize() throws Exception {
+        assertEquals(MIN_FRAME_SIZE, commonFrameManager.getInitialFrameSize());
+        assertEquals(MIN_FRAME_SIZE, pool.getMinFrameSize());
+    }
+
+    @Test
+    public void testGetMemoryBudgetBytes() throws Exception {
+        assertEquals(BUDGET, pool.getMemoryBudgetBytes());
+    }
+
+    protected void testAllocateShouldFailAfterAllSpaceGetUsed() throws HyracksDataException {
+        for (int i = 0; i < NUM_MIN_FRAME; i++) {
+            assertNull(pool.allocateFrame(MIN_FRAME_SIZE));
+        }
+    }
+
+    protected HashSet<ByteBufferPtr> testAllocateAllSpacesWithMinFrames() throws HyracksDataException {
+        HashSet<ByteBufferPtr> set = new HashSet<>();
+        for (int i = 0; i < NUM_MIN_FRAME; i++) {
+            testAllocateNewBuffer(set, MIN_FRAME_SIZE);
+        }
+        return set;
+    }
+
+    protected void testAllocateNewBuffer(HashSet<ByteBufferPtr> set, int frameSize) throws HyracksDataException {
+        ByteBuffer buffer = pool.allocateFrame(frameSize);
+        assertNotNull(buffer);
+        assertEquals(buffer.capacity(), frameSize);
+        assertTrue(!set.contains(new ByteBufferPtr(buffer)));
+        set.add(new ByteBufferPtr(buffer));
+    }
+
+    /**
+     * Pool will become 1,2,3,4,5
+     *
+     * @throws HyracksDataException
+     */
+    protected Set<ByteBufferPtr> testAllocateVariableFrames() throws HyracksDataException {
+        int budget = BUDGET;
+        int allocate = 0;
+        int i = 1;
+        Set<ByteBufferPtr> set = new HashSet<>();
+        while (budget - allocate >= i * MIN_FRAME_SIZE) {
+            ByteBuffer buffer = pool.allocateFrame(i * MIN_FRAME_SIZE);
+            assertNotNull(buffer);
+            set.add(new ByteBufferPtr(buffer));
+            allocate += i++ * MIN_FRAME_SIZE;
+        }
+        return set;
+    }
+
+    protected void testShouldFindTheMatchFrames(Set<?> set) throws HyracksDataException {
+        pool.reset();
+        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
+
+        for (int i = 0; i < list.size(); i++) {
+            ByteBuffer buffer = pool.allocateFrame(list.get(i) * MIN_FRAME_SIZE);
+            assertNotNull(buffer);
+            assertTrue(set.contains(new ByteBufferPtr(buffer)));
+            assertEquals(list.get(i) * MIN_FRAME_SIZE, buffer.capacity());
+        }
+        pool.reset();
+        for (int i = list.size() - 1; i >= 0; i--) {
+            ByteBuffer buffer = pool.allocateFrame(list.get(i) * MIN_FRAME_SIZE);
+            assertNotNull(buffer);
+            assertTrue(set.contains(new ByteBufferPtr(buffer)));
+            assertEquals(list.get(i) * MIN_FRAME_SIZE, buffer.capacity());
+        }
+
+        Collections.shuffle(list);
+        pool.reset();
+        for (int i = 0; i < list.size(); i++) {
+            ByteBuffer buffer = pool.allocateFrame(list.get(i) * MIN_FRAME_SIZE);
+            assertNotNull(buffer);
+            assertTrue(set.contains(new ByteBufferPtr(buffer)));
+            assertEquals(list.get(i) * MIN_FRAME_SIZE, buffer.capacity());
+        }
+
+    }
+
+    public static class ByteBufferPtr {
+        ByteBuffer bytebuffer;
+
+        public ByteBufferPtr(ByteBuffer buffer) {
+            bytebuffer = buffer;
+        }
+
+        @Override
+        public int hashCode() {
+            return bytebuffer.hashCode();
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            return this.bytebuffer == ((ByteBufferPtr) obj).bytebuffer;
+        }
+    }
+
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractTupleMemoryManagerTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractTupleMemoryManagerTest.java
new file mode 100644
index 0000000..cdf8834
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/AbstractTupleMemoryManagerTest.java
@@ -0,0 +1,113 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import static org.junit.Assert.assertEquals;
+
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+import org.apache.hyracks.api.comm.FixedSizeFrame;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
+import org.apache.hyracks.dataflow.std.sort.Utility;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+
+public abstract class AbstractTupleMemoryManagerTest {
+    ISerializerDeserializer[] fieldsSerDer = new ISerializerDeserializer[] {
+            IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() };
+    RecordDescriptor recordDescriptor = new RecordDescriptor(fieldsSerDer);
+    ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(recordDescriptor.getFieldCount());
+    FrameTupleAccessor inFTA = new FrameTupleAccessor(recordDescriptor);
+    Random random = new Random(System.currentTimeMillis());
+
+    abstract ITuplePointerAccessor getTupleAccessor();
+
+    protected void assertEachTupleInFTAIsInBuffer(Map<Integer, Integer> map, Map<TuplePointer, Integer> mapInserted) {
+        ITuplePointerAccessor accessor = getTupleAccessor();
+        for (Map.Entry<TuplePointer, Integer> entry : mapInserted.entrySet()) {
+            accessor.reset(entry.getKey());
+            int dataLength = map.get(entry.getValue());
+            assertEquals((int) entry.getValue(),
+                    IntSerDeUtils.getInt(accessor.getBuffer().array(), accessor.getAbsFieldStartOffset(0)));
+            assertEquals(dataLength, accessor.getTupleLength());
+        }
+        assertEquals(map.size(), mapInserted.size());
+    }
+
+    protected Map<Integer, Integer> prepareFixedSizeTuples(
+            int tuplePerFrame,
+            int extraMetaBytePerFrame,
+            int extraMetaBytePerRecord) throws HyracksDataException {
+        Map<Integer, Integer> dataSet = new HashMap<>();
+        ByteBuffer buffer = ByteBuffer.allocate(Common.BUDGET);
+        FixedSizeFrame frame = new FixedSizeFrame(buffer);
+        FrameTupleAppender appender = new FrameTupleAppender();
+        appender.reset(frame, true);
+
+        int sizePerTuple = (Common.MIN_FRAME_SIZE - 1 - tuplePerFrame * 4 - 4 - extraMetaBytePerFrame) / tuplePerFrame;
+        int sizeChar =
+                sizePerTuple - extraMetaBytePerRecord - fieldsSerDer.length * 4 - 4 - 2; //2byte to write str length
+        assert (sizeChar > 0);
+        for (int i = 0; i < Common.NUM_MIN_FRAME * tuplePerFrame; i++) {
+            tupleBuilder.reset();
+            tupleBuilder.addField(fieldsSerDer[0], i);
+            tupleBuilder.addField(fieldsSerDer[1], Utility.repeatString('a', sizeChar));
+            if (!appender.append(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
+                    tupleBuilder.getSize())) {
+                assert false;
+            }
+            dataSet.put(i, tupleBuilder.getSize() + tupleBuilder.getFieldEndOffsets().length * 4);
+        }
+        inFTA.reset(buffer);
+        return dataSet;
+    }
+
+    protected Map<Integer, Integer> prepareVariableSizeTuples() throws HyracksDataException {
+        Map<Integer, Integer> dataSet = new HashMap<>();
+        ByteBuffer buffer = ByteBuffer.allocate(Common.BUDGET);
+        FixedSizeFrame frame = new FixedSizeFrame(buffer);
+        FrameTupleAppender appender = new FrameTupleAppender();
+        appender.reset(frame, true);
+
+        for (int i = 0; true; i++) {
+            tupleBuilder.reset();
+            tupleBuilder.addField(fieldsSerDer[0], i);
+            tupleBuilder.addField(fieldsSerDer[1], Utility.repeatString('a', i));
+            if (!appender.append(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
+                    tupleBuilder.getSize())) {
+                break;
+            }
+            dataSet.put(i, tupleBuilder.getSize() + tupleBuilder.getFieldEndOffsets().length * 4);
+        }
+        inFTA.reset(buffer);
+        return dataSet;
+    }
+
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/Common.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/Common.java
similarity index 94%
rename from hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/Common.java
rename to hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/Common.java
index a6f10a6..7389aab 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/Common.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/Common.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import org.apache.hyracks.control.nc.resources.memory.FrameManager;
 
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/DeletableFramePoolTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/DeletableFramePoolTest.java
new file mode 100644
index 0000000..2a84e0e
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/DeletableFramePoolTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.BUDGET;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.MIN_FRAME_SIZE;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.commonFrameManager;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.util.HashSet;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class DeletableFramePoolTest extends AbstractFramePoolTest {
+
+    @Before
+    public void setUp() {
+        pool = new DeallocatableFramePool(commonFrameManager, BUDGET);
+    }
+
+    DeallocatableFramePool getPool() {
+        return (DeallocatableFramePool) pool;
+    }
+
+    @Test
+    public void testAllocateBuffers() throws HyracksDataException {
+        testAllocateAllSpacesWithMinFrames();
+    }
+
+    @Test
+    public void testCanNotAllocateMore() throws HyracksDataException {
+        testAllocateAllSpacesWithMinFrames();
+        assertNull(pool.allocateFrame(MIN_FRAME_SIZE));
+    }
+
+    @Test
+    public void testReusePreAllocatedBuffer() throws HyracksDataException {
+        HashSet<ByteBufferPtr> set = testAllocateAllSpacesWithMinFrames();
+        for (ByteBufferPtr ptr : set) {
+            getPool().deAllocateBuffer(ptr.bytebuffer);
+        }
+        HashSet<ByteBufferPtr> set2 = testAllocateAllSpacesWithMinFrames();
+        assertEquals(set, set2);
+    }
+
+    @Test
+    public void testMergeCase() throws HyracksDataException {
+        HashSet<ByteBufferPtr> set = testAllocateAllSpacesWithMinFrames();
+        for (ByteBufferPtr ptr : set) {
+            getPool().deAllocateBuffer(ptr.bytebuffer);
+        }
+        set.clear();
+        int i = 1;
+        for (int sum = 0; sum + MIN_FRAME_SIZE * i <= BUDGET; i++) {
+            sum += MIN_FRAME_SIZE * i;
+            testAllocateNewBuffer(set, MIN_FRAME_SIZE * i);
+        }
+        assertNull(pool.allocateFrame(MIN_FRAME_SIZE * i));
+        for (ByteBufferPtr ptr : set) {
+            getPool().deAllocateBuffer(ptr.bytebuffer);
+        }
+        set.clear();
+        testAllocateNewBuffer(set, BUDGET);
+    }
+
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBestFitUsingTreeMapTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBestFitUsingTreeMapTest.java
similarity index 96%
rename from hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBestFitUsingTreeMapTest.java
rename to hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBestFitUsingTreeMapTest.java
index 0cd1cda..992c7f6 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBestFitUsingTreeMapTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBestFitUsingTreeMapTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import static org.junit.Assert.assertEquals;
 
@@ -61,4 +61,4 @@
     }
 
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBiggestFirstTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBiggestFirstTest.java
similarity index 96%
rename from hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBiggestFirstTest.java
rename to hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBiggestFirstTest.java
index 7b65b84..88a54bd 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotBiggestFirstTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotBiggestFirstTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import static junit.framework.Assert.assertEquals;
 
@@ -71,4 +71,4 @@
         testAll();
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotLastFitTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotLastFitTest.java
similarity index 97%
rename from hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotLastFitTest.java
rename to hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotLastFitTest.java
index ab7d70a..87b1b91 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/FrameFreeSlotLastFitTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/FrameFreeSlotLastFitTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -87,4 +87,4 @@
         dscPolicy.reset();
         testPushAndPop();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VPartitionTupleBufferManagerTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VPartitionTupleBufferManagerTest.java
new file mode 100644
index 0000000..ce31108
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VPartitionTupleBufferManagerTest.java
@@ -0,0 +1,159 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VPartitionTupleBufferManagerTest extends AbstractTupleMemoryManagerTest {
+
+    VPartitionTupleBufferManager bufferManager;
+    final int PARTITION = 4;
+
+    @Before
+    public void setup() throws HyracksDataException {
+        IPartitionedMemoryConstrain constrain = new IPartitionedMemoryConstrain() {
+            @Override
+            public int frameLimit(int partitionId) {
+                return Integer.MAX_VALUE;
+            }
+        };
+        bufferManager = new VPartitionTupleBufferManager(Common.commonFrameManager, constrain, PARTITION,
+                Common.BUDGET);
+    }
+
+    @Test
+    public void testGetNumPartitions() throws Exception {
+        assertEquals(PARTITION, bufferManager.getNumPartitions());
+    }
+
+    @Test
+    public void testGetNumTuples() throws Exception {
+        testNumTuplesAndSizeIsZero();
+    }
+
+    @Test
+    public void testInsertToFull() throws HyracksDataException {
+        Map<Integer, Integer> inMap = prepareFixedSizeTuples(10, 0, 0);
+        for (int pid = 0; pid < PARTITION; pid++) {
+            assertInsertOnePartitionToFull(pid, inMap);
+            bufferManager.reset();
+        }
+    }
+
+    @Test
+    public void testInsertClearSequence() throws HyracksDataException {
+        Map<Integer, Integer> inMap = prepareFixedSizeTuples(10, 0, 0);
+        for (int pid = 0; pid < PARTITION; pid++) {
+            assertInsertOnePartitionToFull(pid, inMap);
+            bufferManager.reset();
+        }
+    }
+
+    private void assertInsertOnePartitionToFull(int pid, Map<Integer, Integer> inMap) throws HyracksDataException {
+        testNumTuplesAndSizeIsZero();
+
+        Map<TuplePointer, Integer> outMap = testInsertOnePartitionToFull(pid);
+        assertEquals(outMap.size(), bufferManager.getNumTuples(pid));
+        assertEquals(Common.BUDGET, bufferManager.getPhysicalSize(pid));
+        testCanNotInsertToAnyPartitions();
+        assertEachTupleInFTAIsInBuffer(inMap, outMap);
+
+    }
+
+    private void testCanNotInsertToAnyPartitions() throws HyracksDataException {
+        for (int i = 0; i < PARTITION; i++) {
+            assertFalse(bufferManager.insertTuple(i, tupleBuilder.getByteArray(), tupleBuilder.getFieldEndOffsets(), 0,
+                    tupleBuilder.getSize(), null));
+        }
+    }
+
+    private Map<TuplePointer, Integer> testInsertOnePartitionToFull(int idpart) throws HyracksDataException {
+        Map<TuplePointer, Integer> tuplePointerIntegerMap = new HashMap<>();
+
+        for (int i = 0; i < inFTA.getTupleCount(); i++) {
+            TuplePointer tuplePointer = new TuplePointer();
+            copyDataToTupleBuilder(inFTA, i, tupleBuilder);
+            if (!bufferManager.insertTuple(idpart, tupleBuilder.getByteArray(), tupleBuilder.getFieldEndOffsets(), 0,
+                    tupleBuilder.getSize(), tuplePointer)) {
+                assert false;
+            }
+            tuplePointerIntegerMap.put(tuplePointer,
+                    IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
+        }
+        return tuplePointerIntegerMap;
+
+    }
+
+    private static void copyDataToTupleBuilder(FrameTupleAccessor inFTA, int tid, ArrayTupleBuilder tupleBuilder)
+            throws HyracksDataException {
+        tupleBuilder.reset();
+        for (int fid = 0; fid < inFTA.getFieldCount(); fid++) {
+            tupleBuilder.addField(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(tid, fid),
+                    inFTA.getFieldLength(tid, fid));
+        }
+    }
+
+    private void testNumTuplesAndSizeIsZero() {
+        for (int i = 0; i < bufferManager.getNumPartitions(); ++i) {
+            assertEquals(0, bufferManager.getNumTuples(i));
+            assertEquals(0, bufferManager.getPhysicalSize(0));
+        }
+    }
+
+    @Test
+    public void testClearPartition() throws Exception {
+
+        Map<Integer, Integer> inMap = prepareFixedSizeTuples(10, 0, 0);
+        for (int pid = 0; pid < PARTITION; pid++) {
+            assertInsertOnePartitionToFull(pid, inMap);
+            assertClearFullPartitionIsTheSameAsReset();
+        }
+    }
+
+    private void assertClearFullPartitionIsTheSameAsReset() throws HyracksDataException {
+        for (int i = 0; i < PARTITION; i++) {
+            bufferManager.clearPartition(i);
+        }
+        testNumTuplesAndSizeIsZero();
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        testInsertToFull();
+        bufferManager.close();
+    }
+
+    @Override
+    ITuplePointerAccessor getTupleAccessor() {
+        return bufferManager.getTupleAccessor(recordDescriptor);
+    }
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramePoolTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramePoolTest.java
new file mode 100644
index 0000000..8dbe1f0
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramePoolTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.BUDGET;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.MIN_FRAME_SIZE;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.NUM_MIN_FRAME;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.commonFrameManager;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.ByteBuffer;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class VariableFramePoolTest extends AbstractFramePoolTest {
+
+    @Before
+    public void setUp() throws Exception {
+        pool = new VariableFramePool(commonFrameManager, BUDGET);
+    }
+
+    @Test
+    public void testAllocateUniformFrameShouldSuccess() throws Exception {
+        testAllocateAllSpacesWithMinFrames();
+        testAllocateShouldFailAfterAllSpaceGetUsed();
+        pool.reset();
+        testAllocateAllSpacesWithMinFrames();
+        pool.close();
+    }
+
+    @Test
+    public void testResetShouldReuseExistingFrames() throws HyracksDataException {
+        Set<?> set1 = testAllocateAllSpacesWithMinFrames();
+        pool.reset();
+        Set<?> set2 = testAllocateAllSpacesWithMinFrames();
+        assertEquals(set1, set2);
+        pool.close();
+    }
+
+    @Test
+    public void testCloseShouldNotReuseExistingFrames() throws HyracksDataException {
+        Set<?> set1 = testAllocateAllSpacesWithMinFrames();
+        pool.close();
+        Set<?> set2 = testAllocateAllSpacesWithMinFrames();
+        assertFalse(set1.equals(set2));
+        pool.close();
+    }
+
+    @Test
+    public void testShouldReturnLargerFramesIfFitOneIsUsed() throws HyracksDataException {
+        Set<?> set = testAllocateVariableFrames();
+        pool.reset();
+        testShouldFindTheMatchFrames(set);
+        pool.reset();
+
+        // allocate seq: 1, 1, 2, 3, 4
+        ByteBuffer placeBuffer = pool.allocateFrame(MIN_FRAME_SIZE);
+        assertTrue(set.contains(new ByteBufferPtr(placeBuffer)));
+        for (int i = 1; i <= 4; i++) {
+            ByteBuffer buffer = pool.allocateFrame(i * MIN_FRAME_SIZE);
+            assertNotNull(buffer);
+            assertTrue(set.contains(new ByteBufferPtr(buffer)));
+        }
+        assertNull(pool.allocateFrame(MIN_FRAME_SIZE));
+        pool.close();
+    }
+
+    @Test
+    public void testShouldMergeIfNoLargerFrames() throws HyracksDataException {
+        Set<?> set = testAllocateAllSpacesWithMinFrames();
+        pool.reset();
+        int chunks = 5;
+        for (int i = 0; i < NUM_MIN_FRAME; i += chunks) {
+            ByteBuffer buffer = pool.allocateFrame(chunks * MIN_FRAME_SIZE);
+            assertNotNull(buffer);
+            assertTrue(!set.contains(new ByteBufferPtr(buffer)));
+        }
+    }
+
+    @Test
+    public void testUseMiddleSizeFrameAndNeedToMergeSmallAndBigger() throws HyracksDataException {
+        Set<?> set = testAllocateVariableFrames();
+        pool.reset();
+        // allocate seq: 3, 6, 1;
+        ByteBuffer buffer = pool.allocateFrame(3 * MIN_FRAME_SIZE);
+        assertTrue(set.contains(new ByteBufferPtr(buffer)));
+        buffer = pool.allocateFrame(6 * MIN_FRAME_SIZE);
+        assertFalse(set.contains(new ByteBufferPtr(buffer)));
+        buffer = pool.allocateFrame(1 * MIN_FRAME_SIZE);
+        assertTrue(set.contains(new ByteBufferPtr(buffer)));
+        assertEquals(5 * MIN_FRAME_SIZE, buffer.capacity());
+        pool.reset();
+    }
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramesMemoryManagerTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramesMemoryManagerTest.java
similarity index 93%
rename from hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramesMemoryManagerTest.java
rename to hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramesMemoryManagerTest.java
index 714c3c7..9d4a9a1 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramesMemoryManagerTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableFramesMemoryManagerTest.java
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.sort.buffermanager;
+package org.apache.hyracks.dataflow.std.buffermanager;
 
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.BUDGET;
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.MIN_FRAME_SIZE;
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.NUM_MIN_FRAME;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.BUDGET;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.MIN_FRAME_SIZE;
+import static org.apache.hyracks.dataflow.std.buffermanager.Common.NUM_MIN_FRAME;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
@@ -66,7 +66,7 @@
     public void testNormalIncomingFrames() throws HyracksDataException {
         HashMap<Integer, Integer> tupleSet = prepareTuples();
         for (IFrame frame : frameList) {
-            assertTrue(framesMemoryManager.insertFrame(frame.getBuffer()) >=0);
+            assertTrue(framesMemoryManager.insertFrame(frame.getBuffer()) >= 0);
         }
         assertEquals(NUM_MIN_FRAME, framesMemoryManager.getNumFrames());
         assertEveryTupleInFTAIsInFrameMemoryManager(tupleSet, framesMemoryManager);
@@ -152,9 +152,10 @@
 
     private void assertEveryTupleInFTAIsInFrameMemoryManager(Map<Integer, Integer> tupleSet,
             VariableFrameMemoryManager framesMemoryManager) {
+        BufferInfo info = new BufferInfo(null, -1, -1);
         for (int i = 0; i < framesMemoryManager.getNumFrames(); ++i) {
-            fta.reset(framesMemoryManager.getFrame(i), framesMemoryManager.getFrameStartOffset(i),
-                    framesMemoryManager.getFrameSize(i));
+            framesMemoryManager.getFrame(i, info);
+            fta.reset(info.getBuffer(), info.getStartOffset(), info.getLength());
             for (int t = 0; t < fta.getTupleCount(); t++) {
                 int id = parseTuple(fta.getBuffer(), fta.getTupleStartOffset(t) + fta.getFieldSlotsLength() + fta
                         .getFieldStartOffset(t, 0));
@@ -171,4 +172,4 @@
         return buffer.getInt(fieldStartOffset);
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableTupleMemoryManagerTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableTupleMemoryManagerTest.java
new file mode 100644
index 0000000..036cd41
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/buffermanager/VariableTupleMemoryManagerTest.java
@@ -0,0 +1,181 @@
+/*
+ * 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.hyracks.dataflow.std.buffermanager;
+
+import static org.junit.Assert.assertTrue;
+
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.hyracks.api.comm.FixedSizeFrame;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
+import org.apache.hyracks.dataflow.std.structures.TuplePointer;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VariableTupleMemoryManagerTest extends AbstractTupleMemoryManagerTest {
+    VariableDeletableTupleMemoryManager tupleMemoryManager;
+    final int EXTRA_BYTES_FOR_DELETABLE_FRAME = 4;
+
+    @Before
+    public void setup() {
+        VariableFramePool framePool = new VariableFramePool(Common.commonFrameManager, Common.BUDGET);
+        tupleMemoryManager = new VariableDeletableTupleMemoryManager(framePool, recordDescriptor);
+    }
+
+    @Test
+    public void testInsertTupleToMemoryManager() throws HyracksDataException {
+        int iTuplePerFrame = 3;
+        Map<Integer, Integer> mapPrepare = prepareFixedSizeTuples(iTuplePerFrame, EXTRA_BYTES_FOR_DELETABLE_FRAME, 0);
+        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferShouldAllSuccess();
+        assertEachTupleInFTAIsInBuffer(mapPrepare, mapInserted);
+    }
+
+    @Test
+    public void testReset() throws HyracksDataException {
+        testInsertVariableSizeTupleToMemoryManager();
+        tupleMemoryManager.reset();
+        testInsertTupleToMemoryManager();
+        tupleMemoryManager.reset();
+        testInsertVariableSizeTupleToMemoryManager();
+    }
+
+    @Test
+    public void testDeleteTupleInMemoryManager() throws HyracksDataException {
+        int iTuplePerFrame = 3;
+        Map<Integer, Integer> mapPrepare = prepareFixedSizeTuples(iTuplePerFrame, EXTRA_BYTES_FOR_DELETABLE_FRAME, 0);
+        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferShouldAllSuccess();
+        deleteRandomSelectedTuples(mapPrepare, mapInserted, 1);
+        assertEachTupleInFTAIsInBuffer(mapPrepare, mapInserted);
+    }
+
+    @Test
+    public void testReOrganizeSpace() throws HyracksDataException {
+        int iTuplePerFrame = 3;
+        Map<Integer, Integer> mapPrepare = prepareFixedSizeTuples(iTuplePerFrame, EXTRA_BYTES_FOR_DELETABLE_FRAME, 0);
+        Map<Integer, Integer> copyMap = new HashMap<>(mapPrepare);
+        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferShouldAllSuccess();
+        ByteBuffer buffer = deleteRandomSelectedTuples(mapPrepare, mapInserted, mapPrepare.size() / 2);
+        inFTA.reset(buffer);
+        //The deletable frame buffer will keep the deleted slot untouched, which will take more space.
+        // the reason is to not reuse the same TuplePointer outside.
+        Map<TuplePointer, Integer> mapInserted2 = insertInFTAToBufferMayNotAllSuccess();
+        assertTrue(mapInserted2.size() > 0);
+    }
+
+    @Test
+    public void testReOrganizeVariableSizeTuple() throws HyracksDataException {
+        Map<Integer, Integer> map = prepareVariableSizeTuples();
+        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferCouldFailForLargerTuples(map);
+        Map<Integer, Integer> copyMap = new HashMap<>(map);
+
+        ByteBuffer buffer = deleteRandomSelectedTuples(map, mapInserted, map.size() / 2);
+        inFTA.reset(buffer);
+
+        Map<TuplePointer, Integer> mapInserted2 = insertInFTAToBufferCouldFailForLargerTuples(copyMap);
+        Map<TuplePointer, Integer> mergedMap = new HashMap<>(mapInserted);
+        mergedMap.putAll(mapInserted2);
+
+        assertEachTupleInFTAIsInBuffer(copyMap, mergedMap);
+    }
+
+    @Test
+    public void testInsertVariableSizeTupleToMemoryManager() throws HyracksDataException {
+        Map<Integer, Integer> map = prepareVariableSizeTuples();
+        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferCouldFailForLargerTuples(map);
+        assertEachTupleInFTAIsInBuffer(map, mapInserted);
+    }
+
+    @Override
+    ITuplePointerAccessor getTupleAccessor() {
+        return tupleMemoryManager.createTupleAccessor();
+    }
+
+    private Map<TuplePointer, Integer> insertInFTAToBufferShouldAllSuccess() throws HyracksDataException {
+        Map<TuplePointer, Integer> tuplePointerIntegerMap = new HashMap<>();
+        for (int i = 0; i < inFTA.getTupleCount(); i++) {
+            TuplePointer tuplePointer = new TuplePointer();
+            assertTrue(tupleMemoryManager.insertTuple(inFTA, i, tuplePointer));
+            tuplePointerIntegerMap.put(tuplePointer,
+                    IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
+        }
+        return tuplePointerIntegerMap;
+    }
+
+    private Map<TuplePointer, Integer> insertInFTAToBufferMayNotAllSuccess() throws HyracksDataException {
+        Map<TuplePointer, Integer> tuplePointerIntegerMap = new HashMap<>();
+        for (int i = 0; i < inFTA.getTupleCount(); i++) {
+            TuplePointer tuplePointer = new TuplePointer();
+            if (!tupleMemoryManager.insertTuple(inFTA, i, tuplePointer)) {
+                break;
+            }
+            tuplePointerIntegerMap.put(tuplePointer,
+                    IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
+        }
+        return tuplePointerIntegerMap;
+    }
+
+    private Map<TuplePointer, Integer> insertInFTAToBufferCouldFailForLargerTuples(Map<Integer, Integer> map)
+            throws HyracksDataException {
+        Map<TuplePointer, Integer> tuplePointerIdMap = new HashMap<>();
+        int i = 0;
+        for (; i < inFTA.getTupleCount(); i++) {
+            TuplePointer tuplePointer = new TuplePointer();
+            if (!tupleMemoryManager.insertTuple(inFTA, i, tuplePointer)) {
+                break;
+            }
+            tuplePointerIdMap.put(tuplePointer,
+                    IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
+        }
+        for (; i < inFTA.getTupleCount(); i++) {
+            map.remove(IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
+        }
+        return tuplePointerIdMap;
+    }
+
+    private ByteBuffer deleteRandomSelectedTuples(Map<Integer, Integer> map, Map<TuplePointer, Integer> mapInserted,
+            int minNumOfRecordTobeDeleted)
+            throws HyracksDataException {
+        ByteBuffer buffer = ByteBuffer.allocate(Common.BUDGET);
+        FixedSizeFrame frame = new FixedSizeFrame(buffer);
+        FrameTupleAppender appender = new FrameTupleAppender();
+        appender.reset(frame, true);
+
+        assert (minNumOfRecordTobeDeleted < mapInserted.size());
+        int countDeleted = minNumOfRecordTobeDeleted + random.nextInt(mapInserted.size() - minNumOfRecordTobeDeleted);
+
+        ITuplePointerAccessor accessor = tupleMemoryManager.createTupleAccessor();
+        for (int i = 0; i < countDeleted; i++) {
+            Iterator<Map.Entry<TuplePointer, Integer>> iter = mapInserted.entrySet().iterator();
+            assert (iter.hasNext());
+            Map.Entry<TuplePointer, Integer> pair = iter.next();
+            accessor.reset(pair.getKey());
+            appender.append(accessor.getBuffer().array(), accessor.getTupleStartOffset(), accessor.getTupleLength());
+            map.remove(pair.getValue());
+            tupleMemoryManager.deleteTuple(pair.getKey());
+            iter.remove();
+        }
+        return buffer;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/file/CursorTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/file/CursorTest.java
new file mode 100644
index 0000000..c067313
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/file/CursorTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.hyracks.dataflow.std.file;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
+
+import org.junit.Assert;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class CursorTest extends TestCase {
+
+    /**
+     * Create the test case
+     *
+     * @param testName
+     *            name of the test case
+     */
+    public CursorTest(final String testName) {
+        super(testName);
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite() {
+        return new TestSuite(CursorTest.class);
+    }
+
+    /**
+     *
+     */
+    public void test() {
+        FileInputStream in = null;
+        BufferedReader reader = null;
+        try {
+            in = new FileInputStream(
+                    Paths.get(getClass().getResource("/data/beer.txt").toURI()).toAbsolutePath().toString());
+            reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
+            // skip header
+            final FieldCursorForDelimitedDataParser cursor = new FieldCursorForDelimitedDataParser(reader, ',', '"');
+            // get number of fields from header (first record is header)
+            cursor.nextRecord();
+            int numOfFields = 0;
+            int expectedNumberOfRecords = 7307;
+            while (cursor.nextField()) {
+                numOfFields++;
+            }
+
+            int recordNumber = 0;
+            while (cursor.nextRecord()) {
+                int fieldNumber = 0;
+                while (cursor.nextField()) {
+                    if (cursor.isDoubleQuoteIncludedInThisField) {
+                        cursor.eliminateDoubleQuote(cursor.buffer, cursor.fStart, cursor.fEnd - cursor.fStart);
+                        cursor.fEnd -= cursor.doubleQuoteCount;
+                    }
+                    fieldNumber++;
+                }
+                if ((fieldNumber > numOfFields) || (fieldNumber < numOfFields)) {
+                    System.err.println("Test case failed. Expected number of fields in each record is " + numOfFields
+                            + " and record number " + recordNumber + " was found to have " + fieldNumber);
+                    Assert.assertTrue(false);
+                }
+                recordNumber++;
+            }
+            if (recordNumber != expectedNumberOfRecords) {
+                System.err.println("Test case failed. Expected number of records is " + expectedNumberOfRecords
+                        + " and records was found to be " + recordNumber);
+                Assert.assertTrue(false);
+            } else {
+                System.err.println("TEST PASSED: " + recordNumber + " were lexed successfully.");
+            }
+        } catch (final Exception e) {
+            e.printStackTrace();
+            assert (false);
+        } finally {
+            try {
+                reader.close();
+            } catch (final IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramePoolTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramePoolTest.java
deleted file mode 100644
index 5eb350b..0000000
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableFramePoolTest.java
+++ /dev/null
@@ -1,220 +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.hyracks.dataflow.std.sort.buffermanager;
-
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.BUDGET;
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.MIN_FRAME_SIZE;
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.NUM_MIN_FRAME;
-import static org.apache.hyracks.dataflow.std.sort.buffermanager.Common.commonFrameManager;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-
-public class VariableFramePoolTest {
-
-    VariableFramePool pool;
-    @Before
-    public void setUp() throws Exception {
-
-        pool = new VariableFramePool(commonFrameManager, BUDGET);
-    }
-
-    @Test
-    public void testGetMinFrameSize() throws Exception {
-        assertEquals(MIN_FRAME_SIZE, commonFrameManager.getInitialFrameSize());
-        assertEquals(MIN_FRAME_SIZE, pool.getMinFrameSize());
-    }
-
-    @Test
-    public void testGetMemoryBudgetBytes() throws Exception {
-        assertEquals(BUDGET, pool.getMemoryBudgetBytes());
-    }
-
-    @Test
-    public void testAllocateUniformFrameShouldSuccess() throws Exception {
-        testAllocateAllSpacesWithMinFrames();
-        testAllocateShouldFailAfterAllSpaceGetUsed();
-        pool.reset();
-        testAllocateAllSpacesWithMinFrames();
-        pool.close();
-    }
-
-    @Test
-    public void testResetShouldReuseExistingFrames() throws HyracksDataException {
-        Set<?> set1 = testAllocateAllSpacesWithMinFrames();
-        pool.reset();
-        Set<?> set2 = testAllocateAllSpacesWithMinFrames();
-        assertEquals(set1, set2);
-        pool.close();
-    }
-
-    @Test
-    public void testCloseShouldNotReuseExistingFrames() throws HyracksDataException {
-        Set<?> set1 = testAllocateAllSpacesWithMinFrames();
-        pool.close();
-        Set<?> set2 = testAllocateAllSpacesWithMinFrames();
-        assertFalse(set1.equals(set2));
-        pool.close();
-    }
-
-    @Test
-    public void testShouldReturnLargerFramesIfFitOneIsUsed() throws HyracksDataException {
-        Set<?> set = testAllocateVariableFrames();
-        pool.reset();
-        testShouldFindTheMatchFrames(set);
-        pool.reset();
-
-        // allocate seq: 1, 1, 2, 3, 4
-        ByteBuffer placeBuffer = pool.allocateFrame(MIN_FRAME_SIZE);
-        assertTrue(set.contains(new ByteBufferPtr(placeBuffer)));
-        for (int i = 1; i <= 4 ; i++) {
-            ByteBuffer buffer = pool.allocateFrame(i * MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            assertTrue(set.contains(new ByteBufferPtr(buffer)));
-        }
-        assertNull(pool.allocateFrame(MIN_FRAME_SIZE));
-        pool.close();
-    }
-
-    @Test
-    public void testShouldMergeIfNoLargerFrames() throws HyracksDataException {
-        Set<?> set = testAllocateAllSpacesWithMinFrames();
-        pool.reset();
-        int chunks = 5;
-        for (int i = 0; i < NUM_MIN_FRAME; i+= chunks) {
-            ByteBuffer buffer = pool.allocateFrame(chunks * MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            assertTrue(!set.contains(new ByteBufferPtr(buffer)));
-        }
-    }
-
-    @Test
-    public void testUseMiddleSizeFrameAndNeedToMergeSmallAndBigger() throws HyracksDataException {
-        Set<?> set = testAllocateVariableFrames();
-        pool.reset();
-        // allocate seq: 3, 6, 1;
-        ByteBuffer buffer = pool.allocateFrame(3 * MIN_FRAME_SIZE);
-        assertTrue(set.contains(new ByteBufferPtr(buffer)));
-        buffer = pool.allocateFrame(6 * MIN_FRAME_SIZE);
-        assertFalse(set.contains(new ByteBufferPtr(buffer)));
-        buffer = pool.allocateFrame(1 * MIN_FRAME_SIZE);
-        assertTrue(set.contains(new ByteBufferPtr(buffer)));
-        assertEquals(5 * MIN_FRAME_SIZE, buffer.capacity());
-        pool.reset();
-    }
-
-    private void testAllocateShouldFailAfterAllSpaceGetUsed() throws HyracksDataException {
-        for (int i = 0; i < NUM_MIN_FRAME; i++) {
-            assertNull(pool.allocateFrame(MIN_FRAME_SIZE));
-        }
-    }
-
-    private HashSet<ByteBufferPtr> testAllocateAllSpacesWithMinFrames() throws HyracksDataException {
-        HashSet<ByteBufferPtr> set = new HashSet<>();
-        for (int i = 0; i < NUM_MIN_FRAME; i++) {
-            ByteBuffer buffer = pool.allocateFrame(MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            assertTrue(!set.contains(new ByteBufferPtr(buffer)));
-            set.add(new ByteBufferPtr(buffer));
-        }
-        return set;
-    }
-
-    /**
-     * Pool will become 1,2,3,4,5
-     *
-     * @throws HyracksDataException
-     */
-    private Set<ByteBufferPtr> testAllocateVariableFrames() throws HyracksDataException {
-        int budget = BUDGET;
-        int allocate = 0;
-        int i = 1;
-        Set<ByteBufferPtr> set = new HashSet<>();
-        while (budget - allocate >= i * MIN_FRAME_SIZE) {
-            ByteBuffer buffer = pool.allocateFrame(i * MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            set.add(new ByteBufferPtr(buffer));
-            allocate += i++ * MIN_FRAME_SIZE;
-        }
-        return set;
-    }
-
-    private void testShouldFindTheMatchFrames(Set<?> set) throws HyracksDataException {
-        pool.reset();
-        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
-
-        for (int i = 0; i < list.size(); i++) {
-            ByteBuffer buffer = pool.allocateFrame(list.get(i) * MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            assertTrue(set.contains(new ByteBufferPtr(buffer)));
-            assertEquals(list.get(i) * MIN_FRAME_SIZE, buffer.capacity());
-        }
-        pool.reset();
-        for (int i = list.size() - 1; i >= 0; i--) {
-            ByteBuffer buffer = pool.allocateFrame(list.get(i) * MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            assertTrue(set.contains(new ByteBufferPtr(buffer)));
-            assertEquals(list.get(i) * MIN_FRAME_SIZE, buffer.capacity());
-        }
-
-        Collections.shuffle(list);
-        pool.reset();
-        for (int i = 0; i < list.size(); i++) {
-            ByteBuffer buffer = pool.allocateFrame(list.get(i) * MIN_FRAME_SIZE);
-            assertNotNull(buffer);
-            assertTrue(set.contains(new ByteBufferPtr(buffer)));
-            assertEquals(list.get(i) * MIN_FRAME_SIZE, buffer.capacity());
-        }
-
-    }
-
-    public static class ByteBufferPtr {
-        ByteBuffer bytebuffer;
-
-        public ByteBufferPtr(ByteBuffer buffer) {
-            bytebuffer = buffer;
-        }
-
-        @Override
-        public int hashCode() {
-            return bytebuffer.hashCode();
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            return this.bytebuffer == ((ByteBufferPtr) obj).bytebuffer;
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableTupleMemoryManagerTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableTupleMemoryManagerTest.java
deleted file mode 100644
index 61b29fd..0000000
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/buffermanager/VariableTupleMemoryManagerTest.java
+++ /dev/null
@@ -1,234 +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.hyracks.dataflow.std.sort.buffermanager;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Random;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.apache.hyracks.api.comm.FixedSizeFrame;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
-import org.apache.hyracks.dataflow.std.sort.Utility;
-import org.apache.hyracks.dataflow.std.structures.TuplePointer;
-
-public class VariableTupleMemoryManagerTest {
-    ISerializerDeserializer[] fieldsSerDer = new ISerializerDeserializer[] {
-            IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
-    RecordDescriptor recordDescriptor = new RecordDescriptor(fieldsSerDer);
-    ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(recordDescriptor.getFieldCount());
-    VariableTupleMemoryManager tupleMemoryManager;
-    FrameTupleAccessor inFTA = new FrameTupleAccessor(recordDescriptor);
-    Random random = new Random(System.currentTimeMillis());
-
-    @Before
-    public void setup() {
-        VariableFramePool framePool = new VariableFramePool(Common.commonFrameManager, Common.BUDGET);
-        tupleMemoryManager = new VariableTupleMemoryManager(framePool, recordDescriptor);
-    }
-
-    @Test
-    public void testInsertTupleToMemoryManager() throws HyracksDataException {
-        int iTuplePerFrame = 3;
-        Map<Integer, Integer> mapPrepare = prepareFixedSizeTuples(iTuplePerFrame);
-        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferShouldAllSuccess();
-        assertEachTupleInFTAIsInBuffer(mapPrepare, mapInserted);
-    }
-
-    @Test
-    public void testReset() throws HyracksDataException {
-        testInsertVariableSizeTupleToMemoryManager();
-        tupleMemoryManager.reset();
-        testInsertTupleToMemoryManager();
-        tupleMemoryManager.reset();
-        testInsertVariableSizeTupleToMemoryManager();
-    }
-
-    @Test
-    public void testDeleteTupleInMemoryManager() throws HyracksDataException {
-        int iTuplePerFrame = 3;
-        Map<Integer, Integer> map = prepareFixedSizeTuples(iTuplePerFrame);
-        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferShouldAllSuccess();
-        deleteRandomSelectedTuples(map, mapInserted, 1);
-        assertEachTupleInFTAIsInBuffer(map, mapInserted);
-    }
-
-    @Test
-    public void testReOrganizeSpace() throws HyracksDataException {
-        int iTuplePerFrame = 3;
-        Map<Integer, Integer> map = prepareFixedSizeTuples(iTuplePerFrame);
-        Map<Integer, Integer> copyMap = new HashMap<>(map);
-        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferShouldAllSuccess();
-        ByteBuffer buffer = deleteRandomSelectedTuples(map, mapInserted, map.size() / 2);
-        inFTA.reset(buffer);
-        Map<TuplePointer, Integer> mapInserted2 = insertInFTAToBufferShouldAllSuccess();
-        Map<TuplePointer, Integer> mergedMap = new HashMap<>(mapInserted);
-        mergedMap.putAll(mapInserted2);
-        assertEachTupleInFTAIsInBuffer(copyMap, mergedMap);
-    }
-
-    @Test
-    public void testReOrganizeVariableSizeTuple() throws HyracksDataException {
-        Map<Integer, Integer> map = prepareVariableSizeTuples();
-        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferCouldFailForLargerTuples(map);
-        Map<Integer, Integer> copyMap = new HashMap<>(map);
-
-        ByteBuffer buffer = deleteRandomSelectedTuples(map, mapInserted, map.size() / 2);
-        inFTA.reset(buffer);
-
-        Map<TuplePointer, Integer> mapInserted2 = insertInFTAToBufferCouldFailForLargerTuples(copyMap);
-        Map<TuplePointer, Integer> mergedMap = new HashMap<>(mapInserted);
-        mergedMap.putAll(mapInserted2);
-
-        assertEachTupleInFTAIsInBuffer(copyMap, mergedMap);
-    }
-
-    @Test
-    public void testInsertVariableSizeTupleToMemoryManager() throws HyracksDataException {
-        Map<Integer, Integer> map = prepareVariableSizeTuples();
-        Map<TuplePointer, Integer> mapInserted = insertInFTAToBufferCouldFailForLargerTuples(map);
-        assertEachTupleInFTAIsInBuffer(map, mapInserted);
-    }
-
-    private void assertEachTupleInFTAIsInBuffer(Map<Integer, Integer> map, Map<TuplePointer, Integer> mapInserted) {
-        ITupleBufferAccessor accessor = tupleMemoryManager.getTupleAccessor();
-        for (Map.Entry<TuplePointer, Integer> entry : mapInserted.entrySet()) {
-            accessor.reset(entry.getKey());
-            int dataLength = map.get(entry.getValue());
-            assertEquals((int) entry.getValue(),
-                    IntSerDeUtils.getInt(accessor.getTupleBuffer().array(), accessor.getAbsFieldStartOffset(0)));
-            assertEquals(dataLength, accessor.getTupleLength());
-        }
-        assertEquals(map.size(), mapInserted.size());
-    }
-
-    private Map<Integer, Integer> prepareFixedSizeTuples(int tuplePerFrame) throws HyracksDataException {
-        Map<Integer, Integer> dataSet = new HashMap<>();
-        ByteBuffer buffer = ByteBuffer.allocate(Common.BUDGET);
-        FixedSizeFrame frame = new FixedSizeFrame(buffer);
-        FrameTupleAppender appender = new FrameTupleAppender();
-        appender.reset(frame, true);
-
-        int sizePerTuple = (Common.MIN_FRAME_SIZE - 1 - 4 - tuplePerFrame * 4 - 4) / tuplePerFrame;
-        int sizeChar = sizePerTuple - fieldsSerDer.length * 4 - 4 - 4;
-        assert (sizeChar > 0);
-        for (int i = 0; i < Common.NUM_MIN_FRAME * tuplePerFrame; i++) {
-            tupleBuilder.reset();
-            tupleBuilder.addField(fieldsSerDer[0], i);
-            tupleBuilder.addField(fieldsSerDer[1], Utility.repeatString('a', sizeChar));
-            assertTrue(appender.append(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
-                    tupleBuilder.getSize()));
-            dataSet.put(i, tupleBuilder.getSize() + tupleBuilder.getFieldEndOffsets().length * 4);
-        }
-        inFTA.reset(buffer);
-        return dataSet;
-    }
-
-    private Map<Integer, Integer> prepareVariableSizeTuples() throws HyracksDataException {
-        Map<Integer, Integer> dataSet = new HashMap<>();
-        ByteBuffer buffer = ByteBuffer.allocate(Common.BUDGET);
-        FixedSizeFrame frame = new FixedSizeFrame(buffer);
-        FrameTupleAppender appender = new FrameTupleAppender();
-        appender.reset(frame, true);
-
-        for (int i = 0; true; i++) {
-            tupleBuilder.reset();
-            tupleBuilder.addField(fieldsSerDer[0], i);
-            tupleBuilder.addField(fieldsSerDer[1], Utility.repeatString('a', i));
-            if (!appender.append(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray(), 0,
-                    tupleBuilder.getSize())) {
-                break;
-            }
-            dataSet.put(i, tupleBuilder.getSize() + tupleBuilder.getFieldEndOffsets().length * 4);
-        }
-        inFTA.reset(buffer);
-        return dataSet;
-    }
-
-    private Map<TuplePointer, Integer> insertInFTAToBufferShouldAllSuccess() throws HyracksDataException {
-        Map<TuplePointer, Integer> tuplePointerIntegerMap = new HashMap<>();
-        for (int i = 0; i < inFTA.getTupleCount(); i++) {
-            TuplePointer tuplePointer = new TuplePointer();
-            assertTrue(tupleMemoryManager.insertTuple(inFTA, i, tuplePointer));
-            tuplePointerIntegerMap.put(tuplePointer,
-                    IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
-        }
-        return tuplePointerIntegerMap;
-    }
-
-    private Map<TuplePointer, Integer> insertInFTAToBufferCouldFailForLargerTuples(Map<Integer, Integer> map)
-            throws HyracksDataException {
-        Map<TuplePointer, Integer> tuplePointerIdMap = new HashMap<>();
-        int i = 0;
-        for (; i < inFTA.getTupleCount(); i++) {
-            TuplePointer tuplePointer = new TuplePointer();
-            if (!tupleMemoryManager.insertTuple(inFTA, i, tuplePointer)) {
-                break;
-            }
-            tuplePointerIdMap.put(tuplePointer,
-                    IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
-        }
-        for (; i < inFTA.getTupleCount(); i++) {
-            map.remove(IntSerDeUtils.getInt(inFTA.getBuffer().array(), inFTA.getAbsoluteFieldStartOffset(i, 0)));
-        }
-        return tuplePointerIdMap;
-    }
-
-    private ByteBuffer deleteRandomSelectedTuples(Map<Integer, Integer> map, Map<TuplePointer, Integer> mapInserted,
-            int minNumOfRecordTobeDeleted)
-            throws HyracksDataException {
-        ByteBuffer buffer = ByteBuffer.allocate(Common.BUDGET);
-        FixedSizeFrame frame = new FixedSizeFrame(buffer);
-        FrameTupleAppender appender = new FrameTupleAppender();
-        appender.reset(frame, true);
-
-        assert (minNumOfRecordTobeDeleted < mapInserted.size());
-        int countDeleted = minNumOfRecordTobeDeleted + random.nextInt(mapInserted.size() - minNumOfRecordTobeDeleted);
-
-        ITupleBufferAccessor accessor = tupleMemoryManager.getTupleAccessor();
-        for (int i = 0; i < countDeleted; i++) {
-            Iterator<Map.Entry<TuplePointer, Integer>> iter = mapInserted.entrySet().iterator();
-            assert (iter.hasNext());
-            Map.Entry<TuplePointer, Integer> pair = iter.next();
-            accessor.reset(pair.getKey());
-            appender.append(accessor.getTupleBuffer().array(), accessor.getTupleStartOffset(),
-                    accessor.getTupleLength());
-            map.remove(pair.getValue());
-            tupleMemoryManager.deleteTuple(pair.getKey());
-            iter.remove();
-        }
-        return buffer;
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
index cc52b78..863f778 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/sort/util/DeletableFrameTupleAppenderTest.java
@@ -25,9 +25,6 @@
 import java.nio.ByteBuffer;
 
 import org.apache.commons.lang3.ArrayUtils;
-import org.junit.Before;
-import org.junit.Test;
-
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
@@ -36,12 +33,15 @@
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.util.IntSerDeUtils;
 import org.apache.hyracks.dataflow.std.sort.Utility;
+import org.apache.hyracks.util.string.UTF8StringUtil;
+import org.junit.Before;
+import org.junit.Test;
 
 public class DeletableFrameTupleAppenderTest {
     DeletableFrameTupleAppender appender;
     ISerializerDeserializer[] fields = new ISerializerDeserializer[] {
             IntegerSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(),
     };
     RecordDescriptor recordDescriptor = new RecordDescriptor(fields);
     ArrayTupleBuilder builder = new ArrayTupleBuilder(recordDescriptor.getFieldCount());
@@ -90,7 +90,8 @@
     }
 
     int assertTupleIsExpected(int i, int dataOffset) {
-        int tupleLength = 2 * 4 + 4 + 2 + i + 1;
+        int lenStrMeta = UTF8StringUtil.getNumBytesToStoreLength(i);
+        int tupleLength = 2 * 4 + 4 + lenStrMeta + i + 1;
         assertEquals(dataOffset, appender.getTupleStartOffset(i));
         assertEquals(tupleLength, appender.getTupleLength(i));
 
@@ -99,7 +100,7 @@
         assertEquals(i + 1,
                 IntSerDeUtils.getInt(appender.getBuffer().array(), appender.getAbsoluteFieldStartOffset(i, 0)));
         assertEquals(dataOffset + 2 * 4 + 4, appender.getAbsoluteFieldStartOffset(i, 1));
-        assertEquals(2 + i + 1, appender.getFieldLength(i, 1));
+        assertEquals(lenStrMeta + i + 1, appender.getFieldLength(i, 1));
         return tupleLength;
     }
 
@@ -234,4 +235,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinHeapTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinHeapTest.java
index f9638b6..1a5fba3 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinHeapTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinHeapTest.java
@@ -103,4 +103,4 @@
     }
 
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinMaxHeapTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinMaxHeapTest.java
index d46d0c9..1c7baa5 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinMaxHeapTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/MinMaxHeapTest.java
@@ -110,4 +110,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTableTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTableTest.java
new file mode 100644
index 0000000..5893f35
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/structures/SerializableHashTableTest.java
@@ -0,0 +1,94 @@
+/*
+ * 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.hyracks.dataflow.std.structures;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.control.nc.resources.memory.FrameManager;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SerializableHashTableTest {
+
+    SerializableHashTable nsTable;
+    final int NUM_PART = 101;
+    TuplePointer pointer = new TuplePointer(0, 0);
+    final int num = 1000;
+
+    @Before
+    public void setup() throws HyracksDataException {
+        nsTable = new SerializableHashTable(NUM_PART, new FrameManager(256));
+    }
+
+    @Test
+    public void testBatchDeletePartition() throws Exception {
+        testInsert();
+        for (int i = 0; i < NUM_PART; i++) {
+            nsTable.delete(i);
+            assertFalse(nsTable.getTuplePointer(i, 0, pointer));
+            assertEquals(0, nsTable.getTupleCount(i));
+
+            for (int j = i; j < num; j += NUM_PART) {
+                pointer.reset(j, j);
+                nsTable.insert(i, pointer);
+            }
+
+            assertGetValue();
+        }
+    }
+
+    @Test
+    public void testInsert() throws Exception {
+        for (int i = 0; i < num; i++) {
+            pointer.reset(i, i);
+            nsTable.insert(i % NUM_PART, pointer);
+        }
+        assertGetValue();
+    }
+
+    private void assertGetValue() {
+        int loop = 0;
+        for (int i = 0; i < num; i++) {
+            assertTrue(nsTable.getTuplePointer(i % NUM_PART, loop, pointer));
+            assertTrue(pointer.frameIndex == i);
+            if (i % NUM_PART == NUM_PART - 1) {
+                loop++;
+            }
+        }
+        for (int i = 0; i < NUM_PART; i++) {
+            assertTrue(nsTable.getTupleCount(i) == 10 || nsTable.getTupleCount(i) == 9);
+        }
+
+    }
+
+    @Test
+    public void testGetCount() throws Exception {
+        assertAllPartitionsCountIsZero();
+    }
+
+    private void assertAllPartitionsCountIsZero() {
+        for (int i = 0; i < NUM_PART; i++) {
+            assertEquals(0, nsTable.getTupleCount(i));
+        }
+    }
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/test/util/SelectionTreeTest.java b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/test/util/SelectionTreeTest.java
index b1af16a..213f573 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/test/util/SelectionTreeTest.java
+++ b/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/test/util/SelectionTreeTest.java
@@ -70,4 +70,4 @@
             return true;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/test/resources/data/beer.txt b/hyracks/hyracks-dataflow-std/src/test/resources/data/beer.txt
new file mode 100644
index 0000000..f42700a
--- /dev/null
+++ b/hyracks/hyracks-dataflow-std/src/test/resources/data/beer.txt
@@ -0,0 +1,7308 @@
+id,flags,expiration,cas,value,rev,vbid,dtype
+alameda_brewhouse,0,0,244368670720,"{""name"":""Alameda Brewhouse"",""city"":""Portland"",""state"":""Oregon"",""code"":""97213"",""country"":""United States"",""phone"":""1-503-460-9025"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4765 NE Fremont""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.5484,""lon"":-122.619}}",1,30,1
+abbey_wright_brewing_valley_inn,0,0,244371881984,"{""name"":""Abbey Wright Brewing/Valley Inn"",""city"":""Williamsport"",""state"":""Pennsylvania"",""code"":""17702"",""country"":""United States"",""phone"":""570.326.3383"",""website"":""http://www.valleyinnonline.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""204 Valley Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2225,""lon"":-77.0369}}",1,36,1
+allguer_brauhaus_ag_kempten,0,0,244377518080,"{""name"":""Allguer Brauhaus AG Kempten"",""city"":""Kempten"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)831-/-2050-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Beethovenstrae 7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.7487,""lon"":10.5694}}",1,51,1
+ali_i_brewing,0,0,244368670721,"{""name"":""Ali`i Brewing"",""city"":""Honolulu"",""state"":""Hawaii"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":21.3069,""lon"":-157.858}}",1,30,1
+asheville_pizza_and_brewing_co,0,0,244371947520,"{""name"":""Asheville Pizza and Brewing Co."",""city"":""Asheville"",""state"":""North Carolina"",""code"":""28804"",""country"":""United States"",""phone"":""(828) 254-1281"",""website"":""http://www.ashevillepizza.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Asheville Brewpub, Brewery, Movie Theater and Pizzeria all rolled into 2 great places to meet and eat. Award winning beer and award winning pizza."",""address"":[""675 Merrimon Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.6221,""lon"":-82.5536}}",1,36,1
+amstel_brouwerij-amstel_light,0,0,244377583616,"{""name"":""Amstel Light"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amstel_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,51,1
+allagash_brewing-allagash_fluxus_09,0,0,244368736256,"{""name"":""Allagash Fluxus 09"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,30,1
+atwater_block_brewing-dirty_blond,0,0,244372013056,"{""name"":""Dirty Blond"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Made with unmalted wheat, coriander and orange peel to help you live smart and enjoy everyday!"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,36,1
+andechser_klosterbrauerei,0,0,244377649152,"{""name"":""Andechser Klosterbrauerei"",""city"":""Andechs"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8152-/-376-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Bergstrae 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.9775,""lon"":11.185}}",1,51,1
+allentown_brew_works,0,0,244368736257,"{""name"":""Allentown Brew Works"",""city"":""Allentown"",""state"":""Pennsylvania"",""code"":""18101"",""country"":""United States"",""phone"":""610.433.7777"",""website"":""http://www.thebrewworks.com/allentown-brewworks/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Allentown Brew Works is housed inside the historic Harold's Furniture Building at 812 W Hamilton Street. Years in the making, the new Allentown restaurant and brewery are part of the continuing vision of the Fegley family that established the original Bethlehem Brew Works in 1998. Proud to be part of the resurging downtown, the 400 seat restaurant is a testament to the vibrant heartbeat that thrives in this Queen City. Offering two and a half levels of dining, plus state of the art banquet facilities in The Hamilton Room, and multiple bars offering different atmospheres, as well as an outdoor casual Biergarten and a new seductive lower level lounge � Silk."",""address"":[""814 W Hamilton St""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.6016,""lon"":-75.474}}",1,30,1
+atwater_block_brewing-dunkel,0,0,244372013057,"{""name"":""Dunkel"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our malty, sweet dark lager is a hometown favorite. Our Dunkel is packed with subtle roasted malt flavors without the excessive bitterness and heaviness of many dark beers and has a balanced hop finish.\r\n\r\nGABF Gold Winner"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+anheuser_busch-budweiser,0,0,244377649153,"{""name"":""Budweiser"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,51,1
+allguer_brauhaus_ag_kempten-bayrisch_hell,0,0,244368801792,"{""name"":""Bayrisch Hell"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allguer_brauhaus_ag_kempten"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+atwater_block_brewing-pilsner,0,0,244372078592,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+arcadia_brewing-india_pale_ale,0,0,244377649154,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+american_river_brewing,0,0,244368801793,"{""name"":""American River Brewing"",""city"":""Auburn"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.8966,""lon"":-121.077}}",1,30,1
+atwater_block_brewing-x_line,0,0,244372078593,"{""name"":""X-Line"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+august_schell_brewing-caramel_bock,0,0,244377714688,"{""name"":""Caramel Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""august_schell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+anderson_valley_brewing-summer_solstice_cerveza_crema,0,0,244368867328,"{""name"":""Summer Solstice Cerveza Crema"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""This copper colored ale is smooth, malty, and lightly sweet, with a delicate hint of spice for that oh-so-drinkable, extra velvety flavor.  The character is lighter in body than its cousin our wildly popular Winter Solstice Seasonal Ale.  This is a silky, creamy dream, perfect as a warm weather beer.\"""",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,30,1
+avery_brewing_company-czar_imperial_stout,0,0,244372078594,"{""name"":""Czar Imperial Stout"",""abv"":11.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+bbc_brewing_co_llc-dark_star,0,0,244377714689,"{""name"":""Dark Star"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bbc_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,51,1
+augusta_brewing-tannhauser,0,0,244368867329,"{""name"":""Tannhauser"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""augusta_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+bear_republic_brewery-apex,0,0,244372078595,"{""name"":""Apex"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Crafted with a blend of American and English malts and aggressively hopped with Pacific Northwest hops, this beer reflects what our brewers believe to be the Apex of IPA."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,36,1
+big_time_brewing-trombipulator,0,0,244377714690,"{""name"":""Trombipulator"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+augustiner_brau_munchen-weissbier,0,0,244368932864,"{""name"":""Weißbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""augustiner_brau_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,30,1
+bierbrouwerij_st_christoffel-robertus,0,0,244372078596,"{""name"":""Robertus"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_st_christoffel"",""updated"":""2010-07-22 20:00:20"",""description"":""Christoffel Robertus is a low-fermenting ruby-red beer, brewed in the Münchener-style. It is a malty, fresh beer with a light sweetness. The typical hop bitterness found in Blond, is very lightly present in Robertus. The use of an extensive amount of selected barley gives Robertus the special malty taste and aroma."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+boston_beer_company-samuel_adams_irish_red,0,0,244377780224,"{""name"":""Samuel Adams Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Malty and slightly sweet, balanced by earthy notes from the hops.  The gentle rain and fertile soil of Ireland helped inspire this style of ale, known for being remarkably balanced. Pale and Caramel malts give the beer its rich, deep red color and distinctive caramel flavor. The sweetness of the malt is pleasantly balanced by a pronounced hop bitterness and an earthy note from the East Kent Goldings hops. Samuel Adams® Irish Red finishes smooth and leaves you wanting to take another sip."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,51,1
+baron_brewing_company-baron_pilsner,0,0,244368932865,"{""name"":""Baron Pilsner"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""baron_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our pilsner is a traditional Northern German Style Pilsner. It has a fantastic malty aroma with a slight spice from the hops. The head is brilliant white and floats on the clean pale lager. The sparkling mouthfeel gives way to a soft malt sweetness that is followed by a long, dry, crisp finish. The balanced clean finish taunts the mouth to take another drink. Lagered for a minimum of 8-12 weeks to ensure smoothness and drinkability.\r\n\r\nAll ingredients for the beer are imported from Germany. Brewed in accordance to the German Beer Purity Law (Reinheitsgebot) of 1516."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,30,1
+big_buck_brewery_and_steakhouse_2-stout,0,0,244372144128,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_buck_brewery_and_steakhouse_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+brasserie_de_saint_sylvestre-3_monts,0,0,244377780225,"{""name"":""3 Monts"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_saint_sylvestre"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+bavaria-club_colombia,0,0,244368932866,"{""name"":""Club Colombia"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bavaria"",""updated"":""2010-07-22 20:00:20"",""description"":""La mejor cerveza de Colombia.""}",1,30,1
+bootleggers_steakhouse_and_brewery-34th_street_porter,0,0,244372144129,"{""name"":""34th Street Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bootleggers_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,36,1
+brasserie_des_gants,0,0,244377780226,"{""name"":""Brasserie des Gants"",""city"":""Irchonwelz"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-068-28-79-36"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""rue du Castel, 19""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.6204,""lon"":3.7592}}",1,51,1
+bear_republic_brewery-big_bear_black_stout,0,0,244368998400,"{""name"":""Big Bear Black Stout"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Big Bear, as the name implies, is a hefty, black, Russian Imperial-style stout. This bold stout boasts a rich, caramel sweetness lavished by a robust, deep-roasted heartiness you can sink your teeth into. ...Big Bear's bold flavors are produced using a blend of Belgian and English roasted barley and crystal malts. Some unique flavors come forth in the malt character. ...Louisiana sweet molasses and dark brown sugar. This dark brew is well hopped with Chinook and Cascade hops, which are somewhat, masked by the malt. This is a balanced bold brew boasting an A.V.B. of 8.1% that can creep up on you, \""so don't get mauled\"". It has a dry roasted quality that masks its' high alchohol content, so drink responsibly. 2004 California State Fair, Silver Medal Winner; 2002 World Beer Cup, Gold Medal Winner; \r\n2002 Annual Bistro Beer Festival, Hayward, Gold Medal Winner; 2001 North American Brewers' Award, Honorable Mention - og 1.076, ABV 8.1%, IBU 68."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,30,1
+bootleggers_steakhouse_and_brewery,0,0,244372144130,"{""name"":""Bootleggers Steakhouse and Brewery"",""city"":""Bakersfield"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.3733,""lon"":-119.019}}",1,36,1
+brasserie_du_benin-ngoma_awooyo_special,0,0,244377780227,"{""name"":""Ngoma Awooyo Special"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_du_benin"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+berliner_kindl_brauerei_ag,0,0,244368998401,"{""name"":""Berliner Kindl Brauerei AG"",""city"":""Berlin"",""state"":""Berlin"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)30-/-68992-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Werbellinstrasse 50""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":52.4793,""lon"":13.4293}}",1,30,1
+boston_beer_company-samuel_adams_scotch_ale,0,0,244372144131,"{""name"":""Samuel Adams Scotch Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a brew for adventurous beer drinkers. It is brewed with four malts: two row pale Harrington, Munich malt, chocolate malt, and a rare peat smoked malt commonly used by distillers of Scotch malt whiskey. This unique malt gives Samuel Adams® Scotch Ale its distinct, subtle smoky character and deep amber hue. Samuel Adams® Scotch Ale is brewed using traditional English hops, Goldings and Fuggles. This is a big brew dominated by malt flavors and aromas, rich and full bodied, slightly sweet. Its layered malt complexity lingers to a smooth and silky finish."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,36,1
+brauerei_schwelm-hefe_weizen,0,0,244495941632,"{""name"":""Hefe-Weizen"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_schwelm"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,51,1
+21st_amendment_brewery_cafe-amendment_pale_ale,0,0,244375420928,"{""name"":""Amendment Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich golden hue color. Floral hop with sweet malt aroma. Medium mouth feel with malt sweetness, hop quenching flavor and well-balanced bitterness."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+bill_s_tavern_brewhouse-thundermuck_stout,0,0,244369063936,"{""name"":""Thundermuck Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bill_s_tavern_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+boulder_beer_company-gabf_25th_year_beer,0,0,244372209664,"{""name"":""GABF 25th Year Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,36,1
+brewer_s_art-proletary,0,0,244495941633,"{""name"":""Proletary"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewer_s_art"",""updated"":""2010-07-22 20:00:20"",""description"":""Black, smooth and easy to drink, this is a beer for the people!""}",1,51,1
+alesmith_brewing-old_numbskull_2003,0,0,244375420929,"{""name"":""Old Numbskull 2003"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+birrificia_le_baladin-nora,0,0,244369063937,"{""name"":""Nora"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birrificia_le_baladin"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+brasserie_des_cimes-yeti,0,0,244372209665,"{""name"":""Yeti"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_des_cimes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+brewmasters_restaurant_and_brewery_south,0,0,244495941634,"{""name"":""Brewmasters Restaurant and Brewery South"",""city"":""Kenosha"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.5847,""lon"":-87.8212}}",1,51,1
+amherst_brewing_company-boltwood_bock,0,0,244375420930,"{""name"":""Boltwood Bock"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Light in color, full bodied and very malty, this lager has a toasted malt flavor. Brewed in February and usually on tap by May with a keg of the previous year's batch."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,45,1
+bj_s_restaurant_and_brewery-p_m_porter,0,0,244369063938,"{""name"":""P.M. Porter"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,30,1
+brasserie_du_bocq-triple_moine,0,0,244372275200,"{""name"":""Triple Moine"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_du_bocq"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+brouwerij_abdij_saint_sixtus-trappist_westvleteren_12,0,0,244496007168,"{""name"":""Trappist Westvleteren 12"",""abv"":11.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_abdij_saint_sixtus"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian beer has an everlasting tast.  It has been choosen as the best beer in the world for several years!"",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,51,1
+anderson_valley_brewing-nitro_stout,0,0,244375420931,"{""name"":""Nitro Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+bj_s_restaurant_and_brewery-piranha_pale_ale,0,0,244369129472,"{""name"":""Piranha Pale Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+brasserie_dupont,0,0,244488732672,"{""name"":""Brasserie Dupont"",""city"":""Tourpes"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-069-67-10-66"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Basse 5""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.5718,""lon"":3.6508}}",1,36,1
+brouwerij_bavik_de_brabandere-petrus_aged_pale,0,0,244496007169,"{""name"":""Petrus Aged Pale"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+bell_s_brewery_inc-batch_8000,0,0,244375486464,"{""name"":""Batch 8000"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""Batch 8,000 is part of our commemorative series celebrating our progress with special brews. Our 8,000th batch is a special recipe to be brewed only once. It is wheat ale spiced with Coriander, Orange Peel, and Paradise Seed. Best consumed fresh."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,45,1
+boulevard_brewing_company-single_wide_i_p_a,0,0,244369129473,"{""name"":""Single-Wide I.P.A."",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The latest addition to the Boulevard family of year-around beers, Single-Wide I.P.A. is our take on a style that originated in 18th century Great Britain. This American version -- inspired by our Smokestack Series Double-Wide I.P.A. -- boasts a heady combination of six varieties of hops, some of which were employed for dry-hopping."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,30,1
+brasserie_fantme,0,0,244488798208,"{""name"":""Brasserie Fantme"",""city"":""Soy"",""state"":""Luxembourg"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)86-47-70-44"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Pral 8""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.286,""lon"":5.5127}}",1,36,1
+brouwerij_de_gouden_boom-blanche_de_bruges,0,0,244496007170,"{""name"":""Blanche de Bruges"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_gouden_boom"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+boston_beer_company-samuel_adams_honey_porter,0,0,244375486465,"{""name"":""Samuel Adams Honey Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark, full flavored English porter with Scottish heather honey.  Samuel Adams® Honey Porter is a full-flavored, full-bodied English porter with a substantial roasted malt character, offering a smooth, rounded finish. This beer is brewed with traditional English Ale hops and is dry-hopped with East Kent Goldings, known for their spicy aroma and distinctive, earthy flavor. We brew Honey Porter with Scottish heather honey which balances the spiciness of the hops.\r\n\r\nThis brew is the perfect complement to glazed ham, spicy chili, and roasted vegetables like beets and carrots, which bring out the herbal notes found in the hops and the sweetness of the honey. Samuel Adams® Honey Porter also pairs well with rich desserts such as baklava and molasses cookies."",""style"":""Porter"",""category"":""Irish Ale""}",1,45,1
+brasserie_de_blaugies-biere_darbyste,0,0,244369129474,"{""name"":""Bière Darbyste"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_blaugies"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,30,1
+brasserie_la_caracole,0,0,244488798209,"{""name"":""Brasserie La Caracole"",""city"":""Falmignoul"",""state"":""Namur"",""code"":"""",""country"":""Belgium"",""phone"":""32-082-74-40-80"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Cte Marie-Thrse 86""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.2024,""lon"":4.8914}}",1,36,1
+brouwerij_nacional_balashi,0,0,244496072704,"{""name"":""Brouwerij Nacional Balashi"",""city"":"""",""state"":"""",""code"":"""",""country"":""Aruba"",""phone"":""297 854805"",""website"":""http://www.balashi.com/balashi/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,51,1
+boulevard_brewing_company-bully_porter,0,0,244375486466,"{""name"":""Bully! Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The intense flavors of dark-roasted malt in Boulevard’s rendition of the classic English porter are perfectly balanced by a generous and complex hop character. Bully! Porter’s robust nature makes it the ideal companion to a variety of foods, from seafood to chocolate."",""style"":""Porter"",""category"":""Irish Ale""}",1,45,1
+brasserie_de_brunehaut-brasserie_de_brunehaut_bio_biere_ambree_organic,0,0,244369195008,"{""name"":""Brasserie de Brunehaut Bio Bière Ambrée (Organic)"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""Amber copper color with a beige head.\r\nCaramel malt aromas reminiscent of vanilla, along with toffee, butterscotch and ripe fruits. Top-fermented and bottle-conditioned, this is a clean, refreshing regional 'artisan' beer.\r\nHazy amber to brown coloured beer, with a fluffy off-white head. Nice aroma of spices, yeast and oak.  The alcohol subtle. Flavour is moderately spicy and slightly fruity, with balanced hops. \r\nThis beer is certified organic."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,30,1
+brauerei_beck-st_pauli_girl_beer,0,0,244488863744,"{""name"":""St.Pauli Girl Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+brouwerij_sint_jozef,0,0,244496072705,"{""name"":""Brouwerij Sint-Jozef"",""city"":""Opitter"",""state"":""Limburg"",""code"":"""",""country"":""Belgium"",""phone"":""32-089-86-47-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Itterplein 19""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1168,""lon"":5.6464}}",1,51,1
+brasserie_de_tahiti-hinano,0,0,244375552000,"{""name"":""Hinano"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_tahiti"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+brasserie_ellezelloise-la_biere_des_collines_van_de_saisis,0,0,244486373376,"{""name"":""La Bière des Collines van de Saisis"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_ellezelloise"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+brauerei_beck,0,0,244488863745,"{""name"":""Brauerei Beck"",""city"":""Bremen"",""state"":""Bremen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)421-/-50940"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Am Deich 18-19""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":53.0787,""lon"":8.7901}}",1,36,1
+burgerbrau_wolnzach-hell,0,0,244496072706,"{""name"":""Hell"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burgerbrau_wolnzach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+brasserie_pietra,0,0,244492533760,"{""name"":""Brasserie Pietra"",""city"":""Furiani"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-04.95.30.14.70"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Route de la Marana""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":42.6483,""lon"":9.4529}}",1,45,1
+brasserie_grain_d_orge,0,0,244486504448,"{""name"":""Brasserie Grain D'Orge"",""city"":""Ronchin"",""state"":"""",""code"":"""",""country"":""France"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Once named Brasserie Jeanne D'Arc, this Brewery had changed their name due to change in management."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.6054,""lon"":3.0775}}",1,30,1
+brauerei_gbr_maisel_kg,0,0,244488863746,"{""name"":""Brauerei Gbr. Maisel KG"",""city"":""Bayreuth"",""state"":"""",""code"":""95445"",""country"":""Germany"",""phone"":""+49 (0) 9 21/4 01-0"",""website"":""http://www.maisel.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hindenburgstrasse 9""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.9477,""lon"":11.5659}}",1,36,1
+cains-fa,0,0,244496138240,"{""name"":""FA"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cains"",""updated"":""2011-05-17 03:15:54"",""description"":""FA is no small beer: despite its deceptively pale golden colour, it boasts a big, smooth flavour and strong punch. Brewed with the finest English malts, and conditioned in cask with dry hops to produce fresh hop aromas and a fuller flavour, delighting the mouth and stimulating the tongue."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,51,1
+brauhaus_johann_albrecht_konstanz-weizen,0,0,244492599296,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_konstanz"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,45,1
+breckenridge_brewery-471_extra_esb,0,0,244486504449,"{""name"":""471 Extra ESB"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+breckenridge_bbq_of_omaha-raspberry_porter,0,0,244488863747,"{""name"":""Raspberry Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_bbq_of_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+chama_river_brewing-rye_on,0,0,244496138241,"{""name"":""Rye On"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chama_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+brausttte_der_steirerbrau_aktiengesellschaft,0,0,244492664832,"{""name"":""Brausttte der Steirerbrau Aktiengesellschaft"",""city"":""Graz"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0316/502-3545"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Reiningshausstrae 1-7""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.0679,""lon"":15.4417}}",1,45,1
+brewery_budweiser_budvar,0,0,244486569984,"{""name"":""Brewery Budweiser Budvar"",""city"":"""",""state"":""Ceske Budejovice"",""code"":"""",""country"":""Czech Republic"",""phone"":"""",""website"":""http://www.budvar.cz/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":48.9739,""lon"":14.475}}",1,30,1
+breckenridge_brewery-autumn_ale,0,0,244488929280,"{""name"":""Autumn Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,36,1
+cherryland_brewing,0,0,244496138242,"{""name"":""Cherryland Brewing"",""city"":""Sturgeon Bay"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.8342,""lon"":-87.377}}",1,51,1
+brewdog_ltd-paradox_speyside,0,0,244492664833,"{""name"":""Paradox Speyside"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,45,1
+bridgeport_brewing-old_knucklehead_1992,0,0,244486569985,"{""name"":""Old Knucklehead 1992"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+brewery_de_troch-chapeau_exotic_lambic,0,0,244488994816,"{""name"":""Chapeau Exotic Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_de_troch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,36,1
+clipper_city_brewing_co-pale_ale,0,0,244496203776,"{""name"":""Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+brewery_creek_brewing-irish_stout,0,0,244492664834,"{""name"":""Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Guinness\"" is the prototype of all modern stouts. Many people, however, don't realize that there are different varieties of \""Guinness\"" brewed around the world. \""Draught Guinness* and \""Foreign Extra Stout\"" are the two primary types brewed in Ireland. Foreign Extra is the one I have emulated. It is closer in style to the London Porters of old than to modern stout. Very dark and rich, not as dry as Draught, about 6% abv and around 60 IBUs (that's hop bitterness). I used \""First Gold\"" hops because that's what I could get. Guinness use Nitrogen mixed with carbon dioxide to dispense their stout which adds to the creamy mouth-feel. BTW: The \""Imported\"" Guinness you buy here in the US comes from Canada. It could just as well be brewed in the US but the common wisdom in the brewing world is that Americans prefer \""imported\"" beers and will pay more for them."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+broughton_ales-kinmount_willie_stout,0,0,244486569986,"{""name"":""Kinmount Willie Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broughton_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+bridgeport_brewing-blue_heron_pale_ale,0,0,244488994817,"{""name"":""Blue Heron Pale Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+dark_horse_brewing_co-fore_smoked_stout,0,0,244496203777,"{""name"":""Fore Smoked Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with all malted barley and peat malt (smoked malt). This beer is full bodied with chocolate, roasted barley flavors, and a smokey almost BBQ finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,51,1
+brewmasters_restaurant_and_brewery_south-cherry_ice,0,0,244492730368,"{""name"":""Cherry Ice"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,45,1
+brouwerij_sterkens,0,0,244486569987,"{""name"":""Brouwerij Sterkens"",""city"":""Hoogstraten-Meer"",""state"":""Antwerpen"",""code"":"""",""country"":""Belgium"",""phone"":""32-03-317-00-50"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Meerdorp 20""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.4439,""lon"":4.7386}}",1,30,1
+bridgeport_brewing-bottle_conditioned_porter,0,0,244488994818,"{""name"":""Bottle Conditioned Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,36,1
+deschutes_brewery-bachelor_esb,0,0,244628062208,"{""name"":""Bachelor ESB"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Standing alone, distant from the Three Sisters mountains nestled to the north, Bachelor Butte was originally called \""Brother Jonathan\"" and then simply \""The Bachelor\"" before becoming widely known today as Mt. Bachelor."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,51,1
+bridgeport_brewing-esb,0,0,244492730369,"{""name"":""ESB"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+browar_okocim-o_k_beer,0,0,244486635520,"{""name"":""O.K. Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""browar_okocim"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+brooklyn_brewery-brooklyn_lager,0,0,244489060352,"{""name"":""Brooklyn Lager"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brooklyn Lager, the Brewery's flagship label, is New York's \""hometown\"" beer, brewed to a pre-Prohibition recipe that dates back to the days when Brooklyn was the brewing capital of the East Coast. Brooklyn Lager has won numerous awards. Wrote Michael Jackson in the Simon & Schuster Pocket Guide to Beer: \""The dry-hopped, fresh, flowery, firm, flavourful, Brooklyn Lager **-*** started well, in 1988, and has gained in character since.\""""}",1,36,1
+desnoes_geddes_ltd-dragon_stout,0,0,244628127744,"{""name"":""Dragon Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""desnoes_geddes_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,51,1
+brouwerij_oud_beersel-oude_gueuze_vielle,0,0,244492730370,"{""name"":""Oude Gueuze Vielle"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_oud_beersel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,45,1
+bull_bush_pub_brewery-royal_arms_ipa,0,0,244486635521,"{""name"":""Royal Arms IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,30,1
+brouwerij_bosteels-triple_karmeliet,0,0,244489060353,"{""name"":""Triple Karmeliet"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bosteels"",""updated"":""2010-07-22 20:00:20"",""description"":""LOOK:\r\nTripel Karmeliet is a very refi ned and complex golden-to-bronze brew with a fantastic creamy head. These characteristics derive not only from the grains used but also from restrained hopping with Styrians and the fruity nature (banana and vanilla) of the house yeast.\r\n\r\nSMELL:\r\nVery refined and complex. Hints of vanilla mixed with citrus aromas.\r\n\r\nTASTE:\r\nTripel Karmeliet has not only the lightness and freshness of wheat, but also the creaminess of oats together with a spicy lemony almost quinine\r\ndryness."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,36,1
+dix_barbecue_brewery-red_truck_ale,0,0,244628127745,"{""name"":""Red Truck Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dix_barbecue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,51,1
+brouwerij_van_den_bossche-kerst_pater_special_christmas_beer,0,0,244492795904,"{""name"":""Kerst Pater Special Christmas Beer"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_den_bossche"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+cains,0,0,244486701056,"{""name"":""Cains"",""city"":""Liverpool"",""state"":""Merseyside"",""code"":""L8 5XJ"",""country"":""United Kingdom"",""phone"":""01517098734"",""website"":""http://www.cains.co.uk/"",""type"":""brewery"",""updated"":""2011-05-17 03:05:10"",""description"":""Cains is a brewery in Liverpool, England, founded in 1858 by Irish immigrant Robert Cain. \n\nCain had begun his brewing career aged 24 when he purchased a pub and brewed his own ales. Within 25 years of founding his brewery, Cain had established over 200 pubs. Robert Cain passed away in 1907 and the brewery still lives on to this day. \n\nOne of the most iconic beer brands in the UK Cain's has gone from strength to strength since being taken over by Indian brothers Sudarghara and Ajmail Dusanj in 2002. Cains now exports it's famous beers worldwide to the USA, Denmark, China, Ireland, India and Australia."",""address"":[""Robert Cain Brewery"",""Stanhope St""]}",1,30,1
+brouwerij_sterkens-bokrijks_kruikenbier,0,0,244489060354,"{""name"":""Bokrijks Kruikenbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+dixie_brewing,0,0,244628193280,"{""name"":""Dixie Brewing"",""city"":""New Orleans"",""state"":""Louisiana"",""code"":""70119"",""country"":""United States"",""phone"":""1-504-822-8711"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2401 Tulane Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":29.9606,""lon"":-90.0871}}",1,51,1
+c_b_potts_of_cheyenne-big_horn_fort_collins_stout,0,0,244492795905,"{""name"":""Big Horn Fort Collins Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+caldera_brewing-caldera_ipa,0,0,244486701057,"{""name"":""Caldera IPA"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Available in 12 oz. cans and kegs.  An American-style India Pale Ale brewed with plenty of body and an assertive hop profile."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,30,1
+brouwerij_the_musketiers-troubadour,0,0,244489125888,"{""name"":""Troubadour"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_the_musketiers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+dogfish_head_craft_brewery-black_blue,0,0,244628258816,"{""name"":""Black & Blue"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A belgian-style Strong ale fermented with blackberries and blueberries."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,51,1
+captain_lawrence_brewing_company,0,0,244492795906,"{""name"":""Captain Lawrence Brewing Company"",""city"":""Pleasantville"",""state"":""New York"",""code"":""10570"",""country"":""United States"",""phone"":""914-741-BEER"",""website"":""http://www.captainlawrencebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Captain Lawrence beers are craft brewed in Pleasantville New York. We offer tastings and tours on Fridays from 4pm to 7pm, and Saturdays from 12pm  6pm."",""address"":[""99 Castleton Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.126,""lon"":-73.7896}}",1,45,1
+captain_lawrence_brewing_company-captin_lawrence_liquid_gold,0,0,244486701058,"{""name"":""Captin Lawrence Liquid Gold"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Don't let the golden color fool you - this isn't your father's lite beer!\r\n\r\nBrewed with imported German malts and US-grown hops, this beer is a full-flavored introduction to craft-brewed beer. We add the hops late in the boil, allowing you to enjoy the flavor and aroma of the hops without an aggressive bitterness."",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,30,1
+brouwerij_van_steenberge-ertvelds_wit,0,0,244489125889,"{""name"":""Ertvelds Wit"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+egan_brewing-1916_irish_stout,0,0,244628258817,"{""name"":""1916 Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,51,1
+carlow_brewing_company-o_hara_s_celtic_stout,0,0,244492861440,"{""name"":""O'Hara's Celtic Stout"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlow_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Unlike the image, does not have the creamy head like many Irish stouts (Beamish, Guinness, Murphys) and as a result lighter on the stomach and nice with a meal. Very distinctive taste which may put off those not accustomed to drinking stouts.I would recommend it for the more adventurous pallette.\r\n\r\nRoast barley comes through in the taste."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+carolina_brewery-lager,0,0,244486766592,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carolina_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+butterfield_brewing_1,0,0,244489125890,"{""name"":""Butterfield Brewing #1"",""city"":""Fresno"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.7477,""lon"":-119.772}}",1,36,1
+engel_brauerei_schwbisch_gmnd_lang,0,0,244628258818,"{""name"":""Engel Brauerei Schwbisch Gmnd Lang"",""city"":""Schwbisch Gmnd"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""D-73525 Schwbisch Gmnd""]}",1,51,1
+castle_springs_brewery,0,0,244492861441,"{""name"":""Castle Springs Brewery"",""city"":""Moultonborough"",""state"":""New Hampshire"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.7548,""lon"":-71.3967}}",1,45,1
+coastal_fog_brewing-brandenburg_gate_marzen,0,0,244486766593,"{""name"":""Brandenburg Gate Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coastal_fog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,30,1
+alaskan_brewing-alaskan_barley_wine_ale,0,0,244368277504,"{""name"":""Alaskan Barley Wine Ale"",""abv"":10.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Alaskan Barley Wine is produced in small batches each year. Typically this higher alcohol beverage is brewed in the spring, cellared in the tunnels of the Alaska-Juneau Gold Mine for the summer and retrieved in time for its release at the Great Alaska Beer and Barley Wine Festival in January. The cool tunnels of the mine shaft provide natural refrigeration and a prime environment for the aging process. \r\n\r\nLike a fine wine, Alaskan Barley Wine can be aged for years. The bottling of the 2007 vintage of Alaskan Barley Wine will allow individuals to age it to their liking. “We figured we’d leave it up to individuals as to how long to age their Alaskan Barley Wine,” said Quality Assurance Analyst Ryan Harvey. “Some people like barley wines fresh, and others store it for years.”"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,29,1
+climax_brewing_copmany-climax_ipa,0,0,244489191424,"{""name"":""Climax IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""This American-style, hop-driven beer starts with a citrus flavor, followed by two layers of caramel, and finishes on a hoppy note."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,36,1
+flat_earth_brewing_company-angry_planet_pale_ale,0,0,244628324352,"{""name"":""Angry Planet Pale Ale"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flat_earth_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+cervecera_cuauhtmoc_moctezuma-dos_equis_special_lager,0,0,244492926976,"{""name"":""Dos Equis Special Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+cooperstown_brewing_company-backyard_india_pale_ale,0,0,244486766594,"{""name"":""Backyard India Pale Ale"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooperstown_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Back Yard\"" is a golden India Pale Ale. Historically, ale shipped to India in the 19th Century was brewed to higher gravities so that it could mature during the long sea voyage. English brewers also hopped these ales heavily to protect them from spoiling. The term \""India pale Ale\"" or \""I.P.A.\"" is still used by brewers to denote a super-premium, hoppy pale ale style. Backyard IPA is no exception. English pale barley malt is predominant in this beer with just a small amount of crystal malt. It is well bittered with Cluster and Cascade hops and finished with a mix of local hop and larger amounts of Fuggle hop."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,30,1
+amherst_brewing_company-north_pleasant_pale_ale,0,0,244368343040,"{""name"":""North Pleasant Pale Ale"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Light gold in color, slightly malty and hoppy, with a mild flowery hop finish."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+climax_brewing_copmany-climax_oktoberfest,0,0,244489191425,"{""name"":""Climax Oktoberfest"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""Oktoberfest is typically available from August to November and has toasty caramel and malty flavor.  It is made from German Noble Hops and massive amounts of Münich Malt, which give it an orange color."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,36,1
+flossmoor_station_brewery-kilt_kicker_wee_heavy,0,0,244628324353,"{""name"":""Kilt Kicker Wee Heavy"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,51,1
+cervecera_hondurea-port_royal_export,0,0,244492926977,"{""name"":""Port Royal Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_hondurea"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+coors_brewing_golden_brewery-blue_moon_abbey_ale,0,0,244486766595,"{""name"":""Blue Moon Abbey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+anheuser_busch-michelob_ultra,0,0,244368343041,"{""name"":""Michelob Ultra"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+clipper_city_brewing_co-heavy_seas_prosit_imperial_oktoberfest_lager,0,0,244489191426,"{""name"":""Heavy Seas Prosit! Imperial Oktoberfest Lager"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Malt focused, made with five types of grain including Vienna and Munich malts – plus a secret extra malt that we use only in our Prosit! Consider this bomber to be the burly big brother to our Clipper City MarzHon, a three year in a row winner at the Great American Beer Festival. We’ve balanced the sweetness of the malt with three kinds of hops making this one of the boldest marzen style lagers you’ll ever try.\r\n\r\n5 Kinds of Malt, 3 Kinds of Hops\r\nestimated ABV 9% estimated IBU 25"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,36,1
+flying_dog_brewery-old_scratch_lager,0,0,244628324354,"{""name"":""Old Scratch Lager"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This dog enjoys his days in the sun... Old Scratch Amber Lager is a malty, mellow beer that is fermented at medium temperatures to develop both ale and lager characteristics. \""Gold Scratch\"" raises the standard in the amber lager category."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,51,1
+cooper_s_cave_ale_company,0,0,244492992512,"{""name"":""Cooper's Cave Ale Company"",""city"":""Glens Falls"",""state"":""New York"",""code"":""12801"",""country"":""United States"",""phone"":""518.792.0007"",""website"":""http://www.cooperscaveale.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Cooper's Cave Ale Company, Ltd. Micro Brewery is the realized goal of three ale lovers, Ed, Pat and Adrian Bethel. A passion for great English style ales led us to commercially produce small quantities on a brewing system which we built. We gladly welcome visitors to our brewery and tasting room, and now we welcome you to learn more about Cooper's Cave Ale Company."",""address"":[""2 Sagamore Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.3177,""lon"":-73.64}}",1,45,1
+coronado_brewing_company-outlet_stout,0,0,244486832128,"{""name"":""Outlet Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Extremely dark in color, with a malty flavor dominated by caramel and chocolate malts and a slight hoppy bitterness. This full-bodied ale has a nice smooth lasting finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+appalachian_brewing_company-hoppy_trails_india_pale_ale,0,0,244368408576,"{""name"":""Hoppy Trails India Pale Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This IPA is an exciting beer with a floral in aroma and an incredible hop flavor. The maltiness is increased (over a regular pale ale) to help balance the aggressive hop usage. This contributes to the higher alcohol content as well. \r\nWhen India was part of the British Empire, pale ale shipped to the troops would often spoil due to the rough voyage and temperature extremes. The brewers had a theory that if they loaded the beer with extra hops, the hops would preserve the beer. Of course, this added significantly to the beer’s flavor and aroma. When the troops returned to Britain, they had become \""hop-heads\"", appreciating the beauty of the hop \""over-influence\"". Regular pale ale was simply not enough anymore! A new beer style, India Pale Ale, had been created: an aggressively hoppy and now quite happy to be home pale ale."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,29,1
+coopers_brewery-coopers_best_extra_stout,0,0,244489256960,"{""name"":""Coopers Best Extra Stout"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Now here's a beer with punch! \r\n\r\nCoopers Best Extra Stout is a beacon for lovers of a hearty brew. With its robust flavour it is everything a stout should be. \r\n\r\nBrewed naturally using a top fermentation method, Coopers Stout's unique rich, dark texture comes from specially roasted black malt. \r\n\r\nCoopers Best Extra Stout contains no additives and no preservatives."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+founders_hill_brewing-founders_light,0,0,244628389888,"{""name"":""Founders Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_hill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+coronado_brewing_company-coronado_golden_ale,0,0,244493058048,"{""name"":""Coronado Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This golden colored ale is smooth, light in flavor, crisp and very similar to a European-style pilsner. Our Golden ale is delicately hopped with traditional pilsner style Czech Saaz hops. It is one of our most popular beers and considered our gateway beer."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,45,1
+crabtree_brewery,0,0,244486832129,"{""name"":""Crabtree Brewery"",""city"":""Greeley"",""state"":""Colorado"",""code"":""80631"",""country"":""United States"",""phone"":""[970] 356-0516"",""website"":""http://www.crabtreebrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Crabtree Brewing Company is dedicated to serving the environment, the community, our customers, and our valued employees.  Requiring the best ingredients to support unique premium beers.  Keeping a dynamic business mind while remaining modestly profitable.   Employing technology, embracing ethics, growing to meet the needs of our customers and employees, and having fun doing what we love�.Making Great Beer."",""address"":[""625 3rd St. #D""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.4313,""lon"":-104.688}}",1,30,1
+appalachian_brewing_company-mountain_lager,0,0,244368408577,"{""name"":""Mountain Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Dortmunder-Export style of beer was developed in Westfalen, Germany, and is a classic light lager with great character. This style boasts a light golden blonde color and exhibits a moderate hop palate. The finish of our Mountain Lager is rich yet mellow.\r\nOur brewers have developed this beer as a tribute to the Appalachian Mountains where we live and play."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+coronado_brewing_company-uptown_brown,0,0,244489256961,"{""name"":""Uptown Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,36,1
+frederick_brewing,0,0,244628389889,"{""name"":""Frederick Brewing"",""city"":""Frederick"",""state"":""Maryland"",""code"":""20176"",""country"":""United States"",""phone"":""1-888-258-7434"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4607 Wedgewood Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.3628,""lon"":-77.4265}}",1,51,1
+crane_river_brewpub_and_cafe-homestead_pale_ale,0,0,244493058049,"{""name"":""Homestead Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+dark_horse_brewing_co,0,0,244618821632,"{""name"":""Dark Horse Brewing Co."",""city"":""Marshall"",""state"":""Michigan"",""code"":""49068"",""country"":""United States"",""phone"":""269-781-9940"",""website"":""http://www.darkhorsebrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""511 S. Kalamazoo Ave.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.2667,""lon"":-84.9641}}",1,30,1
+barley_brothers_brewery_and_grill-tripppleberry_wheat,0,0,244368408578,"{""name"":""Tripppleberry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_brothers_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,29,1
+crane_river_brewpub_and_cafe-good_life_stout,0,0,244489256962,"{""name"":""Good Life Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+full_sail_brewing_1,0,0,244628455424,"{""name"":""Full Sail Brewing #1"",""city"":""Hood River"",""state"":""Oregon"",""code"":""97031"",""country"":""United States"",""phone"":""1-541-386-2281"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""506 Columbia Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.7103,""lon"":-121.515}}",1,51,1
+degroen_s_grill,0,0,244625637376,"{""name"":""DeGroen's Grill"",""city"":""Baltimore"",""state"":""Maryland"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.2904,""lon"":-76.6122}}",1,45,1
+de_halve_maan-straffe_hendrik_brugse,0,0,244618887168,"{""name"":""Straffe Hendrik Brugse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_halve_maan"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+barley_island_brewing-flat_belly_american_wheat,0,0,244368474112,"{""name"":""Flat Belly American Wheat"",""abv"":3.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+denver_chophouse_and_brewery-lucky_u_denver_special_bitter,0,0,244621705216,"{""name"":""Lucky U Denver Special Bitter"",""abv"":4.46,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+granite_city_food_brewery_saint_cloud-northern_light,0,0,244754808832,"{""name"":""Northern Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+dempsey_s_restaurant_brewery-holiday_wheat_bock,0,0,244625702912,"{""name"":""Holiday Wheat Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dempsey_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,45,1
+de_proef_brouwerij-lozen_boer_abt,0,0,244618887169,"{""name"":""Lozen Boer Abt"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+belhaven_brewery-st_andrews_ale,0,0,244368474113,"{""name"":""St. Andrews Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belhaven_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+desnoes_geddes_ltd,0,0,244621770752,"{""name"":""Desnoes & Geddes Ltd"",""city"":""Kingston"",""state"":"""",""code"":"""",""country"":""Jamaica"",""phone"":""1-876-923-9291"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""214 Spanish Town""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":33.9858,""lon"":-96.6515}}",1,36,1
+gray_brewing-honey_ale,0,0,244754874368,"{""name"":""Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+deschutes_brewery-mirror_mirror,0,0,244625702913,"{""name"":""Mirror Mirror"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Reserve Series romance all began with our first release of this limited-edition brew. Mirror Mirror, born of a double batch of Mirror Pond Pale Ale, is an inspired, barrel-aged barley wine layered with intriguing nuances. Explore this latest incarnation and enjoy its delicious complexity in every sip."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,45,1
+delafield_brewhaus-hops_and_glory_american_ale,0,0,244618887170,"{""name"":""Hops and Glory American Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+big_river_brewing-dry_stout,0,0,244368539648,"{""name"":""Dry Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,29,1
+dock_street_beer,0,0,244621770753,"{""name"":""Dock Street Beer"",""city"":""West Philly"",""state"":""Pennsylvania"",""code"":""19143"",""country"":""United States"",""phone"":""(215)-726-2337"",""website"":""http://www.dockstreetbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""701 S. 50th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9478,""lon"":-75.2229}}",1,36,1
+green_bay_brewing-hinterland_pale_ale,0,0,244754939904,"{""name"":""Hinterland Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+diamond_knot_brewery_alehouse-possession_porter,0,0,244625768448,"{""name"":""Possession Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,45,1
+dempsey_s_restaurant_brewery-golden_eagle,0,0,244618952704,"{""name"":""Golden Eagle"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dempsey_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+boss_browar_witnica_s_a,0,0,244368539649,"{""name"":""BOSS Browar Witnica S.A."",""city"":""Witnica"",""state"":"""",""code"":"""",""country"":""Poland"",""phone"":""48-(95)-751-51-14"",""website"":""http://www.browar-witnica.pl/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ul. Marii Konopnickiej 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":52.6739,""lon"":14.9004}}",1,29,1
+drake_s_brewing-maibock,0,0,244621836288,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""drake_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,36,1
+greenshields_brewery_and_pub-greenshields_pale_ale,0,0,244755005440,"{""name"":""Greenshields Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greenshields_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+diebels_privatbrauerei-german_premium_dark,0,0,244625768449,"{""name"":""German Premium Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diebels_privatbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,45,1
+diamond_knot_brewery_alehouse-golden_ale,0,0,244618952705,"{""name"":""Golden Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+boston_beer_company-samuel_adams_imperial_white,0,0,244368605184,"{""name"":""Samuel Adams Imperial White"",""abv"":10.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Samuel Adams® Imperial White is a new perspective on the classic witbier style.  Witbiers are normally light and refreshing with a fruity finish and we wanted to see how these characteristics would stand up when we amped up the recipe.  We were totally blown away by the flavors that were created by this beer.\r\n\r\nThis is not just a more intense version of our spring seasonal Samuel Adams® White Ale.  Imperial White is a new recipe that stands on it own merits.  In fact, it is more of a wine substitute than just another refreshing witbier.  This is a beer that should be sipped and savored and you"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,29,1
+egan_brewing-nitro_pale,0,0,244621836289,"{""name"":""Nitro Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+hacker_pschorr_bru-alt_munich_dark,0,0,244755005441,"{""name"":""Alt Munich Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hacker_pschorr_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+egan_brewing-abbot_pennings_trippel,0,0,244625768450,"{""name"":""Abbot Pennings Trippel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+duck_rabbit_craft_brewery-duck_rabbit_schwarzbier,0,0,244618952706,"{""name"":""Duck-Rabbit Schwarzbier"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duck_rabbit_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,30,1
+brasserie_de_brunehaut-abbaye_de_st_amand,0,0,244368605185,"{""name"":""Abbaye de St Amand"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""A unique 7% Belgian blonde ale, flavoured with juniper berries. The beer has bittersweet malt flavours, and a heady perfumed aroma of orange and juniper."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,29,1
+egan_brewing-o_tay_bockwheat,0,0,244621836290,"{""name"":""O-Tay Bockwheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+hausbrauerei_zum_schlssel-altbier,0,0,244755070976,"{""name"":""Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hausbrauerei_zum_schlssel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,51,1
+f_x_matt_brewing,0,0,244625833984,"{""name"":""F.X. Matt Brewing"",""city"":""Utica"",""state"":""New York"",""code"":""13502"",""country"":""United States"",""phone"":""1-800-690-3181-x222"",""website"":""http://www.saranac.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""811 Edward Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.1045,""lon"":-75.2452}}",1,45,1
+egan_brewing,0,0,244619018240,"{""name"":""Egan Brewing"",""city"":""De Pere"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.4489,""lon"":-88.0604}}",1,30,1
+brasserie_de_l_abbaye_val_dieu-winter,0,0,244368605186,"{""name"":""Winter"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_val_dieu"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+ej_phair_brewing_company_and_alehouse-marzen,0,0,244621836291,"{""name"":""Marzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ej_phair_brewing_company_and_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,36,1
+industrias_la_constancia_ilc-suprema,0,0,244755070977,"{""name"":""Suprema"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""industrias_la_constancia_ilc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+firehouse_brewing-smoke_jump_stout,0,0,244625833985,"{""name"":""Smoke Jump Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+el_ahram_company,0,0,244619018241,"{""name"":""el ahram company"",""city"":"""",""state"":"""",""code"":"""",""country"":""Egypt"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,30,1
+brasserie_mcauslan-st_ambroise_pale_ale,0,0,244485914624,"{""name"":""St-Ambroise Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_mcauslan"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+elk_creek_cafe_and_aleworks-elk_creek_copper_ale,0,0,244621901824,"{""name"":""Elk Creek Copper Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_creek_cafe_and_aleworks"",""updated"":""2010-07-22 20:00:20"",""description"":""This beautifully colored ale strikes an agreeable balance between malt and hops. Caramel + toffee notes from the use of more highly kilned malts step up to complement this beers assertive hop profile."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,36,1
+iron_springs_pub_brewery-fairfax_coffee_porter,0,0,244755070978,"{""name"":""Fairfax Coffee Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+fish_brewing_company_fish_tail_brewpub-mudshark_porter,0,0,244625833986,"{""name"":""Mudshark Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,45,1
+emery_pub,0,0,244619018242,"{""name"":""Emery Pub"",""city"":""Emeryville"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.8313,""lon"":-122.285}}",1,30,1
+brasseries_kronenbourg-1664,0,0,244485914625,"{""name"":""1664"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasseries_kronenbourg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+empyrean_brewing_company,0,0,244621901825,"{""name"":""Empyrean Brewing Company"",""city"":""Lincoln"",""state"":""Nebraska"",""code"":""68508"",""country"":""United States"",""phone"":""1-402-434-5959"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""729 Q Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.8155,""lon"":-96.7105}}",1,36,1
+island_brewing_company,0,0,244755136512,"{""name"":""Island Brewing Company"",""city"":""Carpinteria"",""state"":""California"",""code"":""93013"",""country"":""United States"",""phone"":""1-805-745-8272"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5049 Sixth Street""]}",1,51,1
+3_fonteinen_brouwerij_ambachtelijke_geuzestekerij,0,0,244380663808,"{""name"":""3 Fonteinen Brouwerij Ambachtelijke Geuzestekerij"",""city"":""Beersel"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-02-/-306-71-03"",""website"":""http://www.3fonteinen.be/index.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hoogstraat 2A""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7668,""lon"":4.3081}}",1,60,1
+fitger_s_brewhouse_brewery_and_grill-habanero,0,0,244625899520,"{""name"":""Habañero"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+esser_s_cross_plains_brewery-esser_s_best,0,0,244619083776,"{""name"":""Esser's Best"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""esser_s_cross_plains_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""German Style Lager"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+bricktown_brewery,0,0,244485914626,"{""name"":""Bricktown Brewery"",""city"":""Dubuque"",""state"":""Iowa"",""code"":""52001"",""country"":""United States"",""phone"":""1-563-582-0608"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""299 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.4965,""lon"":-90.6652}}",1,29,1
+engine_house_9-barleywine,0,0,244621967360,"{""name"":""Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+jacob_leinenkugel_brewing_company,0,0,244755136513,"{""name"":""Jacob Leinenkugel Brewing Company"",""city"":""Chippewa Falls"",""state"":""Wisconsin"",""code"":""54729"",""country"":""United States"",""phone"":""1-715-723-5557"",""website"":""http://www.leinie.com/welcome.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 Jefferson Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.9449,""lon"":-91.3968}}",1,51,1
+512_brewing_company-512_alt,0,0,244380663809,"{""name"":""(512) ALT"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""(512) ALT is a German-style amber ale that is fermented cooler than typical ales and cold conditioned like a lager. ALT means “old” in German and refers to a beer style made using ale yeast after many German brewers had switched to newly discovered lager yeast. This ale has a very smooth, yet pronounced, hop bitterness with a malty backbone and a characteristic German yeast character. Made with 98% Organic 2-row and Munch malts and US noble hops."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,60,1
+flatlander_s_restaurant_brewery-prairie_wheat_beer,0,0,244625899521,"{""name"":""Prairie Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+f_x_matt_brewing-pomegranate_wheat,0,0,244619083777,"{""name"":""Pomegranate Wheat"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This wholesome combination of unfiltered wheat beer and real pomegranate juice makes a smooth refreshing beer with all the goodness of pomegranate. Look for a light body with a slight tart finish and golden straw color."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,30,1
+brooklyn_brewery-brooklyn_summer_ale,0,0,244485980160,"{""name"":""Brooklyn Summer Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""It is light with a bit of a citrus flavor.  A pretty standard summer seasonal."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,29,1
+esser_s_cross_plains_brewery-esser_s_cross_plains_special,0,0,244621967361,"{""name"":""Esser's Cross Plains Special"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""esser_s_cross_plains_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,36,1
+john_harvard_s_brewhouse_wilmington,0,0,244755202048,"{""name"":""John Harvard's Brewhouse - Wilmington"",""city"":""Wilmington"",""state"":""Delaware"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.7458,""lon"":-75.5467}}",1,51,1
+adnams_co-nut_brown_ale,0,0,244380729344,"{""name"":""Nut Brown Ale"",""abv"":3.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""adnams_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,60,1
+flying_dog_brewery-garde_dog,0,0,244625965056,"{""name"":""Garde Dog"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Proving the French may actually know something we don't... Garde Dog is a traditional French Biere de Garde or \""beer for keeping\"". This classic farmhouse ale was brewed in March for drinking during the spring and summer months. With it's toasted aroma and spicy, malty sweetness Garde Dog will liberate you from the winter doldrum.""}",1,45,1
+f_x_matt_brewing-roggen_bock,0,0,244619083778,"{""name"":""Roggen Bock"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the tradition of great German Bock beers with only German malts and hops, using 20% rye, malt to give it a distinctive spicy, yet smooth character. You'll love the rich flavors and deep red color of this unique German Brew."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,30,1
+broughton_ales-black_douglas,0,0,244486045696,"{""name"":""Black Douglas"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broughton_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+fauerbach_brewing_company-fauerbach_export,0,0,244622032896,"{""name"":""Fauerbach Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fauerbach_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Actually a Dortmunder/Export style"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+kelmer_s_brewhouse-independence_ale,0,0,244755202049,"{""name"":""Independence Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kelmer_s_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+anheuser_busch-michelob_hop_hound_amber_wheat,0,0,244380729345,"{""name"":""Michelob Hop Hound Amber Wheat"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Unfiltered American amber wheat ale brewed with a blend of imported and domestic hops for a balanced slightly citrus hop aroma and caramel malty taste."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,60,1
+flying_dog_brewery-woody_creek_white,0,0,244625965057,"{""name"":""Woody Creek White"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our tribute to the town we consider to be \""Gonzo Ground Zero\""... Woody Creek White is a traditional Belgian-style Wit Beer, brewed with unique ingredients like orange peel and coriander, resulting in a refreshing and slightly citrus flavor, perfect for the \""Dog Days of Summer\""."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,45,1
+f_x_matt_brewing-saranac_oatmeal_stout,0,0,244619149312,"{""name"":""Saranac Oatmeal Stout"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Oatmeal Stout is brewed with a delicate balance of the finest grown oats, selected hops, and our traditional ale yeast. Look for a sweet, dark chocolate and roasted taste."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,30,1
+brouwerij_boon-pertotale_faro,0,0,244486045697,"{""name"":""Pertotale Faro"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_boon"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+faultline_brewing_2-best_bitter,0,0,244622032897,"{""name"":""Best Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+klosterbrauerei_weltenburg-winter_traum,0,0,244755202050,"{""name"":""Winter-Traum"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_weltenburg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,51,1
+atwater_block_brewing,0,0,244380729346,"{""name"":""Atwater Block Brewing"",""city"":""Detroit"",""state"":""Michigan"",""code"":""48207"",""country"":""United States"",""phone"":""1-313-877-9205"",""website"":""http://www.atwaterbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Atwater Block Brewery, located in Detroit's historic Rivertown district is housed in a 1916 factory warehouse that was founded in March of 1997. Our brewing process however, is over 200 years old. We are able to brew our brands in the true heritage style of German lagers. With our imported Kasper Schultz brew house, only the finest malt and hops from Germany are used to brew our lagers and only the finest American hops for our specialty Ale's. Atwater block beers are distinctly fresh and flavorful, which is why we have a slogan We drink all we can and sell the rest..  Atwater Block Brewery is carrying on the rich history of breweries in Detroit, we are THE brewery of the D."",""address"":[""237 Joseph Campau Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3372,""lon"":-83.0186}}",1,60,1
+fordham_brewing,0,0,244626030592,"{""name"":""Fordham Brewing"",""city"":""Annapolis"",""state"":""Maryland"",""code"":""21401"",""country"":""United States"",""phone"":""1-410-216-9730"",""website"":""http://www.ramsheadtavern.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""95 Cathedral Street, Suite 200""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.9773,""lon"":-76.4948}}",1,45,1
+faultline_brewing_1,0,0,244619149313,"{""name"":""Faultline Brewing #1"",""city"":""Sunnyvale"",""state"":""California"",""code"":""94086"",""country"":""United States"",""phone"":""1-408-736-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1235 Oakmead Parkway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.387,""lon"":-121.993}}",1,30,1
+brouwerij_de_dolle_brouwers-oerbier,0,0,244486045698,"{""name"":""Oerbier"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_dolle_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+firehouse_grill_brewery,0,0,244622032898,"{""name"":""Firehouse Grill & Brewery"",""city"":""Sunnyvale"",""state"":""California"",""code"":""94086"",""country"":""United States"",""phone"":""1-408-773-9500"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""111 South Murphy Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.3775,""lon"":-122.03}}",1,36,1
+left_hand_brewing_company-widdershins_barleywine,0,0,244755202051,"{""name"":""Widdershins Barleywine"",""abv"":9.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+bad_frog_brewery_company,0,0,244380729347,"{""name"":""Bad Frog Brewery Company"",""city"":""Rose City"",""state"":""Michigan"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.4214,""lon"":-84.1167}}",1,60,1
+founders_hill_brewing-blacksmith_stout,0,0,244626030593,"{""name"":""Blacksmith Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_hill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+fitger_s_brewhouse_brewery_and_grill-el_nino_ipa,0,0,244619149314,"{""name"":""El Niño IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,30,1
+brouwerij_de_dolle_brouwers,0,0,244486045699,"{""name"":""Brouwerij De Dolle Brouwers"",""city"":""Esen"",""state"":""West-Vlaanderen"",""code"":""BE-8160"",""country"":""Belgium"",""phone"":"""",""website"":""http://www.dedollebrouwers.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Roeselarestraat 12b""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.0281,""lon"":2.9038}}",1,29,1
+flying_bison_brewing,0,0,244622098432,"{""name"":""Flying Bison Brewing"",""city"":""Buffalo"",""state"":""New York"",""code"":""14207"",""country"":""United States"",""phone"":""1-716-873-1557"",""website"":""http://www.flyingbisonbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""For more than 800 years, brewing beer has been regulated by laws in Germany. A long tradition that all the German brewers still obey to: In 1165 the first fine for serving bad beer was imposed in Augsburg. From 1487 onwards every brewer in Munich had to confirm on an oath to the ducal Rentmeister of Upper Bavaria, stating that he would not use any ingredients but barley, hops, and water to brew beer. Originally, this oath was valid in Munich only. In 1987 it was renewed by the Munich brewers."",""address"":[""491 Ontario Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.9561,""lon"":-78.8966}}",1,36,1
+lwenbru_munich,0,0,244877557760,"{""name"":""Lwenbru Munich"",""city"":""Toronto"",""state"":""Ontario"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Toronto ON""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.7379,""lon"":-79.5714}}",1,51,1
+barley_creek_brewing-rescue_ipa,0,0,244380729348,"{""name"":""Rescue IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Hopped four separate times with pure Centennial hops for one of the hoppiest brews around. With a nice dry finish, Rescue IPA is our Mug Club's favorite."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,60,1
+frontwaters_restaurant_and_brewing,0,0,244626030594,"{""name"":""Frontwaters Restaurant and Brewing"",""city"":""Marblehead"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.5403,""lon"":-82.7355}}",1,45,1
+flensburger_brauerei-flensburger_pilsner,0,0,244619214848,"{""name"":""Flensburger Pilsner"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flensburger_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,30,1
+brouwerij_st_bernardus-grotten_brown,0,0,244486111232,"{""name"":""Grotten Brown"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""The latest acquisition “Grottenbier” was created by Master Brewer Pierre Celis. It is an aromatic dark beer with 6.5% alcohol content.\r\n\r\nIn the marl pits in Kanne ( Belgium) and Valkenburg (the Netherlands), deep under the ground, you can taste the Grottenbier in a constant temperature of 11° Celsius.\r\n\r\nAs it is the case with Champagne, the bottles are placed in a “pupitre” with results in an additional fermentation. \r\n\r\nThis beer with a high fermentation with a second fermentation in the bottle has been pointed out as one of the best 10 present-day beers by beer guru Michael Jackson."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,29,1
+fratellos_restaurant_and_brewery-fox_tail_amber_ale,0,0,244622098433,"{""name"":""Fox Tail Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,36,1
+maclay_and_co-the_only_oat_malt_stout_in_the_world,0,0,244877557761,"{""name"":""The Only Oat Malt Stout In The World"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maclay_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,51,1
+barrel_house_brewing_co-cumberland_pale_ale,0,0,244380794880,"{""name"":""Cumberland Pale Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barrel_house_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Early Cincinnati brewers shipping their beers into Tennessee would generously hop their beer to prevent spoilage during the long arduous trip over the Cumberland Trail. This classic interpretation of the American Pale Ale features a solid foundation of pale malt loaded with fresh Cascade hops. Here’s to getting where you’re going!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+gasthof_brauerei_zum_frohsinn,0,0,244626096128,"{""name"":""Gasthof-Brauerei zum Frohsinn"",""city"":""Arbon"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-71-474-84-84"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Romanshornerstrasse 15""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5171,""lon"":9.43}}",1,45,1
+goose_island_beer_company_clybourn-honest_stout,0,0,244619214849,"{""name"":""Honest Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+brouwerij_van_hoegaarden,0,0,244486111233,"{""name"":""Brouwerij van Hoegaarden"",""city"":""Hoegaarden"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-016-76-98-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Stoopkensstraat 46""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7778,""lon"":4.8877}}",1,29,1
+full_sail_brewing_1-wassail_winter_ale,0,0,244622098434,"{""name"":""Wassail Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,36,1
+mad_anthony_brewing-auburn,0,0,244877623296,"{""name"":""Auburn"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+bavarian_barbarian_brewing_company-headbangerz_brown_ale,0,0,244380794881,"{""name"":""Headbangerz Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bavarian_barbarian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Headbangerz Brown Ale is based on an English brown ale style. Its color is a demonic, dark reddish-brown. This beer is subtly sweet and punctuated with roasty, nutty flavors. The hops take a back seat and simply complement the malt character.  Headbangerz Brown Ale is perfect for any Autumn outdoor activities or for relaxing on Summer evenings. Headbangerz Brown Ale is named in honor of Barbarian Chief's, Mike Hiller, hardworking former co-workers – heavy metal freaks and masters of metal fabrication."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,60,1
+goose_island_beer_company_fulton_street-stockyard_oatmeal_stout,0,0,244626096129,"{""name"":""Stockyard Oatmeal Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,45,1
+goose_island_beer_company_fulton_street-oatmeal_stout,0,0,244619214850,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+c_b_potts_of_cheyenne-big_horn_light,0,0,244486176768,"{""name"":""Big Horn Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+glacial_lakes_brewing-pale,0,0,244622163968,"{""name"":""Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glacial_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+magic_hat-thumbsucker,0,0,244877623297,"{""name"":""Thumbsucker"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Vermont Imperial Stout\r\nPast the dark and into the deep lies this stout and hearty hale ale from a far off forsaken age. Black like shimmering shades of furthest night, this ale will warm your cold limbs and light your mind's fire.\r\n\r\nThumbsucker(tm), big full-bodied, dark beer with a rich, roasted malt flavor and balanced by an assertive hop bitterness, is our salute to the rarest Imperial Stouts of lore."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,51,1
+belfast_bay_brewing_company,0,0,244380794882,"{""name"":""Belfast Bay Brewing Company"",""city"":""Belfast"",""state"":""Maine"",""code"":""4915"",""country"":""United States"",""phone"":""207-338-4216"",""website"":""http://www.belfastbaybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""100 Searsport Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.4295,""lon"":-68.975}}",1,60,1
+great_divide_brewing-samurai,0,0,244752056320,"{""name"":""Samurai"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Looking for something a little different? Brewed with rice and barley malts, Samurai is an easy drinking, unfiltered ale that changes the status quo for unfiltered beers. The addition of rice gives Samurai a slightly fruity, crisp, refreshing and clean taste. This is definitely not your everyday unfiltered beer.""}",1,45,1
+gottberg_brew_pub-heavenly_helles,0,0,244619280384,"{""name"":""Heavenly Helles"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+camerons_brewery_company-long_leg_english_fuggles_hop_ale,0,0,244486176769,"{""name"":""Long Leg English Fuggles Hop Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""camerons_brewery_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+golden_pacific_brewing-golden_gate_copper_ale,0,0,244622163969,"{""name"":""Golden Gate Copper Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,36,1
+main_street_beer_company_1,0,0,244877688832,"{""name"":""Main Street Beer Company #1"",""city"":""Richmond"",""state"":""Virginia"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.543,""lon"":-77.4691}}",1,51,1
+bell_s_brewery_inc-kalamazoo_stout,0,0,244380794883,"{""name"":""Kalamazoo Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A full-bodied stout with plenty of roast flavor. Kalamazoo Stout is available year round, leading our vast portfolio of stouts."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,60,1
+great_divide_brewing-titan_ipa,0,0,244752121856,"{""name"":""Titan IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditionally India Pale Ales, the hoppiest of all pales, were brewed with more alcohol and large quantities of hops in order to survive the lengthy ocean journey from the U.K. to India. Unlike our brewing forefathers, Great Divide enjoys the modern benefits of refrigeration and we don’t have any plans to ship Titan IPA to India. Instead, we brew Titan IPA for hop disciples – independent beer drinkers seeking out robust, flavorful beers characterized by their abundance of hops flavor, aroma and bitterness. As a big, aggressively hopped India Pale Ale, Titan IPA fills this bill – beginning with piney hop aromas and citrus hop flavors, and finishing with a rich, malty sweetness that is carefully balanced with crisp hop bitterness."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,45,1
+granite_city_food_brewery_saint_cloud-broad_ax_stout,0,0,244746289152,"{""name"":""Broad Ax Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+carlsberg_bryggerierne-jacobsen_dark_lager,0,0,244486176770,"{""name"":""Jacobsen Dark Lager"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlsberg_bryggerierne"",""updated"":""2010-07-22 20:00:20"",""description"":""Original Dark Lager is brewed according to J.C. Jacobsen's original recipe. The colour is chestnut. It has a Hersbrucker hiop aroma while the floor malted Munich malt adds a caramel character. The carbonisation is gentle and the hop bitterness is soft. Enjoy at 6-8C.""}",1,29,1
+goose_island_beer_company_fulton_street-summertime_kolsch,0,0,244622229504,"{""name"":""Summertime Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+martini_brauerei,0,0,244877688833,"{""name"":""Martini-Brauerei"",""city"":""Kassel"",""state"":""Hessen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)561-/-7885-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Klnische Strae 94-104""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.3175,""lon"":9.4793}}",1,51,1
+big_rock_brewery-traditional_ale,0,0,244380794884,"{""name"":""Traditional Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,60,1
+green_bay_brewing-hinterland_maple_bock,0,0,244752121857,"{""name"":""Hinterland Maple Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+great_divide_brewing-great_divide_saison,0,0,244746354688,"{""name"":""Great Divide Saison"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our homage to the beers that have quenched the thirst of Belgian farm workers for centuries. Brewed with barley, wheat and rice and fermented at high temperatures with a special blend of four different yeast strains, Saison is fruity and slightly tart, with a dry finish that makes it that rarest of treats–a beer as refreshing as it is complex."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,30,1
+celis_brewery-raspberry,0,0,244486242304,"{""name"":""Raspberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""celis_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,29,1
+grumpy_troll_restaurant_and_brewery-grumpy_two,0,0,244748517376,"{""name"":""Grumpy Two"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+mckenzie_brew_house-french_country_spring_beer,0,0,244877688834,"{""name"":""French Country Spring Beer"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+big_sky_brewing-scape_goat_pale_ale,0,0,244380794885,"{""name"":""Scape Goat Pale Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scape Goat is our award-winning Pale Ale. It is a very smooth brew, refreshing and well-balanced. Scape Goat took home the Gold Medal from the North American Brewers' Association competitions as the best English-style pale ale brewed west of the Mississippi, but only because it is the best. Scape Goat is brewed with pale, crystal malts, and Kent Goldings and Crystal Hops. Scape Goat is 3.8% alcohol by weight and 4.7% by volume."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+green_bay_brewing-hinterland_pub_draught,0,0,244752187392,"{""name"":""Hinterland Pub Draught"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+green_mill_brewing_saint_paul-kabeelo_lodge_lager,0,0,244746354689,"{""name"":""Kabeelo Lodge Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mill_brewing_saint_paul"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+celis_brewery,0,0,244486242305,"{""name"":""Celis Brewery"",""city"":""Austin"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":30.2672,""lon"":-97.7431}}",1,29,1
+hair_of_the_dog_brewing,0,0,244748517377,"{""name"":""Hair of the Dog Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":""97202"",""country"":""United States"",""phone"":""1-503-232-6585"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4509 SE 23rd Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.4901,""lon"":-122.643}}",1,36,1
+mckenzie_brew_house-unicorn_amber_ale,0,0,244877688835,"{""name"":""Unicorn Amber Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,51,1
+bison_brewing,0,0,244380860416,"{""name"":""Bison Brewing"",""city"":""Berkeley"",""state"":""California"",""code"":""94704"",""country"":""United States"",""phone"":""1-510-841-7734"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2598 Telegraph Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.8634,""lon"":-122.259}}",1,60,1
+green_mill_brewing_saint_paul-gunflint_gold_ale,0,0,244752187393,"{""name"":""Gunflint Gold Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mill_brewing_saint_paul"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+grolsche_bierbrouwerij-grolsch_pilsner_speciale,0,0,244746354690,"{""name"":""Grolsch Pilsner Speciale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grolsche_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""Grolsch Speciale Pilsner is a special version of the Grolsch Premium Pilsner. It has a fruitier taste than the Premium Pilsner."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,30,1
+central_waters_brewing_company,0,0,244486242306,"{""name"":""Central Waters Brewing Company"",""city"":""Amherst"",""state"":""Wisconsin"",""code"":""54406"",""country"":""United States"",""phone"":""1-715-824-2739"",""website"":""http://www.centralwaters.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewing since 1998, Central Waters Brewing Company is built on the solid reputation of producing the finest quality beer in Central Wisconsin: Ouisconsing Red Ale, Happy Heron Pale Ale, Mudpuppy Porter, and many more."",""address"":[""351 Allen Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.4419,""lon"":-89.2797}}",1,29,1
+hapa_s_brew_haus_and_restaurant-red_sky_amber_lager,0,0,244748582912,"{""name"":""Red Sky Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+mehana_brewing-beer,0,0,244877754368,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mehana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+21st_amendment_brewery_cafe-potrero_esb,0,0,244380860416,"{""name"":""Potrero ESB"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditional English E.S.B. made with English malt and hops. Fruity aroma with an imparted tart flavor brought about by replicating the water profile in England at Burton on Trent."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,61,1
+brasserie_de_vervifontaine,0,0,244380860417,"{""name"":""Brasserie de Vervifontaine"",""city"":""Jalhay-Vervifontaine"",""state"":""Lige"",""code"":"""",""country"":""Belgium"",""phone"":""32-087-64-83-03"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Vervierfontaine 100""]}",1,60,1
+heavenly_daze_brewery_and_grill-amber_daze,0,0,244752252928,"{""name"":""Amber Daze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,45,1
+heartland_brewery_union_square-farmer_jon_s_oatmeal_stout,0,0,244746420224,"{""name"":""Farmer Jon's Oatmeal Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":""Hearty, creamy oatmeal stout has hints of espresso and an elegant dark chocolate sweetness. Flavor and aroma are characteristic of Espresso and Dark Chocolate. It has a rich, silky, full, and complex body with a long, rich, smooth finish."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,30,1
+cervejaria_de_macau-lager,0,0,244486307840,"{""name"":""Lager"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_de_macau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+harbor_city_brewing-main_street_brown_ale,0,0,244748582913,"{""name"":""Main Street Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harbor_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,36,1
+midnight_sun_brewing_co-meltdown_double_ipa,0,0,244877819904,"{""name"":""Meltdown Double IPA"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The days are long but the season is short. So what gives? Sleep! After doing more before midnight than most Outsiders do in a week, Alaskans deserve some down time. And these moments of relaxation demand more than that ordinary, non-distinct lawn mower beer. Celebrate a day well done with a beer done well—a seriously delicious IPA with some scorchin’ hops. \r\n\r\nOur new seasonal double IPA is designed to keep you incredibly hopped up spring through summer."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,51,1
+abbaye_de_maredsous-8,0,0,244380925952,"{""name"":""8"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_de_maredsous"",""updated"":""2010-07-22 20:00:20"",""description"":""Moortgat's Maredsous 8 is a fine strong dubbel that is sweet when young but develops a stout like flavour as it ages."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,61,1
+brauerei_reissdorf,0,0,244499283968,"{""name"":""Brauerei Reissdorf"",""city"":""Kln"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)2236-/-9655-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Emil-Hoffmann-Strae 4-10""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.8753,""lon"":6.9944}}",1,60,1
+heineken_international-lager_beer,0,0,244752252929,"{""name"":""Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heineken_international"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+hoppin_frog_brewery-smashing_berry_dark,0,0,244746420225,"{""name"":""Smashing Berry Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Fresh, natural fruit flavor and a hint of chocolate malt makes this dark beer something really special. The just picked, fresh fruit flavor is very evident in this beer."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,30,1
+cj_s_brewery_grill,0,0,244486307841,"{""name"":""CJ's Brewery & Grill"",""city"":""La Jolla"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.8575,""lon"":-117.876}}",1,29,1
+hc_berger_brewing-rauchbier,0,0,244748582914,"{""name"":""Rauchbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hc_berger_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+midnight_sun_brewing_co-obliteration_vi,0,0,244877819905,"{""name"":""Obliteration VI"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With passion & purpose, we present this series of experimental hop-driven beers. Using different hop varieties & brewing techniques, we aim to educate the palate & challenge the hophead in you.\r\n\r\nObliteration VI is a Double IPA brewed with Summit, Summit and Summit; 95 IBU’s"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,51,1
+anheuser_busch-bud_light_golden_wheat,0,0,244380991488,"{""name"":""Bud Light Golden Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,61,1
+breckenridge_brewery-avalanche_amber,0,0,244499349504,"{""name"":""Avalanche Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,60,1
+hoffbrau_steaks_brewery_1-buffalo_ale,0,0,244752252930,"{""name"":""Buffalo Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+idaho_brewing-dr_hops_pale_ale,0,0,244746485760,"{""name"":""Dr. Hops Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""idaho_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+cricket_hill-colonel_blide_s_cask_ale,0,0,244486373376,"{""name"":""Colonel Blide's Cask Ale"",""abv"":5.5,""ibu"":31.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cricket_hill"",""updated"":""2010-12-06 13:08:34"",""description"":""A tasty, moderately hoppy, easy to drink beer with an orange marmalade hue with a frothy, off-white head. An herbal hop aroma with a hint of lemon and pine. This beer is not overly bitter, with orangy citrus and pine hop with slight earthy notes! There is a malty biscuit flavor that balances the hops. Makes me wish I had some Fish & Chips!!"",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,29,1
+hereford_hops_restaurant_and_brewpub_1-lichthaus_lager,0,0,244748648448,"{""name"":""Lichthaus Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_restaurant_and_brewpub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+midnight_sun_brewing_co-uranus_100_brettanomyces_golden_ale,0,0,244877819906,"{""name"":""Uranus - 100% Brettanomyces Golden Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Uranus, ruler of the heavens, reigns supreme with beauty and brilliance. Gloriously gold in color, URANUS Golden Ale holds title to our first 100% Brettanomyces fermentation and conditioning. Brewed by mere mortals and blessed by the beer gods, this ale deserves to be worshipped."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,51,1
+back_road_brewery-millennium_lager,0,0,244380991489,"{""name"":""Millennium Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic pilsner."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,61,1
+brewery_corsendonk-monk_pale_ale_agnus_dei,0,0,244499349505,"{""name"":""Monk Pale Ale / Agnus Dei"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_corsendonk"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+hoppers_seafood_grill-uno_mas,0,0,244752252931,"{""name"":""Uno Mas"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppers_seafood_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+iron_springs_pub_brewery-kent_lake_kolsch,0,0,244746485761,"{""name"":""Kent Lake Kolsch"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+cropton_brewery,0,0,244486373377,"{""name"":""Cropton Brewery"",""city"":""Pickering"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01751)-417330"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Cropton""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":54.2912,""lon"":-0.8406}}",1,29,1
+hirschbru_privatbrauerei_hss,0,0,244748648449,"{""name"":""Hirschbru Privatbrauerei Hss"",""city"":""Sonthofen"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8321-/-6633-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Grntenstrae 7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5132,""lon"":10.279}}",1,36,1
+milly_s_tavern,0,0,244877885440,"{""name"":""Milly's Tavern"",""city"":""Manchester"",""state"":""New Hampshire"",""code"":""3102"",""country"":""United States"",""phone"":""1-603-625-4444"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""500 Commercial Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.9945,""lon"":-71.4674}}",1,51,1
+bear_republic_brewery-racer_5_ipa,0,0,244381057024,"{""name"":""Racer 5 IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a hoppy IPA. Did I say hops? Your brewer is a hop head! This is a full bodied beer using American grains. The goal was to create a base for showing off the unique floral qualities of two Pacific Northwest hops, Columbus and Cascade. Columbus is a new hybrid High Alpha Acid hop used mostly for bittering, but used heavily as an aromatic in this strong brew. Cascade is the balance that ties the malt and bittering hops together. It is a true specialty ale and is our brewer's statement on this style."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,61,1
+brewery_de_troch-chapeau_peche_lambic,0,0,244499349506,"{""name"":""Chapeau Pêche Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_de_troch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,60,1
+jack_s_brewing,0,0,244752318464,"{""name"":""Jack's Brewing"",""city"":""Fremont"",""state"":""California"",""code"":""94538"",""country"":""United States"",""phone"":""1-510-796-2036"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""39176 Argonaut Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.5441,""lon"":-121.988}}",1,45,1
+james_page_brewing,0,0,244746485762,"{""name"":""James Page Brewing"",""city"":""Minneapolis"",""state"":""Minnesota"",""code"":""55413"",""country"":""United States"",""phone"":""1-612-789-0400"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1500 Jackson Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.0039,""lon"":-93.2502}}",1,30,1
+delafield_brewhaus-amber,0,0,244618493952,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,29,1
+jack_s_brewing-red_ale,0,0,244748713984,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+mishawaka_brewing-four_horsemen_ale,0,0,244877885441,"{""name"":""Four Horsemen Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mishawaka_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,51,1
+bent_river_brewing,0,0,244381057025,"{""name"":""Bent River Brewing"",""city"":""Moline"",""state"":""Illinois"",""code"":""61265"",""country"":""United States"",""phone"":""1-309-797-2722"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1413 Fifth Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.5059,""lon"":-90.5171}}",1,61,1
+bridgeport_brewing,0,0,244499415040,"{""name"":""BridgePort Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":""97209"",""country"":""United States"",""phone"":""1-503-241-7179"",""website"":""http://www.bridgeportbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1313 NW Marshall Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.5311,""lon"":-122.685}}",1,60,1
+jobber_s_canyon_restaurant_brewery-tip_top_pale_ale,0,0,244752318465,"{""name"":""Tip Top Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jobber_s_canyon_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+karl_strauss_brewery_gardens_sorrento_mesa-endless_summer_gold,0,0,244746551296,"{""name"":""Endless Summer Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+dempsey_s_restaurant_brewery-bad_bear_brown,0,0,244618559488,"{""name"":""Bad Bear Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dempsey_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,29,1
+karl_strauss_brewery_gardens_sorrento_mesa-amber_lager,0,0,244748713985,"{""name"":""Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+mishawaka_brewing-wall_street_wheat_ale,0,0,244877885442,"{""name"":""Wall Street Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mishawaka_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+big_buck_brewery-big_buck_beer,0,0,244381057026,"{""name"":""Big Buck Beer"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_buck_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A standard American-style beer and our flagship brand.  A small amount of corn is added to the grist to give the brew a smooth character.  Features a rich, golden color and a light malt character balanced with a mild dose of hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,61,1
+burton_bridge_brewery-olde_expensive_ale,0,0,244499415041,"{""name"":""Olde Expensive Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burton_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,60,1
+joboy_s_brew_pub-manheim_red,0,0,244752318466,"{""name"":""Manheim Red"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joboy_s_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship beer, is amber to red in color with a medium body, slight caramel sweetness, and a balance more towards malt than hops. This beer is a true crowd-pleaser and keeps you coming back for more."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,45,1
+kelmer_s_brewhouse-krystal,0,0,244746551297,"{""name"":""Krystal"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kelmer_s_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+deschutes_brewery-brocken_top_bock,0,0,244618559489,"{""name"":""Brocken Top Bock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Broken Top Bock is a malt forward, high gravity lager with a subtle aroma and warming sweetness.  Czech Saaz hops balance a diverse malt composition that creates the flavor, color and mouth feel.  The lager yeast chosen for this beer plays an important role in the flavor contribution, adding sweet fruit overtones.  This bock boasts a clever 7% alcohol by volume so don’t let it “kick” you off of your stool."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,29,1
+keg_microbrewery_restaurant-pale_ale,0,0,244748713986,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keg_microbrewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+mission_springs_brewing-oatmeal_stout,0,0,244877950976,"{""name"":""Oatmeal Stout"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mission_springs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,51,1
+big_ridge_brewing-17_cream_ale,0,0,244381057027,"{""name"":""#17 Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,61,1
+caledonian_brewing-double_dark,0,0,244499415042,"{""name"":""Double Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caledonian_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+joshua_huddy_s_brew_pub_and_grill-amber,0,0,244752384000,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joshua_huddy_s_brew_pub_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,45,1
+kona_brewing,0,0,244746551298,"{""name"":""Kona Brewing"",""city"":""Kailua-Kona"",""state"":""Hawaii"",""code"":""96740"",""country"":""United States"",""phone"":""1-808-334-1133"",""website"":""http://www.konabrewingco.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""75-5629 Kuakini Highway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":19.642,""lon"":-155.996}}",1,30,1
+dix_barbecue_brewery-red_truck_lager,0,0,244618625024,"{""name"":""Red Truck Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dix_barbecue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+king_and_barnes,0,0,244748779520,"{""name"":""King and Barnes"",""city"":""Horsham"",""state"":""West Sussex"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.0638,""lon"":-0.327}}",1,36,1
+nebraska_brewing_company,0,0,244877950977,"{""name"":""Nebraska Brewing Company"",""city"":""Papillion"",""state"":""Nebraska"",""code"":""68046"",""country"":""United States"",""phone"":""1-402-934-7100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7474 Towne Center Parkway #101""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.244,""lon"":-107.879}}",1,51,1
+big_time_brewing-bhagwan_s_best_ipa,0,0,244381122560,"{""name"":""Bhagwan's Best IPA"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Building on a classic English style and adding some uniquely Northwest touches, Bhagwan's Best has developed fiercely loyal following wherever it is served.  Bursting with local hop flavor, bitterness, and aroma, it is a particular treat when served dry-hopped and cask-conditioned on Big Time's beer engine. O.G. 16 Plato (1.064), alcohol is approximately 5% by weight."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,61,1
+cedar_brewing-pardon_me_porter,0,0,244499480576,"{""name"":""Pardon Me Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,60,1
+la_jolla_brew_house-stout,0,0,244752384001,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+kulmbacher_brauerei_ag-eisbock,0,0,244746616832,"{""name"":""Eisbock"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,30,1
+dixon_s_downtown_grill-angel_amber,0,0,244618625025,"{""name"":""Angel Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dixon_s_downtown_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,29,1
+knig_ludwig_schlobrauerei_kaltenberg-konig_ludwig_weissbier_hell,0,0,244748779521,"{""name"":""König Ludwig Weissbier Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""knig_ludwig_schlobrauerei_kaltenberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,36,1
+north_coast_brewing_company-old_rasputin_russian_imperial_stout,0,0,244877950978,"{""name"":""Old Rasputin Russian Imperial Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Produced in the tradition of 18th Century English brewers who supplied the court of Russia's Catherine the Great, Old Rasputin seems to develop a cult following wherever it goes. It's a rich, intense brew with big complex flavors and a warming finish."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,51,1
+blue_point_brewing-oatmeal_stout,0,0,244381122561,"{""name"":""Oatmeal Stout"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,61,1
+celis_brewery-white,0,0,244499546112,"{""name"":""White"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""celis_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+labatt_ontario_breweries,0,0,244752384002,"{""name"":""Labatt Ontario Breweries"",""city"":""London"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-519-663-5050"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""150 Simcoe Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.9778,""lon"":-81.2467}}",1,45,1
+lake_placid_pub_brewery-lake_placid_frostbite_ale,0,0,244746616833,"{""name"":""Lake Placid Frostbite Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_placid_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,30,1
+dragonmead_microbrewery-erik_the_red,0,0,244618690560,"{""name"":""Erik the Red"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An Irish style red (amber) beer. Light in finish but bold in taste. Melanoidin malt is added for the red color and the spicy finish comes through from the Chinook hops."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,29,1
+kostritzer_schwarzbierbrauerei-schwarzbier,0,0,244748779522,"{""name"":""Schwarzbier"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kostritzer_schwarzbierbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,36,1
+oconomowoc_brewing-alt,0,0,244878016512,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oconomowoc_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,51,1
+blue_point_brewing-oktoberfest,0,0,244381122562,"{""name"":""Oktoberfest"",""abv"":5.01,""ibu"":28.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-12-20 15:35:15"",""description"":""Blue Point Octoberfest is another palate-pleasing seasonal brew. Originally brewed in 1810 to celebrate the betrothal of the Crown Prince of Bavaria, Blue Point continues the celebration by traditionally brewing this special malty amber lager every October. Octoberfest lager is stored cold for 2 months to ensure its distinct smooth flavor. Tap a pint and celebrate the season!"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,61,1
+cervejaria_sudbrack-eisenbahn_weizenbock,0,0,244499546113,"{""name"":""Eisenbahn Weizenbock"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_sudbrack"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,60,1
+lakefront_brewery-pumpkin_lager,0,0,244752449536,"{""name"":""Pumpkin Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+lakefront_brewery-klisch,0,0,244746682368,"{""name"":""Klisch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+elliott_bay_brewery_and_pub,0,0,244618690561,"{""name"":""Elliott Bay Brewery and Pub"",""city"":""Seattle"",""state"":""Washington"",""code"":""98116"",""country"":""United States"",""phone"":""1-206-932-8695"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4720 California Avenue SW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5604,""lon"":-122.387}}",1,29,1
+kulmbacher_brauerei_ag-monchshof_premium_schwarzbier,0,0,244748845056,"{""name"":""Mönchshof Premium Schwarzbier"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""Schwarzbier means \""black beer\"" in German. It is a medium-bodied, malt-accented dark brew, very opaque and deep-sepia in color, with a chewy texture and a firm, creamy, long-lasting head. In spite of its dark color, it comes across as a soft and elegant brew that is rich, mild, and surprisingly balanced. It never tastes harsh, toasty or acrid. The beer is often referred to as a Schwarzpils, a \""black Pils,\"" but, unlike a blond Pils, which can be assertively bitter, the hop bitterness in Schwarzbier is always gentle and subdued.\r\n\r\nIn a glass, Schwarzbier looks much like a British dark ale, but looks can be deceiving. Schwarzbier, unlike a British ale, has a clean lager taste that leaves next to no perception of fruitiness on the palate. Instead, Schwarzbier produces very mild, almost bittersweet, notes of chocolate, coffee, and vanilla. Like most traditional German lagers, Schwarzbier has a malty middle, but the sweetness is never cloying or overpowering. The beer is moderately to well attenuated and the finish tends to be dry. Its alcohol level by volume is in the range of 4.5 to 5%, rarely higher. To accentuate the Schwarzbier's dark elegance and appealing head, always serve it in a tall, fluted or tulip-shaped glass."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,36,1
+otto_s_pub_and_brewery-apricot_wheat,0,0,244878016513,"{""name"":""Apricot Wheat"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A light American wheat ale with the delicate aroma and flavor of apricot.  ABV  4.7%"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,51,1
+bluegrass_brewing_company_inc,0,0,244381122563,"{""name"":""Bluegrass Brewing Company, Inc."",""city"":""Louisville"",""state"":""Kentucky"",""code"":""40207"",""country"":""United States"",""phone"":""502-899-7070"",""website"":""http://www.bbcbrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The original Bluegrass Brewing Company opened in 1993 at this location, 3929 Shelbyville Road, near Westport Rd., & Chenoweth, & Breckenridge Lanes. It is the city's oldest remaining brewpub and was the first to make a significant mark on the national brewpub and microbrewery scene. Louisville's best beer is made at this location, and large glass windows in the back dining room allow you to witness the brewing operation. The headbrewer is Jerry Gnagy, assisted by Sam Cruz and Cody Mingus."",""address"":[""3929 Shelbyville Rd.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.253,""lon"":-85.654}}",1,61,1
+cheshire_cat_brewery-fat_cat,0,0,244499611648,"{""name"":""Fat Cat"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cheshire_cat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+lammin_sahti_oy,0,0,244752449537,"{""name"":""Lammin Sahti Oy"",""city"":""Lammi"",""state"":"""",""code"":""0"",""country"":""Finland"",""phone"":""358-3-633-5444"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Liesontie 554""]}",1,45,1
+mcmenamins_mill_creek-nebraska_bitter,0,0,244869431296,"{""name"":""Nebraska Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+etna_brewing-export,0,0,244618690562,"{""name"":""Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""etna_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+liberty_steakhouse_and_brewery-rocket_s_red_ale,0,0,244748845057,"{""name"":""Rocket's Red Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A blend of Pacific Northwest hops and three different caramel malts combine to give this beer its unique character."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,36,1
+otto_s_pub_and_brewery-otto_s_weizenbock,0,0,244878016514,"{""name"":""Otto's Weizenbock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong dark German style wheat bock. This wheat beer is estery like the hefeweizen, but bigger with more of everything."",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,51,1
+boston_beer_company-samuel_adams_cream_stout,0,0,244381122564,"{""name"":""Samuel Adams Cream Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Cappucino of beers. Roasty, smooth and sweet.\r\nSamuel Adams® Cream Stout is a true cream stout, balancing body and sweetness with the natural spiciness of grain and hand selected English hops. Our Brewers use generous portions of roasted chocolate and caramel malts as well as unroasted barley to impart a fullness of body, a roasty malt character and rich, creamy head. Its dark mahogany color make it almost as easy on the eyes as it is on the palate."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,61,1
+coopers_brewery-coopers_sparkling_ale,0,0,244499611649,"{""name"":""Coopers Sparkling Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The ale by which all others should be measured. With its famous cloudy sediment and its distinctive balance of malt, hops and fruity characters, the old 'Red Label' is a tasty slice of Coopers history. \r\n\r\nLittle has changed since Thomas Cooper produced his first batch of Coopers Sparkling Ale in 1862. It's still brewed naturally using the century old top fermentation method and it still tastes great! \r\n\r\nSparkling Ale contains no additives or preservatives."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,60,1
+latrobe_brewing,0,0,244752449538,"{""name"":""Latrobe Brewing"",""city"":""Latrobe"",""state"":""Pennsylvania"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.3212,""lon"":-79.3795}}",1,45,1
+michigan_brewing-big_mac,0,0,244869496832,"{""name"":""Big Mac"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Made popular in the 19th century in Dortmunder, Germany, these pale golden lagers exhibit a classic clean character with notes of biscuity malts. Bitterness is akin to a German Pilsner with an aromatic aroma. Mouthfeel is firm and even, with an overall dry tone."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+fish_brewing_company_fish_tail_brewpub-blonde_ale,0,0,244618690563,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+live_oak_brewing,0,0,244871331840,"{""name"":""Live Oak Brewing"",""city"":""Austin"",""state"":""Texas"",""code"":""78702"",""country"":""United States"",""phone"":""1-512-385-2299"",""website"":""http://www.liveoakbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Live Oak Brewing Company is truly a home-grown Austin enterprise. Two of Austin's own homebrews, Chip McElroy and Brian Peters, literally hand-built the brewery and were the two main brewers, keg washers, delivery persons, and proselytizers. Live Oak has grown since then, but we are still just as passionate about providing delicious old-world style beers that are rarely commercially available. Our special beers are brewed in limited quantities in a small east Austin brewery and are available in fine pubs and restaurants in Austin, Dallas, Houston, Alpine, Marathon, San Marcos and San Antonio."",""address"":[""3301-B East Fifth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":30.2541,""lon"":-97.7055}}",1,36,1
+paulaner-hefeweizen,0,0,245001814016,"{""name"":""Hefeweizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""Paulaner Hefe-Weißbier is the best-selling beer by the Paulaner Brewery. Specially produced top-fermented yeast is what gives it its unmistakeable character: sparkling light, fruity, and just a tiny bit bitter. Because it is not filtered during the brewing process, it retains its originality and the many vitamins, minerals and trace elements.\r\n\r\nHefe Weissbier Naturtrüb:\r\n12.5% original wort; 5.5% alcohol; 44 kcal/100 ml"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,51,1
+brasserie_mcauslan-st_ambroise_oatmeal_stout,0,0,244499742720,"{""name"":""St-Ambroise Oatmeal Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_mcauslan"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,61,1
+cooperstown_brewing_company-old_slugger_pale_ale,0,0,244499611650,"{""name"":""Old Slugger Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooperstown_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Old Slugger\"" is a hearty Pale Ale, copper in color, crisp malty fullness on the front of the palate and lingering hop bitterness on the back with a dry finish.  It is brewed with four barley malts, including two-row English pale and crystal malts, balanced with Mt. Hood, Cascade and Fuggle hops, and fermented in open vessels by Ringwood Yeast, a true top-fermenting ale yeast. \""Old Slugger\"" is the flagship beer of the Cooperstown Brewing Company and was first brewed in July 1995 and bottled in November 1995."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+le_cheval_blanc,0,0,244752449539,"{""name"":""Le Cheval Blanc"",""city"":""Montreal"",""state"":""Quebec"",""code"":""0"",""country"":""Canada"",""phone"":""1-514-522-0211"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""809 Rue Ontario Est""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.5181,""lon"":-73.5642}}",1,45,1
+midnight_sun_brewing_co-envy,0,0,244869562368,"{""name"":""Envy"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""ENVY Imperial Pilsner obsessively desires to be better than the world’s most common lager. Envy vies for attention with its beautifully bright, golden color and tightly-formed crown. Intense yet true pilsner malt provides the perfect base for profuse citrus, floral and spicy hop flavor. Envy achieves distinction, making other beers turn green.""}",1,30,1
+goose_island_beer_company_clybourn-strong_brown_ale,0,0,244618756096,"{""name"":""Strong Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,29,1
+lost_coast_brewery-hefeweizen,0,0,244871331841,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+privatbrauerei_bolten-alt,0,0,245001879552,"{""name"":""Alt"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_bolten"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,51,1
+brennerei_distillerie_radermacher-rader_ambree,0,0,244499808256,"{""name"":""Rader Ambrée"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brennerei_distillerie_radermacher"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+corner_pub,0,0,244499611651,"{""name"":""Corner Pub"",""city"":""Reedsburg"",""state"":""Wisconsin"",""code"":""53959"",""country"":""United States"",""phone"":""1-608-524-8989"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""100 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.5323,""lon"":-90.0099}}",1,60,1
+lion_nathan_australia_hunter_street,0,0,244875001856,"{""name"":""Lion Nathan Australia  Hunter Street"",""city"":""Sydney"",""state"":""New South Wales"",""code"":"""",""country"":""Australia"",""phone"":""61-(02)-9320-2200"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Level 15, 20 Hunter Street""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-33.8687,""lon"":151.217}}",1,45,1
+minocqua_brewing_company-rye_porter,0,0,244869562369,"{""name"":""Rye Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark, full bodied ale has a hint of rye accompanied by chocolate malt. The perfect brew for relaxed sipping!"",""style"":""Porter"",""category"":""Irish Ale""}",1,30,1
+gordon_biersch_brewing-golden_export,0,0,244618756097,"{""name"":""Golden Export"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+main_street_alehouse-eager_beaver_ipa,0,0,244871397376,"{""name"":""Eager Beaver IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,36,1
+privatbrauerei_erdinger_weissbru-weissbier_pikantus,0,0,245001879553,"{""name"":""Weißbier Pikantus"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_erdinger_weissbru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,51,1
+broughton_ales-border_gold_oranic_ale,0,0,244499808257,"{""name"":""Border Gold Oranic Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broughton_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""According to legend, gold panned from the crystal clear Border streams of the Yarrow valley, nearby the site of the Broughton Ales brewery, was used to make the third wedding ring of Mary Queen of Scots.\r\n \r\nThis golden coloured ale is brewed with a skilful blend of organically grown hops and malt, and pure Scottish water to the exacting standards required by Soil Association Certification Ltd. of the United Kingdom.\r\n\r\nThe end result is a light golden coloured, clean tasting beer with an excellent hop aroma and aftertaste.\r\n\r\nAt 6.0% ABV a premium ale for those who know and care about what they eat and drink.\r\n\r\nBorder Gold has won several awards, the most recent being a bronze medal in the International Brewing Awards in Munich 2005."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,61,1
+crooked_river_brewing,0,0,244499677184,"{""name"":""Crooked River Brewing"",""city"":""Cleveland"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.4995,""lon"":-81.6954}}",1,60,1
+long_trail_brewing_co,0,0,244875067392,"{""name"":""Long Trail Brewing Co"",""city"":""Bridgewater Corners"",""state"":""Vermont"",""code"":""5035"",""country"":""United States"",""phone"":""802) 672-5011"",""website"":""http://www.longtrail.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Long Trail Brewery is a microbrewery located in Bridgewater, Vermont, USA. It was opened in May of 1989 by Andy Pherson, who now serves both as the company's president and brewmaster. The company's first brewery was located in the basement of the Bridgewater Woolen Mill in Vermont's Green Mountains, but by 1995 the company had become popular enough that it was able to relocate to a state-of-the-art brewery and visitor center (featuring an open-air deck overlooking the Ottaquechee River) in Bridgewater Corners, VT."",""address"":[""Route 4 & 100A""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.5882,""lon"":-72.6563}}",1,45,1
+montana_brewing-harvest_ale,0,0,244869627904,"{""name"":""Harvest Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+gottberg_brew_pub-bugeater_brown_ale,0,0,244618821632,"{""name"":""Bugeater Brown Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,29,1
+michigan_brewing-celis_pale_bock,0,0,244871397377,"{""name"":""Celis Pale Bock"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian, lightly spiced pale ale. This caramel colored, light-bodied brew has a mild caramel flavor, a hint of orange peel and coriander and slight hop bitterness."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,36,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-dpa,0,0,245001945088,"{""name"":""DPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+3_fonteinen_brouwerij_ambachtelijke_geuzestekerij-drie_fonteinen_kriek,0,0,244381188096,"{""name"":""Drie Fonteinen Kriek"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""3_fonteinen_brouwerij_ambachtelijke_geuzestekerij"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,62,1
+brouwerij_liefmans-goudenband_1999,0,0,244499808258,"{""name"":""Goudenband 1999"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_liefmans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+crooked_waters_brewing,0,0,244499677185,"{""name"":""Crooked Waters Brewing"",""city"":""Peoria"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.6936,""lon"":-89.589}}",1,60,1
+lowenbrau_brauerei-dunkel,0,0,244875132928,"{""name"":""Dunkel"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lowenbrau_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+nordsj_grdsbryggeri-ostgota_blabars,0,0,244869627905,"{""name"":""Östgöta Blåbärs"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nordsj_grdsbryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+great_dane_pub_and_brewing_1-old_scratch_barleywine_2000,0,0,244745961472,"{""name"":""Old Scratch Barleywine 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+mickey_finn_s_brewery-wee_heavy,0,0,244871462912,"{""name"":""Wee Heavy"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,36,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-summer_brau,0,0,245001945089,"{""name"":""Summer Brau"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+abita_brewing_company-strawberry,0,0,244381188097,"{""name"":""Strawberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:55:43"",""description"":""Strawberry Harvest Lager is a wheat beer made with real Louisiana strawberries."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,62,1
+bulmer_cider-strongbow_cider,0,0,244499873792,"{""name"":""Strongbow Cider"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bulmer_cider"",""updated"":""2010-07-22 20:00:20"",""description"":""Strongbow is a brand of cider manufactured in England by Bulmers. It is the UK's most popular cider[citation needed], accounting for more than half of the draught cider sold in British pubs. Strongbow is also unique in that it is produced with a Royal Warrant."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,61,1
+daleside_brewery,0,0,244499742720,"{""name"":""Daleside Brewery"",""city"":""Harrogate"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01423)-880022"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Camwal Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":53.9999,""lon"":-1.501}}",1,60,1
+mad_anthony_brewing-harry_baals_stout,0,0,244875198464,"{""name"":""Harry Baals Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+oggi_s_pizza_and_brewing_vista-torrey_pines_ipa,0,0,244869627906,"{""name"":""Torrey Pines IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,30,1
+great_divide_brewing-bee_sting_honey_ale,0,0,244746027008,"{""name"":""Bee Sting Honey Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+mill_steakhouse-5280_roadhouse_ghost_town_brown,0,0,244871462913,"{""name"":""5280 Roadhouse Ghost Town Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mill_steakhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,36,1
+pyramid_alehouse_brewery_and_restaurant_berkeley,0,0,245001945090,"{""name"":""Pyramid Alehouse, Brewery and Restaurant - Berkeley"",""city"":""Berkeley"",""state"":""California"",""code"":""94710"",""country"":""United States"",""phone"":""1-510-528-9880"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""901 Gilman Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5917,""lon"":-122.335}}",1,51,1
+alltech_s_lexington_brewing_company-limestone_crisp_hoppy_pale_ale_discontinued,0,0,244381188098,"{""name"":""Limestone Crisp-Hoppy Pale Ale (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alltech_s_lexington_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+cains-2008_culture_beer,0,0,244499873793,"{""name"":""2008 Culture Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cains"",""updated"":""2011-05-17 03:27:08"",""description"":""A full, clean and refreshing pale coloured bitter with an abundance of citrus hop character created by the blend of dry and late hopping techniques.\n\nIt also has subtle hints of malt and fruit on aroma and palate which gives the beer a well rounded balance."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,61,1
+de_dochter_van_de_korenaar,0,0,244631928832,"{""name"":""de dochter van de korenaar"",""city"":""baarle-hertog"",""state"":"""",""code"":""2387"",""country"":""Belgium"",""phone"":""0032 14699800"",""website"":""http://www.dedochtervandekorenaar.be"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""pastoor de katerstraat 24""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.4421,""lon"":4.9232}}",1,60,1
+mad_river_brewing-double_india_pale_ale,0,0,244875198465,"{""name"":""Double India Pale Ale"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+old_hat_brewery-alt,0,0,244869627907,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,30,1
+great_lakes_brewing-edmund_fitzgerald_porter,0,0,244746027009,"{""name"":""Edmund Fitzgerald Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,29,1
+minhas_craft_brewery-berghoff_original_lager_beer,0,0,244871462914,"{""name"":""Berghoff Original Lager Beer"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minhas_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+ramapo_valley_brewery-demon_fuel,0,0,245002010624,"{""name"":""Demon Fuel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ramapo_valley_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+amherst_brewing_company,0,0,244381253632,"{""name"":""Amherst Brewing Company"",""city"":""Amherst"",""state"":""Massachusetts"",""code"":""1002"",""country"":""United States"",""phone"":""413-253-4400"",""website"":""http://www.amherstbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Amherst Brewing Company is a full-service brewpub located in downtown Amherst, Massachusetts. Our 10-Barrel brewery is visible from the bar and produces some of the finest ales and lagers for serving in our 150-seat restaurant and 100-seat lounge and game room. Brewery tours can be made by appointment. Our giant, brass-top bar seats over 30 people and is fully stocked, including Single Malt Scotches and Small Batch Bourbons. An additional 40 seats are available on our seasonal patio; the best place in town to relax and enjoy an ABC draft or specialty brew while watching passersby. --From Amherst Website"",""address"":[""24 North Pleasant Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.3763,""lon"":-72.5199}}",1,62,1
+cj_s_brewery_grill-mocha_joe,0,0,244499939328,"{""name"":""Mocha Joe"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cj_s_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+devil_mountain_brewing-black_honey_ale,0,0,244631994368,"{""name"":""Black Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""devil_mountain_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,60,1
+mambo_beer-beer,0,0,244875198466,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mambo_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+oyster_bar_bistro_and_brewery-lighthouse_ale,0,0,244869693440,"{""name"":""Lighthouse Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oyster_bar_bistro_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+great_waters_brewing_company,0,0,244746092544,"{""name"":""Great Waters Brewing Company"",""city"":""Saint Paul"",""state"":""Minnesota"",""code"":""55102"",""country"":""United States"",""phone"":""1-651-224-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""426 St.Peter Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.9467,""lon"":-93.097}}",1,29,1
+moon_river_brewing_company-dixie_crystal,0,0,244871528448,"{""name"":""Dixie Crystal"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Belgian Trippel tradition calls for a moderately heavy grist of golden pilsner malt and \""Candy\"" sugar that sends the yeast into overdrive. We used local Dixie Crystal."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,36,1
+restaurant_isarbru-stationsweizen,0,0,245002010625,"{""name"":""Stationsweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""restaurant_isarbru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,51,1
+anheuser_busch-bud_light,0,0,244381253633,"{""name"":""Bud Light"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Introduced nationally in 1982, Bud Light is brewed using a blend of domestic and imported hops as well as a combination of barley malts and rice. It contains more malt and hops by ratio of ingredients than Budweiser, which gives the brew a distinctively clean and crisp taste."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,62,1
+cooper_s_cave_ale_company-radeau_red_ale,0,0,244500004864,"{""name"":""Radeau Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooper_s_cave_ale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Cooper's Cave Ale Company's flagship ale is an Irish Red Ale. Three English Malts and one Belgian Munich Malt make up the grain bill. It is a full bodied Red Ale packed with flavor, blended with American Nugget hops for bitterness and East Kent Golding for flavor and aroma. This ale has turned the heads of many \""dyed in the wool\"" American lager drinkers."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,61,1
+dixon_s_downtown_grill-wazee_wheat,0,0,244632059904,"{""name"":""Wazee Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dixon_s_downtown_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,60,1
+manayunk_brewery_and_restaurant-slam_dunkel,0,0,244875264000,"{""name"":""Slam Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+pike_pub_and_brewery-weisse,0,0,244992770048,"{""name"":""Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+harpoon_brewery_boston-harpoon_leviathan,0,0,244746092545,"{""name"":""Harpoon Leviathan"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""Harpoon Leviathan Imperial IPA will challenge your senses and your palate. As the vibrant aroma rushes out of your glass you will notice the blend of piney and tropical fruit notes.  At first sip, this big beer starts with apowerful hop bitterness up front and an aggressive hop flavor and character throughout. \r\n\r\nLeviathan Imperial IPA is brewed with tons of pale malt and just enough caramel malt to provide a sweet malt body to balance the hop intensity. We used copious amounts of a variety of hops including Chinook, Centennial, Simcoe, and Amarillo at various points during the boil to create a complex hop flavor and clean lingering bitter finish. We then fermented the beer with Harpoon’s own versatile proprietary yeast.   Finally, we dry hopped at a rate of over 1 lb a barrel to produce this beer’s massive aroma."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,29,1
+nicolet_brewing-oktoberfest,0,0,244871528449,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nicolet_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,36,1
+rogue_ales-morimoto_black_obi_soba_ale,0,0,245002010626,"{""name"":""Morimoto Black Obi Soba Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""The Morimoto Black Obi Soba Ale is part of the Rogue Ales Signature Series with internationally acclaimed Chef Masaharu Morimoto--a James Beard awarded chef and one of the stars of the Food Network series, Iron Chef. \r\n\r\nBlack Obi Soba Ale is dedicated to Phred Kaufmann, Rogues Distributor in Japan for the past decade--an International Rogue who runs Beer Inn Mugishutei in Sapporo (http://www.ezo-beer.com/index-e.html). Black Obi Soba is brewed with roasted buckwheat and malts (2-row pale, Munich, C-15, c-60 and Weyermann - note, this beer contains Gluten) providing a rich nut-laced flavor, while the 3 hop varieties (Horizon. Sterling and Cascade) blend to provide a refreshing zest. Morimoto Black Obi Soba Ale is packaged in a 22oz screened bottle and is available in select markets.\r\nTo learn more about the Chef, visit Morimotos web page."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,51,1
+anheuser_busch-jack_s_pumpkin_spice_ale,0,0,244381253634,"{""name"":""Jack's Pumpkin Spice Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Our fall seasonal is a subtle, well-balanced ale, copper in color, offering rich, full flavors and aromas of pumpkin and spices."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,62,1
+coronado_brewing_company-mermaids_red_ale,0,0,244500004865,"{""name"":""Mermaids Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A well balanced, medium-to full bodied beer, red in color and very flavorful. The red color and slight caramel-roasted flavor comes from generous amounts of caramel malts and a touch of chocolate malts. Well hopped to balance the malty sweetness, and dry-hopped with cascade for a full hop flavor and aroma."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,61,1
+dogfish_head_craft_brewery-chateau_jiahu,0,0,244632059905,"{""name"":""Chateau Jiahu"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""9000 year old Chateau Jiahu stands apart as the most ancient, chemically-attested alcoholic beverage in the world. Its recreation is based on painstaking excavation by Chinese archaeologists of Jiahuin the Yellow River basin, state-of-the-art microanalysis of pottery residues by American laboratories, and the inspired \""Neolithic\"" brewing of Dogfish Head Craft Brewery. Chateau Jiahu, then as now, opens a window into the world of our ancestors."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,60,1
+margaritaville_brewing_company-lone_palm_ale,0,0,244875264001,"{""name"":""Lone Palm Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""margaritaville_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,45,1
+pyramid_ales_brewery-pyramid_hefe_weizen,0,0,244992835584,"{""name"":""Pyramid Hefe Weizen"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed by the original Wheat Beer Pioneers, Pyramid Hefe Weizen is left unfiltered for extra flavor and aroma. \r\n\r\nHandcrafted with 60% malted wheat (10% more than Bavarian tradition calls for), our award-winning Hefe Weizen is unsurpassed in quality and exceptionally smooth and refreshing for the whole beer experience."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,30,1
+harvey_son_lewes-elizabethan_ale,0,0,244746092546,"{""name"":""Elizabethan Ale"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvey_son_lewes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+nodding_head_brewpub,0,0,244871528450,"{""name"":""Nodding Head Brewpub"",""city"":""Philadelphia"",""state"":""Pennsylvania"",""code"":""19102"",""country"":""United States"",""phone"":""1-215-569-9525"",""website"":""http://www.noddinghead.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1516 Sansom Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9502,""lon"":-75.1666}}",1,36,1
+ruppaner_brauerei,0,0,245002076160,"{""name"":""Ruppaner-Brauerei"",""city"":""Konstanz"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7531-/-9373-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hoheneggstrae 41-51""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6855,""lon"":9.208}}",1,51,1
+appleton_brewing,0,0,244381253635,"{""name"":""Appleton Brewing"",""city"":""Appleton"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.2619,""lon"":-88.4154}}",1,62,1
+crane_river_brewpub_and_cafe-zoo_brew_25,0,0,244500004866,"{""name"":""Zoo Brew 25"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,61,1
+dogfish_head_craft_brewery-fort,0,0,244632059906,"{""name"":""Fort"",""abv"":18.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong ale brewed with a ridiculous amount of pureed raspberries (over a ton of em!)."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,60,1
+marin_brewing-hefe_weiss,0,0,244875329536,"{""name"":""Hefe Weiss"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+red_oak_brewery,0,0,244992901120,"{""name"":""Red Oak Brewery"",""city"":""Whitsett"",""state"":""North Carolina"",""code"":""27377"",""country"":""United States"",""phone"":""1-888-Red-Oaks"",""website"":""http://www.redoakbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Red Oak Brew Pub was opened in February of 1991. In addition to brewing according to the Law of Purity, we decided not to filter or pasteurize our Bavarian Lagers to ensure the vitamins remain whole for that rich, mellow taste. Within months of opening the pub we began selling Red Oak to other accounts in the Greensboro area. In no time the 6 original aging tanks were maxed out so we added on to the building and installed 13 new tanks. By 2001 Red Oaks popularity had grown so much that we were brewing 24/7...and out of aging capacity. We began the search for a location to build a larger brewery with space to accommodate future growth.  After settling on a 12 acre tract along I 40/85 between Greensboro and Burlington in 2003...we began discussions with 3 Bavarian Brewery fabricators. Rolec of Cheming, Bavaria was chosen to supply the new brewery; and in 2005 construction began on the building to house it.  By the summer of 2007 Red Oak was ready to open the nation's most modern computerized brewing facility...consistently producing the Freshest, Purest, Bavarian Lagers in America."",""address"":[""6901 Konica Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.0613,""lon"":-79.5695}}",1,30,1
+harviestoun_brewery,0,0,244746158080,"{""name"":""Harviestoun Brewery"",""city"":""Alva"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01259)-769100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hillfoots Business Village""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":56.1531,""lon"":-3.8006}}",1,29,1
+north_country_brewery-paddlers_pale_ale,0,0,244871593984,"{""name"":""Paddlers Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This clean, crisp ale was dry-hopped and is as refreshing as a plunge in the Slippery Rock Creek."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+saint_louis_brewery_schlafy_tap_room-schlafly_barleywine,0,0,245002076161,"{""name"":""Schlafly Barleywine"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,51,1
+arthur_guinness_son-foreign_extra_stout,0,0,244381253636,"{""name"":""Foreign Extra Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arthur_guinness_son"",""updated"":""2010-12-20 15:44:53"",""description"":""Foreign Extra Stout is brewed with generous hops and roasted barley for a bittersweet balance & full-flavored, natural bite. Developed over 200 years ago for global export from Ireland, the addition of extra hops ensured this Stout would arrive to its destination in perfect condition. Today, Guinness Foreign Extra Stout is enjoyed by millions of people around the world."",""style"":""Foreign (Export)-Style Stout"",""category"":""Irish Ale""}",1,62,1
+diamond_knot_brewery_alehouse-brown_ale,0,0,244632387584,"{""name"":""Brown Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,61,1
+eddie_mcstiff_s_brewpub,0,0,244632059907,"{""name"":""Eddie McStiff's Brewpub"",""city"":""Moab"",""state"":""Utah"",""code"":""84532"",""country"":""United States"",""phone"":""1-435-259-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""57 South Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.5725,""lon"":-109.551}}",1,60,1
+mckenzie_brew_house-east_kent_ipa,0,0,244875329537,"{""name"":""East Kent IPA"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,45,1
+rock_bottom_restaurant_brewery_milwaukee-hefeweizen,0,0,244992901121,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_milwaukee"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,30,1
+hops_grillhouse_brewery_cherry_creek-lightning_bold_gold,0,0,244746158081,"{""name"":""Lightning Bold Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_grillhouse_brewery_cherry_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+oregon_trader_brewing-russian_imperial_stout,0,0,244871593985,"{""name"":""Russian Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oregon_trader_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+san_marcos_brewery_grill,0,0,245002076162,"{""name"":""San Marcos Brewery & Grill"",""city"":""San Marcos"",""state"":""California"",""code"":""92069"",""country"":""United States"",""phone"":""1-760-471-0050"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1080 West San Marcos Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.1345,""lon"":-117.191}}",1,51,1
+australian_brewing_corporation-king_lager,0,0,244381319168,"{""name"":""King Lager"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""australian_brewing_corporation"",""updated"":""2010-07-22 20:00:20"",""description"":""King Lager is brewed to an all Australian full strength formula in Germany, by the Giessener Brauhaus who have over 100 years of brewing knowledge. Made 100% naturally, King Lager complies with the strict German Purity Law of 1516 resulting in a superior tasting lager of world standing.\r\n\r\nOnly the highest quality barley malt, hops, water and yeast, have been combined to give King Lager its unique malt character and crisp, distinctive taste.\r\n\r\nThe sophisticated King Lager packaging reflects the quality of this exceptional, full flavoured beer. The sleek, contoured bottle, stylish 4 pack design and premium labelling makes this lager stand out amongst the best in any environment. \r\n\r\nKing Lager is full strength with 5.2% alc/vol, 20 beers to a case and 375ml of classic, crisp, clean beer in every bottle.\r\n\r\nMake your move now to King Lager – it’s world class"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,62,1
+diamond_knot_brewery_alehouse-industrial_ipa,0,0,244632453120,"{""name"":""Industrial IPA"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""This one's a butt-kicker! Essentially, the same recipe as the IPA, but with approximately 25% more grain and twice the hops!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,61,1
+edelweissbrauerei_farny-edelweiss,0,0,244632125440,"{""name"":""Edelweiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""edelweissbrauerei_farny"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,60,1
+mendocino_brewing_hopland-blue_heron_pale_ale,0,0,244875329538,"{""name"":""Blue Heron Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+rock_bottom_restaurant_brewery_milwaukee-honey_creek_pale_ale,0,0,244992901122,"{""name"":""Honey Creek Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_milwaukee"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+hops_haven_brew_haus,0,0,244746223616,"{""name"":""Hops Haven Brew Haus"",""city"":""Sheboygan"",""state"":""Wisconsin"",""code"":""53081"",""country"":""United States"",""phone"":""1-920-457-4677"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1327 North 14th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.7594,""lon"":-87.7228}}",1,29,1
+orlando_brewing-orlando_blonde_ale,0,0,244871593986,"{""name"":""Orlando Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orlando_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+sand_creek_brewing_company-whiskey_barrel_whitetail_cream_ale,0,0,245002141696,"{""name"":""Whiskey Barrel Whitetail Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sand_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+backwater_brewing-cat_tail_pale_ale,0,0,244381319169,"{""name"":""Cat Tail Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""backwater_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+eagle_brewing-golden,0,0,244632453121,"{""name"":""Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eagle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+egan_brewing-smokey_the_beer,0,0,244632125441,"{""name"":""Smokey the Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+michigan_brewing-superior_stout,0,0,244875395072,"{""name"":""Superior Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""All the good stuff and just a little bit more. Michigan Brewing Company is proud to offer this thick and creamy stout with all the roasted, coffee-like flavor you can handle. Need we say more?"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+sabmiller_india-peroni,0,0,244992966656,"{""name"":""Peroni"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Peroni Nastro Azzurro is an intensely crisp and refreshing lager beer, with\r\nan unmistakable touch of Italian style\r\nhttp://www.sabmiller.in/brands_peroni.html\r\nPeroni Beer, Peroni Lager Beer, Peroni Nastro Azzurro Bee"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,30,1
+humboldt_brewing-black_xantus,0,0,244746223617,"{""name"":""Black Xantus"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A bourbon barrel aged Imperial Stout infused with coffee."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,29,1
+pabst_brewing_company,0,0,244871659520,"{""name"":""Pabst Brewing Company"",""city"":""San Antonio"",""state"":""Texas"",""code"":""78296"",""country"":""United States"",""phone"":""1-800-935-2337"",""website"":""http://www.pabst.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""At Pabst Brewing Company, we make beer with history, with a sense of place. From Milwaukee to Motown, through the Pacific Northwest and back East again, our brands are like family and hometown friends. And we should know a little something about regional pride: Since we started in 1844, we've welcomed 24 new states into the Union. Today, Pabst crafts over 25 classic brews with strict adherence to original standards of quality. Our brands rack up national and international festival awards. Most important, they continue to make memories in the places that mean a lot to our consumers."",""address"":[""PO Box 1661""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":29.43,""lon"":-98.49}}",1,36,1
+saxer_brewing-pilsner,0,0,245002141697,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saxer_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+barley_island_brewing-60_shilling_scotch_ale,0,0,244381319170,"{""name"":""60 Shilling Scotch Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+abbaye_de_maredsous,0,0,244381384704,"{""name"":""Abbaye de Maredsous"",""city"":""Dene"",""state"":""Namur"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)82-69-82-11"",""website"":""http://www.maredsous10.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue de Maredsous, 11""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.3093,""lon"":4.7646}}",1,63,1
+egan_brewing-stuvenbrau_maibock,0,0,244632518656,"{""name"":""Stüvenbräu Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,61,1
+elysian_brewery_public_house-zephyrus_pilsner,0,0,244632190976,"{""name"":""Zephyrus Pilsner"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+middle_ages_brewing-old_marcus_ale,0,0,244875395073,"{""name"":""Old Marcus Ale"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Typically Yorkshire. A strong Ale in which all English grown hop varieties are used. The grassy earthy character of Kent Goldings hops is the keynote in the aroma and finish. Try with fish and chips or a meat pie."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,45,1
+santa_barbara_brewing-pacific_pale,0,0,244992966657,"{""name"":""Pacific Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_barbara_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+humboldt_brewing-summer_nectar_wheat_ale,0,0,244746289152,"{""name"":""Summer Nectar Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+pete_s_brewing-bohemian_pilsner,0,0,244995325952,"{""name"":""Bohemian Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+schooner_brewery-oktoberfest,0,0,245002141698,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,51,1
+barley_john_s_brewpub-wild_brunette,0,0,244381319171,"{""name"":""Wild Brunette"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+allentown_brew_works-hop_explosion,0,0,244381450240,"{""name"":""Hop Explosion"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoppiest Brew Works beer ever? The smell of grapefruit, a sweet malt flavor, and oh by the way, lots of hop bitterness. Brewed in the tradition of West Coast ales, we have put loads of malt and hops in our kettle to come up with this sensational ale. Brewed with pale, and crystal malts, hopped with Tomahawks for Yakima Valley, WA. This beer styled has made many a microbrewery famous and this one is sure to please all those who love hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,63,1
+elgood_sons,0,0,244632518657,"{""name"":""Elgood & Sons"",""city"":""Wisbech"",""state"":""Cambridge"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wisbech PE13 1LN""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.6643,""lon"":0.1595}}",1,61,1
+emerson_brewing,0,0,244632190977,"{""name"":""Emerson Brewing"",""city"":""Dunedin"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":""64-(03)-477-1812"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""14 Wickliffe Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-45.872,""lon"":170.518}}",1,60,1
+midnight_sun_brewing_co-venus_belgian_style_quadrupel,0,0,244875460608,"{""name"":""Venus - Belgian-style Quadrupel"",""abv"":16.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Venus—goddess of love and beauty—exudes grace and voluptuousness. Indulgent with lush dark malts and sensuous star anise, VENUS is decadent and divine in body and spirit. Leisure lounging in French oak Cabernet Sauvignon wine casks results in a lovely liquid feast of fabulously luxurious flavors."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,45,1
+schloss_eggenberg-samichlaus_bier_2006,0,0,244993032192,"{""name"":""Samichlaus Bier 2006"",""abv"":14.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schloss_eggenberg"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed only once a year on December 6. Samichlaus is aged for 10 months before bottling. This beer is perhaps the rarest in the world. Samichlaus may be aged for many years to come. Older vintages become more complex with a creamy warming finish.""}",1,30,1
+lammin_sahti_oy-kataja_olut_ivb,0,0,244746289153,"{""name"":""Kataja Olut IVB"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lammin_sahti_oy"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+philadelphia_brewing_co-kenziger,0,0,244995391488,"{""name"":""Kenziger"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""philadelphia_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a real drinkin' beer! - a golden session ale that boasts both a European birthright and a thirst-quenching Philadelphia sensibility. Ke n zinger is refreshingly crisp and smooth, with a spirited flavor that grabs the attention of taste buds everywhere. Get some!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,36,1
+schussenrieder_erlebnisbrauerei-weisse,0,0,245002207232,"{""name"":""Weiße"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schussenrieder_erlebnisbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,51,1
+beach_brewing-harvest_gold,0,0,244381384704,"{""name"":""Harvest Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+appalachian_brewing_company-ipa_series_zeus,0,0,244381515776,"{""name"":""IPA Series (Zeus)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A series of single hop, small batch IPAs brewed in Camp Hill. These IPAs showcase the bitterness, flavor, and aroma of each particular hop variety."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,63,1
+english_ales_brewery,0,0,244632518658,"{""name"":""English Ales Brewery"",""city"":""Marina"",""state"":""California"",""code"":""93933"",""country"":""United States"",""phone"":""1-831-883-3000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""223 Reindollar Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.6802,""lon"":-121.804}}",1,61,1
+fitger_s_brewhouse_brewery_and_grill-farmhouse_reserve,0,0,244632190978,"{""name"":""Farmhouse Reserve"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+mikkeller,0,0,244875460609,"{""name"":""Mikkeller"",""city"":""København"",""state"":"""",""code"":"""",""country"":""Denmark"",""phone"":""45-4162-3489"",""website"":""http://www.mikkeller.dk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Slien 2, 2. tv""]}",1,45,1
+schooner_brewery-ranger_red,0,0,244993032193,"{""name"":""Ranger Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,30,1
+marin_brewing-albion_amber_ale,0,0,244869103616,"{""name"":""Albion Amber Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,29,1
+philadelphia_brewing_co-newbold_ipa,0,0,244995391489,"{""name"":""Newbold IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""philadelphia_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Hop shortage be damned! We love IPA's, Philadelphia loves IPA's, we're going to brew an IPA. Rekindle your passion for your favorite Phi ladelphia brewery by enjoying our substantial, aromatic India Pale Ale. Newbold is aggressively hopped, with a crimson hue and depth of flavor that will satisfy the most demanding devotee of this revived style. Newbold I.P.A. tells it like it is."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,36,1
+sierra_nevada_brewing_co-india_pale_ale,0,0,245002207233,"{""name"":""India Pale Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+beach_chalet_brewery-fleishhacker_stout,0,0,244381384705,"{""name"":""Fleishhacker Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_chalet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,62,1
+bamberger_mahr_s_bru-weisse,0,0,244381515777,"{""name"":""Weisse"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,63,1
+estes_park_brewery-stinger_wild_honey_wheat,0,0,244632584192,"{""name"":""Stinger Wild Honey Wheat"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We put close to a half a pound of Colorado honey per case in this wheat ale. The honey adds a sweetness and raises the alcohol content slightly. We use Mount hood and hallertau hops."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,61,1
+flour_city_brewing,0,0,244632190979,"{""name"":""Flour City Brewing"",""city"":""Rochester"",""state"":""New York"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.161,""lon"":-77.6109}}",1,60,1
+moonlight_brewing-baritone_red,0,0,244875460610,"{""name"":""Baritone Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moonlight_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,45,1
+selin_s_grove_brewing_co-shade_mountain_oatmeal_stout,0,0,244993097728,"{""name"":""Shade Mountain Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""selin_s_grove_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,30,1
+maritime_pacific_brewing-jolly_roger,0,0,244869169152,"{""name"":""Jolly Roger"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+pike_pub_and_brewery-old_bawdy_2006,0,0,244995457024,"{""name"":""Old Bawdy 2006"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+simmerberg_brusttt_und_taferne-dunkles_weissbier,0,0,245002207234,"{""name"":""Dunkles Weissbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""simmerberg_brusttt_und_taferne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+bootleggers_steakhouse_and_brewery-double_zz_raspberry_wheat,0,0,244381384706,"{""name"":""Double ZZ Raspberry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bootleggers_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,62,1
+barley_s_brewing_1-pilsner,0,0,244381515778,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_s_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+f_x_matt_brewing-saranac_extra_special_bitter,0,0,244632584193,"{""name"":""Saranac Extra Special Bitter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Bitters are popular pub beers in England and are closely related to the more well known pales ales. Saranac Extra Special Bitter has a rich, malty taste balanced by the pleasant bitterness of Williamette Hops. The finish is dry with a hint of the Foral English Fuggle and Spicy Saaz hop. Enjoy!"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,61,1
+flyers_restraunt_and_brewery-sick_duck_imperial_stout,0,0,244632256512,"{""name"":""Sick Duck Imperial Stout"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich and very dark Imperial Stout that has a complex flavor profile with hints of molasses and caramel.  Brewed in July to allow time for aging, Sick Duck finishes very smooth for such a big beer."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,60,1
+morland_and_co-old_speckled_hen,0,0,244875460611,"{""name"":""Old Speckled Hen"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""morland_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,45,1
+ship_inn_brewpub,0,0,244993097729,"{""name"":""Ship Inn Brewpub"",""city"":""Milford"",""state"":""New Jersey"",""code"":""8848"",""country"":""United States"",""phone"":""1-800-651-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""61 Bridge Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.5684,""lon"":-75.0954}}",1,30,1
+mash_house_restaurant_and_brewery-hoppy_hour_ipa,0,0,244869169153,"{""name"":""Hoppy Hour IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mash_house_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,29,1
+pike_pub_and_brewery,0,0,244995457025,"{""name"":""Pike Pub and Brewery"",""city"":""Seattle"",""state"":""Washington"",""code"":""98101"",""country"":""United States"",""phone"":""1-206-622-6044"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1415 First Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6081,""lon"":-122.34}}",1,36,1
+sixpoint_craft_ales-righteous_ale,0,0,245002207235,"{""name"":""Righteous Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sixpoint_craft_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Righteous Ale is actually a Rye Beer, brewed with a high amount of hops."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,51,1
+brauerei_locher_ag-leermond_bier,0,0,244500070400,"{""name"":""Leermond Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_locher_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+belfast_bay_brewing_company-lobster_ale,0,0,244381515779,"{""name"":""Lobster Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belfast_bay_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,63,1
+firehouse_brewing-wilderness_wheat,0,0,244632649728,"{""name"":""Wilderness Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,61,1
+founders_brewing-dirty_bastard_scotch_style_ale,0,0,244632256513,"{""name"":""Dirty Bastard Scotch Style Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Founders flagship beer. Dirty Bastard is an absolute beautiful beer to behold. Dark ruby in color and brewed with ten varieties of imported malts this beer continuously lives up to its reputation as a bold and powerful ale. Dirty Bastard is complex in the finish with hints of smoke and peat paired with a malty richness, finalized with a good bit of hop attitude.  This beer ain't for the wee lads."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,60,1
+nelson_brewing-paddywhack_ipa,0,0,244875526144,"{""name"":""Paddywhack IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nelson_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,45,1
+south_shore_brewery-porter,0,0,245111062528,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,30,1
+matilda_bay_brewing-redback_original_malt_wheat_beer,0,0,244869234688,"{""name"":""Redback Original Malt Wheat Beer"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""matilda_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+rail_house_restaurant_and_brewpub-silver_cream,0,0,244995457026,"{""name"":""Silver Cream"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+slab_city_brewing-ale,0,0,245002272768,"{""name"":""Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+brouwerij_abdij_saint_sixtus-trappist_westvleteren_8,0,0,244500070401,"{""name"":""Trappist Westvleteren 8"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_abdij_saint_sixtus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,62,1
+bierbrouwerij_de_koningshoeven-la_trappe_dubbel,0,0,244381581312,"{""name"":""La Trappe Dubbel"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,63,1
+flatlander_s_restaurant_brewery-winter_delight,0,0,244632649729,"{""name"":""Winter Delight"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,61,1
+four_peaks_brewing-belgian_wit,0,0,244632256514,"{""name"":""Belgian Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Belgian Wits originated in Belgium, in the area of Brabant just east of Brussels. This are was a part of the Netherlands in the early 1800's and was the wheat growing region. In this era, the Dutch basically controlled the spice trade, thus, coriander as well as Curacao orange peel made its way into the beer. Spices were used well before the widespread use of hops in beer. At one point there were more than thirty breweries producing a Wit, but overtime the style died off and in 1954 the last of the breweries ceased operations. One of the most famous brands of Belgian Wits is Hoegaarden (pronounced \""Who Garden\"") produced by Pierre Celis back in 1966. This revived the style and by the 1980's it was popular again!\r\n\r\nBelgian Wits are similar to a Hefeweizen with respect to the cloudiness of the beer and some phenolic (clove) and tart flavors. Wits should have white, rocky head when poured and should be almost white in appearance, hence the name. \r\n\r\nYou will smell oranges and coriander which is different than a Hefeweizen that smells of banana and clove. Our version of a Belgian Wit is called \""Hoof - Hearted Wit,\"" and it is brewed to style with dried bitter and sweet orange peel and coriander seeds."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,60,1
+new_holland_brewing_company-ichabod,0,0,244875526145,"{""name"":""Ichabod"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Ichabod combines malted barley and real pumpkin with cinnamon and nutmeg in a delicious and inviting brew. A rewarding complement to many dishes, Ichabod pairs well with autumnal foods such as poultry and root vegetables. After dinner, try it with your favorite dessert!"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,45,1
+spilker_ales-hopluia,0,0,245111128064,"{""name"":""Hopluia"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spilker_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,30,1
+michigan_brewing-celis_grand_cru,0,0,244869234689,"{""name"":""Celis Grand Cru"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A GABF Gold Medal winner for 2007, this Belgian style strong ale, bright and golden colored is brewed with a hint of orange peel and coriander. This balanced, pleasant to drink brew, will sneak up on you. Consume with caution."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,29,1
+red_star_brewery_grille-golden_light,0,0,244995522560,"{""name"":""Golden Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_star_brewery_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,36,1
+sly_fox_brewhouse_and_eatery_royersford-featherweight_lager,0,0,245119844352,"{""name"":""Featherweight Lager"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+brouwerij_kerkom-bloesem_bink,0,0,244500135936,"{""name"":""Bloesem Bink"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_kerkom"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+bierbrouwerij_de_koningshoeven-la_trappe_quadrupel_2000_2001,0,0,244381581313,"{""name"":""La Trappe Quadrupel 2000/2001"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+flying_fish_brewing_company-esb_ale,0,0,244632649730,"{""name"":""ESB Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This ESB is a classic British extra special bitter made fresh with an American slant. A beautiful copper color with an amber head, this classic style features five different malts, including imported English malts, and three hop varieties. The rich malty start features caramel notes that develop into a smooth, pleasurable hop finish."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,61,1
+full_sail_brewing_1-very_special_pale_golden_ale,0,0,244632322048,"{""name"":""Very Special Pale Golden Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+north_country_brewery-squirrel_s_nut_brown,0,0,244875526146,"{""name"":""Squirrel's Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This smooth Ale has an even display of hop bitterness and bold malt flavor, with a hint of nutty flavor from the dark malt, to produce a superior brown ale taste"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,45,1
+steamworks-the_great_pumpkin_ale,0,0,245111193600,"{""name"":""The Great Pumpkin Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""A spiced ale that tastes just like pumpkin pie in a glass.\r\n\r\nThe Pumpkin Ale is a malty, copper coloured brew that's spiced with cinnamon, cloves, nutmeg and ginger. We add 100 lbs of pumpkin directly to the mash and the resulting beer tastes just like pumpkin pie in a glass."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,30,1
+midnight_sun_brewing_co-full_curl_scotch_ale,0,0,244869234690,"{""name"":""Full Curl Scotch Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Full Curl Scotch Ale is brewed in the traditional Wee Heavy Scotch strong ale style. (This is not to be confused with the lighter-bodied Scottish ale style.) All about malt, Full Curl pours dark brown with a tan head. Its medium body provides sustenance while its strength boosts courage. With a stiff mug of Full Curl under your belt, you may even have what it takes to don a kilt."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,29,1
+redhook_ale_brewery-hoptoberfest,0,0,244995522561,"{""name"":""Hoptoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,36,1
+spaten_franziskaner_brau-franziskaner_hefe_weissbier_dunkel,0,0,245119844353,"{""name"":""Franziskaner Hefe-Weissbier Dunkel"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":""Franziskaner Hefe-Weisse Dunkel wins supporters with its refreshing yet aromatic and full-bodied flavour. This dark, cloudy specialty is a special treat for weiss beer connoisseurs and bock beer aficionados.\r\n\r\nAll of Franziskaner's weiss beer products - Hefe-Weisse Hell and Hefe-Weisse Dunkel - are top-fermentation beers noted for their agreeable carbonation levels and zesty wheat flavour. The consistently high quality of our products makes Franziskaner weiss beers a refreshing taste sensation of a special sort. All Franziskaner weiss beers are brewed in strict adherence to the Bavarian Purity Law of 1516.""}",1,51,1
+brouwerij_van_steenberge-bruegel_amber_ale,0,0,244500135937,"{""name"":""Bruegel Amber Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+bj_s_restaurant_and_brewery,0,0,244381581314,"{""name"":""BJ's Restaurant and Brewery"",""city"":""Brea"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":""714-990-2095"",""website"":""http://www.bjsrestaurants.com/beer.aspx"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""600 Brea Mall""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.9132,""lon"":-117.889}}",1,63,1
+fort_collins_brewery-chocolate_stout,0,0,244632649731,"{""name"":""Chocolate Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fort_collins_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,61,1
+glen_ellyn_sports_brew-black_forest_dunkelweizen,0,0,244632322049,"{""name"":""Black Forest Dunkelweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+northwest_brewwrks,0,0,244875591680,"{""name"":""Northwest Brewwrks"",""city"":""Kirkland"",""state"":""Washington"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.6815,""lon"":-122.209}}",1,45,1
+stout_brothers_public_house-celtic_cross_stout,0,0,245111193601,"{""name"":""Celtic Cross Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stout_brothers_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,30,1
+midnight_sun_brewing_co-obliteration_i,0,0,244869300224,"{""name"":""Obliteration I"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With passion and purpose, we present this series of hop-centric beers. Using different hop varieties and brewing techniques, we aim to capture bold, distinct hop characteristics in aroma, flavor and finish. While we explore the world of hops, we invite you to learn along with us: these beers offer an incredible opportunity to experience the diversity of hops while engaging the palate and obliterating the senses.\r\n\r\nObliteration I is a Double IPA, heavily hopped with a big malt base. Its aroma is pungent with citrus, onion, and a touch of alcohol. The sweetness of caramel malt is offset with spice and pepper flavors that lead into an overwhelmingly bitter finish."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,29,1
+remington_watson_smith_brewing-nocturn,0,0,244995588096,"{""name"":""Nocturn"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""remington_watson_smith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,36,1
+sprecher_brewing-ipa,0,0,245119909888,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,51,1
+bube_s_brewery-bube_s_red_ale,0,0,244500201472,"{""name"":""Bube's Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This was the first draught on tap in November 2001. It has developed to a very quaffable ale. the slight sweet malt flavor is balanced with East Kent Golding hops to produce this delicious reddish-amber ale."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+blitz_weinhard_brewing-hazelnut_stout,0,0,244381646848,"{""name"":""Hazelnut Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blitz_weinhard_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+four_peaks_brewing-8th_street_ale,0,0,244632715264,"{""name"":""8th Street Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Now In Bottles!! Our award winning 8th Street Ale is based on an English-style \""Best Bitter\"" which is the most common ale served in British pubs. What makes 8th Street Ale uncommon is its mellow bitterness and its slightly sweet malt flavor. It's aroma is derived from rare, imported Kentish hops, and lots of them.\r\nAlcohol content approximately 4.5% by volume (ALWAYS ON TAP!!)"",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,61,1
+golden_city_brewery-brain_damage,0,0,244632322050,"{""name"":""Brain Damage"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_city_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,60,1
+oggi_s_pizza_and_brewing_vista-sweet_spot_hefe,0,0,244875591681,"{""name"":""Sweet Spot Hefe"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,45,1
+sweetwater_brewing_atlanta-georgia_brown,0,0,245111193602,"{""name"":""Georgia Brown"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_atlanta"",""updated"":""2010-07-22 20:00:20"",""description"":""It's definitely one of the finer American Brown Ales. A deep, copper colored, mild brown ale.\r\n\r\nSGB is accentuated by a slight nuttiness from its malt character. Designed to be a session beer it has a real smooth finish with a subtle hop character."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,30,1
+midnight_sun_brewing_co-pride,0,0,244869300225,"{""name"":""Pride"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""RIDE Belgian-style Strong Pale Ale boasts a glorious deep gold color and an amazing yet arrogant head. Plentiful pale malt creates beautiful, agile body. Assertive hops and Belgian yeast achieve charismatic floral and spice notes in aroma and flavor. But Pride’s predominant and unique character comes from its exposure to Brettanomyces in French oak Chardonnay barrels. At once tart and refreshing yet earthy and musty, Pride is unlike most beers on earth. And it’s bitter, lingering finish demands another sip. \r\n\r\nAwarded a BRONZE medal at World Beer Cup 2008, Pride has much too much to boast about."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,29,1
+rock_bottom_restaurant_brewery_minneapolis-big_horn_nut_brown_ale,0,0,244995653632,"{""name"":""Big Horn Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,36,1
+spring_house_brewing_company-two_front_teeth_holiday_ale,0,0,245119909889,"{""name"":""Two Front Teeth Holiday Ale"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""We welcome the release of “Two Front Teeth Holiday Ale” a Belgian style Saison with subtle real cherry flavoring.  What a good way to drown out in-laws by enjoying a pint or two of this recent release from Spring House Brewing Company.  This is not for the faint palate; this holiday offering is coming in at 9.4% ABV!  We hope you stop by for a taste or a Growler fill but unfortunately you have to stop in for this one.  Enjoy!"",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,51,1
+bull_bush_pub_brewery-allgood_amber_ale,0,0,244500267008,"{""name"":""Allgood Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+boston_beer_company-sam_adams_light,0,0,244381646849,"{""name"":""Sam Adams Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Great tasting yet drinkable, with a clean smooth finish.  Sam Adams Light® is not just a lighter version of our Samuel Adams Boston Lager® but rather the culmination of over two years of tireless research and brewing trials to create a flavorful Light beer. And it has proved to be worth the wait. Brewed using only the finest two row malt and German Noble hops it has a smooth, complex roasted malt character that is superbly balanced with the subtle orange fruit notes of the Noble hops. Sam Adams Light® finishes crisp and smooth without any lingering bitterness, leaving you yearning for more."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,63,1
+front_street_brewery-hefeweizen,0,0,244632715265,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""front_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,61,1
+goose_island_beer_company_fulton_street-hex_nut_brown_ale,0,0,244632387584,"{""name"":""Hex Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,60,1
+on_tap_bistro_brewery-alt_er_ego_amber,0,0,244875591682,"{""name"":""Alt-Er-Ego Amber"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,45,1
+the_alchemist-rapture,0,0,245111259136,"{""name"":""Rapture"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,30,1
+midnight_sun_brewing_co-rumbah_double_rum_bock,0,0,244869300226,"{""name"":""RUMBAH Double Rum Bock"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Beer Description:\r\nThis double bock provides smooth sailin' in rough seas. The fact that this luscious lager was aged in rum barrels creates the illusion that the open sea is a safe place. And while riding out these waves of grain, you may fall victim to the dangers of pirates, rum, bock. OK...maybe the beach is a bit over-rated."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,29,1
+rogue_ales-oregon_golden_ale,0,0,244995653633,"{""name"":""Oregon Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Oregon Golden Ale is the original Rogue brew dating back to 1988 and the days of the old Ashland brewpub location (which was destroyed by a flood several years ago). Deep golden in color with a rich malty aroma. Delicately smooth and crisp flavor and an herbal finish. Oregon Golden Ale is created from Northwest Harrington and Klages, and Maier Munich Malts (18% speciality grains, .19 lbs grain per bottle). Kent Golding and Cascade hops. Oregon Golden Ale is available in a 22-ounce bottle (the 12-ounce 6-pack was phased out in early 2005), and on draft."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,36,1
+st_georgenbru_modschiedler_kg-keller_bier,0,0,245119975424,"{""name"":""Keller-Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_georgenbru_modschiedler_kg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+bull_bush_pub_brewery-stonehenge_stout,0,0,244500267009,"{""name"":""Stonehenge Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,62,1
+boulevard_brewing_company-boulevard_unfiltered_wheat,0,0,244381646850,"{""name"":""Boulevard Unfiltered Wheat"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Boulevard Unfiltered Wheat Beer is a lively, refreshing ale with a naturally citrusy flavor and distinctive cloudy appearance. This easy-drinking American-style wheat beer has become our most popular offering, and the best-selling craft beer in the Midwest."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,63,1
+gaslight_brewery-harvest_ale,0,0,244632780800,"{""name"":""Harvest Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,61,1
+green_mill_brewing_saint_paul,0,0,244758020096,"{""name"":""Green Mill Brewing - Saint Paul"",""city"":""Saint Paul"",""state"":""Minnesota"",""code"":""55105"",""country"":""United States"",""phone"":""1-651-698-0353"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""57 Hamline Avenue South""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.9398,""lon"":-93.1568}}",1,60,1
+pacific_coast_brewing-harvest_wheat,0,0,244998930432,"{""name"":""Harvest Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+the_church_brew_works-heavenly_hefeweizen,0,0,245111259137,"{""name"":""Heavenly Hefeweizen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""I’m sure everyone here knows, Pittsburgh has some humid summers.  What can you do to escape the heat and enjoy yourself?  Well I’ve got the answer.  How about a light thirst quenching Hefe Weizen (pronounced hefa Vite zen) in the cool environment of our Hop Garden patio.  I can hear you wondering, what is a hefe weizen?  Allay your fears my friends because I’m going to tell you.  A hefe weizen is a special style of beer made with malted wheat and malted barley.  Hefe weizens are from Germany.  This beer is top fermented (an ale) with a very special yeast.  The Hop levels are kept deliberately low in order to bring out the character of the yeast.  If you notice the nose of the beer, it has a clove-like or fruity aroma.  The grain bill includes 50% wheat malt and 50% barley malt.  It is served very carbonated and a touch cloudy.  It is cloudy because it is served unfiltered.  The remaining yeast contributes flavor, adds B vitamins, and improves the beer as it ages."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,30,1
+midnight_sun_brewing_co-wrath,0,0,244869300227,"{""name"":""Wrath"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""WRATH Belgian-style Double IPA is fiercely bitter with notes of spice and earth. Its fury slowly and purposefully unfurls on the tongue, relentlessly bringing on more and more enraged flavor with each sip. \r\n\r\nWrath wreaks havoc on your taste buds. Anything you drink after this may as well be water."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,29,1
+rowland_s_calumet_brewery-calumet_bock,0,0,244995719168,"{""name"":""Calumet Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rowland_s_calumet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,36,1
+standing_stone_brewing_company-standing_stone_lager,0,0,245119975425,"{""name"":""Standing Stone Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A dry, crisp refreshing filtered lager.  A good balance between sweet malt and light bitter hops.  This beer is made with a Southern German lager yeast, Saaz, and Hershbrucker hops."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,51,1
+daas-daas_organic_witte,0,0,244500267010,"{""name"":""Daas Organic Witte"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""daas"",""updated"":""2010-07-22 20:00:20"",""description"":""The Daas Organic Witte is very well received by women beer drinkers; it is a naturally cloudy Belgian wheat beer. Its fruity blend of subtle citrus (baked oranges) and spice (coriander) flavors compliment its crispy dry and bitter hop finish."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,62,1
+brasserie_artisanale_de_rulles-triple,0,0,244381712384,"{""name"":""Triple"",""abv"":8.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_artisanale_de_rulles"",""updated"":""2010-12-20 16:14:15"",""description"":"""",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,63,1
+george_gale_company-horndean_special_bitter_hsb,0,0,244632780801,"{""name"":""Horndean Special Bitter / HSB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""george_gale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+hanssens_artisanal,0,0,244758085632,"{""name"":""Hanssens Artisanal"",""city"":""Dworp"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-02-/-380-31-33"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Vroenenbosstraat 15""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.729,""lon"":4.2971}}",1,60,1
+pearl_street_brewery-old_skeezer_barley_wine,0,0,244998995968,"{""name"":""Old Skeezer Barley Wine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pearl_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+thomas_hooker_brewing,0,0,245111259138,"{""name"":""Thomas Hooker Brewing"",""city"":""Bloomfield"",""state"":""Connecticut"",""code"":""6002"",""country"":""United States"",""phone"":""860-242-3111"",""website"":""http://www.hookerbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Tastings every Saturday from 12-6pm, and 1st and 3rd Friday of every month from 5-8."",""address"":[""16 Tobey Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.8087,""lon"":-72.7108}}",1,30,1
+milwaukee_ale_house-pull_chain_pail_ale,0,0,244869365760,"{""name"":""Pull Chain Pail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+saint_arnold_brewing-saint_arnold_brown_ale,0,0,244995719169,"{""name"":""Saint Arnold Brown Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A beautiful, deep copper brown ale. It has a full, malty body with hints of chocolate, a touch of sweetness and a light hop flavor. A complex malt character is created by combining five different types of malts. It has a rich, creamy head with a fine lace. The light fruitiness, characteristic of ales, is derived from a proprietary yeast strain. \r\n\r\nSaint Arnold Brown Ale is best consumed at 45-50° Fahrenheit."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,36,1
+stone_brewing_co-arrogant_bastard_ale,0,0,245119975426,"{""name"":""Arrogant Bastard Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+day_brewing,0,0,244632911872,"{""name"":""Day Brewing"",""city"":""Marrero"",""state"":""Louisiana"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":29.8994,""lon"":-90.1004}}",1,62,1
+brasserie_des_franches_montagnes-cuvee_du_7eme,0,0,244381712385,"{""name"":""Cuvée du 7ème"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_des_franches_montagnes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+glen_ellyn_sports_brew-evolutionary_ipa,0,0,244632780802,"{""name"":""Evolutionary IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,61,1
+hapa_s_brew_haus_and_restaurant-paradise_pale_lager,0,0,244758085633,"{""name"":""Paradise Pale Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+pivovar_starobrno,0,0,244999061504,"{""name"":""Pivovar Starobrno"",""city"":""Brno"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-543-516-111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hlinky 12""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.1911,""lon"":16.5918}}",1,45,1
+troegs_brewing-troegs_splinter_beer_red,0,0,245111259139,"{""name"":""Tröegs Splinter Beer Red"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Before filtering the final batch of 2008 Mad Elf we racked some beer into bourbon barrels for six weeks of tender loving care. After bottling, we aged the beer for approximately eight months. This allows the tart cherries to push to the front. Subtle vanilla, bourbon, charred wood, coconut and toasted nut endnotes emanate from Splinter Red."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,30,1
+mogollon_brewing_company-horny_toad_ipa,0,0,244869365761,"{""name"":""Horny Toad IPA"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mogollon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""If you like big, bold, pronounced hop character, then this beer is for you.  One taste and you’ll find yourself right smack in the middle of Hop Head Heaven!  But this beer has more to offer than just hops.  We use tons of the finest malted barley available to balance out this beer.  The result of our efforts is a beer with a magnitude of hop aroma and bite, yet perfectly balanced with a clean, crisp malty flavor.  WARNING: This beer is not intended for the masses that prefer a mild domestic beer,  It’s big, bold characteristics and 7.1% a.b.v. are not intended for the weak."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,29,1
+saint_somewhere_brewing_company-pays_du_soleil,0,0,244995784704,"{""name"":""Pays du Soleil"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_somewhere_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Amber ale with Palmetto berries and hibiscus."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,36,1
+sudwerk_privatbrauerei_hbsch-hefe_weizen,0,0,245119975427,"{""name"":""Hefe Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sudwerk_privatbrauerei_hbsch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,51,1
+de_leyerth_brouwerijen,0,0,244632911873,"{""name"":""De Leyerth Brouwerijen"",""city"":""Ruiselede"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-051-/-68-89-99"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Krommekeerstraat 21""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.0811,""lon"":3.3699}}",1,62,1
+brasserie_la_binchoise,0,0,244500332544,"{""name"":""Brasserie La Binchoise"",""city"":""Binche"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)64-37-01-75"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Faubourg St Paul 38""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.408,""lon"":4.1659}}",1,63,1
+glen_ellyn_sports_brew-smoked_porter,0,0,244632780803,"{""name"":""Smoked Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,61,1
+hereford_hops_steakhouse_and_brewpub_3-st_edmunds_strong_porter,0,0,244758085634,"{""name"":""St. Edmunds Strong Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,60,1
+pivzavod_baltika-baltika_5,0,0,244999061505,"{""name"":""Baltika #5"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivzavod_baltika"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+vermont_pub_brewery,0,0,245111324672,"{""name"":""Vermont Pub & Brewery"",""city"":""Burlington"",""state"":""Vermont"",""code"":""5401"",""country"":""United States"",""phone"":""(802) 865-0500"",""website"":""http://www.vermontbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""VPB is the third oldest brewpub on the East Coast."",""address"":[""144 College St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.4773,""lon"":-73.2144}}",1,30,1
+montana_brewing-whitetail_wheat,0,0,244869365762,"{""name"":""Whitetail Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+sanford_s_grub_and_pub-oil_can_stout,0,0,244995784705,"{""name"":""Oil Can Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sanford_s_grub_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+three_floyds_brewing-apocalypse_cow,0,0,245120040960,"{""name"":""Apocalypse Cow"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,51,1
+de_proef_brouwerij-tripel_krullekop,0,0,244632977408,"{""name"":""Tripel Krullekop"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+brauerei_spezial-ungespundetes,0,0,244500332545,"{""name"":""Ungespundetes"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_spezial"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+golden_gate_park_brewery-celebration_red,0,0,244632846336,"{""name"":""Celebration Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_gate_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,61,1
+high_falls_brewing-dundee_india_pale_ale,0,0,244758151168,"{""name"":""Dundee India Pale Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""It takes a bit of seasoning to understand that bitter can be a good thing. \r\n\r\nWhen you’re a child, you want everything to be sweet. When you’re a teenager, you want everything to be sweeeeet. But when you get a bit wiser and acquire some taste, you realize that bitter is an excellent alternative. It’s a sign of complexity. It’s a sign of maturity. It’s a sign of the times. Face it, modern life demands a little bitterness every once in a while. \r\n\r\nWhen you are in the mood for something bitter, Dundee IPA is hop bitterness at its finest. As the youngsters would say, that’s sweet.\r\n\r\nAn aggressively hopped IPA brewed with Amarillo and Simcoe hops. Blended Crystal malts balance the flavors with a distinctive spicy aroma and a long, crisp finish."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,60,1
+rahr_sons_brewing_company-rahr_s_winter_warmer,0,0,244999061506,"{""name"":""Rahr's Winter Warmer"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Warm up the long, cold nights of winter with Rahr's latest seasonal offering. Wonderfully robust, rich and full-bodied, Rahr's Winter Warmer is crated in the fine British tradition of holiday ales. Perfect for either holiday gatherings or quiet evenings at home."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,45,1
+wh_brakspear_sons,0,0,245747875840,"{""name"":""WH Brakspear & Sons"",""city"":""Henley-on-Thames"",""state"":""Oxford"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.5375,""lon"":-0.9046}}",1,30,1
+aldaris,0,0,244378238976,"{""name"":""Aldaris"",""city"":""Rga"",""state"":"""",""code"":"""",""country"":""Latvia"",""phone"":""371-70-23-200"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Tvaika iela 44""]}",1,53,1
+monteith_s_brewing_co,0,0,244869365763,"{""name"":""Monteith's Brewing Co."",""city"":""Greymouth"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":"""",""website"":""http://www.monteiths.com/nz/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Cnr Turumaha and Herbert St""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":-42.4505,""lon"":171.207}}",1,29,1
+santa_fe_brewing_company-viszolay_belgian,0,0,244995784706,"{""name"":""Viszolay Belgian"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Viszolay is a distinctly continental ale with a hint of the southwest. Belgian malt, Bavarian and Czech hops, and a secret blend of German and Belgian yeast strains provide this beer, inspired by the Trappist’s Dubbel style ale, with a strong traditional base, while a hint of New Mexico wildflower honey infuses it with that ethereal quality that we New Mexicans simply call, “enchanting”. Like the Trappist ales from which it sprung, Viszolay is light and refreshing. The hop’s subtle notes are overpowered by complex fruity flavors derived from the Belgian yeast, leaving Viszolay a very drinkable (yet rather potent) addition to the Santa Fe Brewing Company’s family of beers."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,36,1
+thunderhead_brewery-dark_wheat,0,0,245120040961,"{""name"":""Dark Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+del_mar_stuft_pizza_and_brewing,0,0,244632977409,"{""name"":""Del Mar Stuft Pizza and Brewing"",""city"":""San Diego"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.7153,""lon"":-117.157}}",1,62,1
+breckenridge_brewery-lucky_u_denver_special_bitter,0,0,244500332546,"{""name"":""Lucky U Denver Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+goose_island_beer_company_fulton_street-goose_island_ipa,0,0,244632846337,"{""name"":""Goose Island IPA"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Goose Island website:\r\n\r\n\""Our IPA recalls a time when ales shipped from England to India were highly hopped to preserve their distinct taste during the long journey. The result, quite simply a hop lover's dream. And this classic ale adds a fruity aroma, set off by a dry malt middle, to ensure that the long hop finish is one you'll remember.\"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,61,1
+hops_haven_brew_haus-port_washington_pier_96_lager,0,0,244758216704,"{""name"":""Port Washington Pier 96 Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_haven_brew_haus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,60,1
+richbrau_brewing_company-richbrau_india_pale_ale,0,0,244999127040,"{""name"":""Richbrau India Pale Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A hops showcase in aroma, flavor and bitterness. We used the delightful Amarillo hop as the most prominent choice."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,45,1
+wharf_rat-oliver_esb,0,0,245747875841,"{""name"":""Oliver ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wharf_rat"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,30,1
+alesmith_brewing,0,0,244378304512,"{""name"":""AleSmith Brewing"",""city"":""San Diego"",""state"":""California"",""code"":""92126"",""country"":""United States"",""phone"":""1-858-549-9888"",""website"":""http://alesmith.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9368 Cabot Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.892,""lon"":-117.144}}",1,53,1
+moonlight_brewing-4868_dark_wheat,0,0,244869431296,"{""name"":""4868 Dark Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moonlight_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,29,1
+scuttlebutt_brewing,0,0,244995850240,"{""name"":""Scuttlebutt Brewing"",""city"":""Everett"",""state"":""Washington"",""code"":""98201"",""country"":""United States"",""phone"":""1-425-257-9316"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1524 West Marine View Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.9975,""lon"":-122.214}}",1,36,1
+thunderhead_brewery-russian_imperial_stout,0,0,245120106496,"{""name"":""Russian Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,51,1
+delafield_brewhaus-noch_einmal_dunkel,0,0,244633042944,"{""name"":""Noch Einmal Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+breckenridge_brewery-oatmeal_stout,0,0,244500398080,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+great_waters_brewing_company-golden_prairie_blond,0,0,244758347776,"{""name"":""Golden Prairie Blond"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+industrija_piva_i_sokova_trebjesa,0,0,244758216705,"{""name"":""Industrija Piva I Sokova Trebjesa"",""city"":""Nikic"",""state"":"""",""code"":"""",""country"":""Serbia and Montenegro"",""phone"":""381-83-242-433"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Njegoseva 18""]}",1,60,1
+river_west_brewing-maibock,0,0,244999127041,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,45,1
+wychwood_brewery-old_devil,0,0,245747941376,"{""name"":""Old Devil"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,30,1
+bandana_brewery-eagle_lake_pale_ale,0,0,244378304513,"{""name"":""Eagle Lake Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+nodding_head_brewpub-spring_ale,0,0,244869431297,"{""name"":""Spring Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+sierra_nevada_brewing_co-porter,0,0,244995915776,"{""name"":""Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nDark and rich, Sierra Nevada Porter is a delicious, medium-bodied ale with a creamy head. The Porter’s smooth flavor (malty with hints of caramel) comes from a blend of deep-roasted barley malts.\r\n\r\n\r\n“…there can be little doubt that this is one of the best porters being brewed anywhere in the world today.”\r\n\r\n— Christopher Finch, A Connoisseur’s Guide \r\nto the World’s Best Beer\r\n\r\nFIRST PLACE\r\nCalifornia Brewers Festival (Robust Porter: 2000)\r\nColorado State Fair (Porter: 1996)"",""style"":""Porter"",""category"":""Irish Ale""}",1,36,1
+tied_house_cafe_brewery_san_jose-cascade_amber,0,0,245120106497,"{""name"":""Cascade Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,51,1
+diamond_knot_brewery_alehouse-lighthouse_ale,0,0,244633042945,"{""name"":""Lighthouse Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+brick_brewing-premium_lager,0,0,244500398081,"{""name"":""Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brick_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+green_bay_brewing-barley_wine_2001,0,0,244758347777,"{""name"":""Barley Wine 2001"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+john_harvard_s_brewhouse_wilmington-scottish_ale,0,0,244758216706,"{""name"":""Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brewhouse_wilmington"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+schlossbru,0,0,244999127042,"{""name"":""Schlossbru"",""city"":""Dornbirn"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-05572-/-386-683"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Oberdorferstrae 9""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.4097,""lon"":9.7514}}",1,45,1
+yuengling_son_brewing-yuengling_porter,0,0,245748006912,"{""name"":""Yuengling Porter"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Yuengling Dark Brewed Porter is an original specialty beer that has been brewed expressly for tavern owners and family trade since 1829. We are proud to be recognized as one of the largest porter producers in the US. An authentic craft-style beer, our Porter calls for a generous portion of caramel and dark roasted malts, which deliver a rich full-bodied flavor and creamy taste with slight tones of chocolate evident in every sip. It pours dark, topped with a thick foamy head, and imparts a faint malty aroma. This smooth and robust Porter has a unique character that complements any meal from steak or seafood to chocolate desserts. Yuengling Dark Brewed Porter is enjoyed by even the most discerning consumer for its flawless taste and unwavering quality."",""style"":""Porter"",""category"":""Irish Ale""}",1,30,1
+barley_brothers_brewery_and_grill-blonde_ale,0,0,244378304514,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_brothers_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+park_city_brewing-tie_die_red,0,0,244992311296,"{""name"":""Tie Die Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""park_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,29,1
+smuttynose_brewing_co-big_a_ipa,0,0,245113683968,"{""name"":""Big A IPA"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Big A IPA has earned its share of praise over the last few years. In 2004 the New York Times named it its top IPA , and in 2007 Mens Journal Magazine included it on its list of 25 best beers in America. The last of each year's edition typically leaves our warehouse around mid-May, and, as always, it doesn't last long. \r\n\r\nStash Wojciechowski, the “Killer Kielbasa,” created this bonafide India Pale Ale recipe exclusively for the Smuttynose Big Beer Series."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,36,1
+titletown_brewing-oktoberfest,0,0,245120106498,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,51,1
+duvel_moortgat,0,0,244633042946,"{""name"":""Duvel Moortgat"",""city"":""Breendonk"",""state"":""Antwerpen"",""code"":"""",""country"":""Belgium"",""phone"":""32-038-86-71-21"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Breendonkdorp 58""]}",1,62,1
+bridgeport_brewing-old_knucklehead_2003,0,0,244500463616,"{""name"":""Old Knucklehead 2003"",""abv"":9.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+heavenly_daze_brewery_and_grill-el_rey_cerveza,0,0,244758413312,"{""name"":""El Rey Cerveza"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,61,1
+joshua_huddy_s_brew_pub_and_grill-pale_ale,0,0,244758216707,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joshua_huddy_s_brew_pub_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+scottish_newcastle_plc,0,0,244999192576,"{""name"":""Scottish & Newcastle PLC"",""city"":""Edinburgh"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0131)-528-2000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""33 Ellersly Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":55.9465,""lon"":-3.2485}}",1,45,1
+big_buck_brewery,0,0,244378304515,"{""name"":""Big Buck Brewery"",""city"":""Gaylord"",""state"":""Michigan"",""code"":""49735"",""country"":""United States"",""phone"":"""",""website"":""http://www.bigbuck.com/gaylord.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The large dining room provides ample seating with a separate full bar.  From choice cuts of aged beef, including a 20-ounce Porterhouse, or a 9-ounce Filet Mignon, menu selections range from fine steaks, chicken, pork and seafood entrees, to a tempting selection of appetizers. Our chef's daily dessert specials complete your dining experience.  Join our master brewer for a tour of the operating brewery and taste test our newest brew, or visit our Northwoods inspired gift shop for a selection of unusual gifts. Featuring our glass walled, 15,000 barrel capacity brewery, Big Buck offers 8 signature beers along with seasonal specialty brews sure to please the most discriminating palate.   Enjoy dinner or drinks on our deck during the season.  Watch your favorite team or make a presentation on one of our many large screen televisions.  Our child and adult game rooms are available for your pre or post dining entertainment. With advance notice, special hours and special menus, including breakfast menus, may be arranged!"",""address"":[""550 South Wisconsin Avenue""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":45.0223,""lon"":-84.6826}}",1,53,1
+paulaner-hacker_pschorr_weisse_bock,0,0,244992376832,"{""name"":""Hacker-Pschorr Weisse Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,29,1
+snowshoe_brewing_sonora,0,0,245113683969,"{""name"":""Snowshoe Brewing - Sonora"",""city"":""Sonora"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.9841,""lon"":-120.382}}",1,36,1
+top_of_the_hill_restaurant_and_brewery-bitter,0,0,245120172032,"{""name"":""Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""top_of_the_hill_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+elgood_sons-flag_porter_1825_original,0,0,244633108480,"{""name"":""Flag Porter 1825 Original"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elgood_sons"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,62,1
+brouwerij_de_ranke-xx_bitter,0,0,244500463617,"{""name"":""XX Bitter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_ranke"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+hoffbrau_steaks_brewery_2-windmill_wheat_ale,0,0,244758413313,"{""name"":""Windmill Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,61,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_real_ginger_brew,0,0,244758216708,"{""name"":""Hitachino Nest Real Ginger Brew"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+scuttlebutt_brewing-hefe_weizen,0,0,244999192577,"{""name"":""Hefe Weizen"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+bj_s_restaurant_and_brewery-nutty_brewnette,0,0,244378370048,"{""name"":""Nutty Brewnette"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,53,1
+pivovar_hradec_krlov-black_lion_lev_czech_premium_dark_beer,0,0,244992442368,"{""name"":""Black Lion Lev Czech Premium Dark Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_hradec_krlov"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+south_shore_brewery-chocolate_mint_stout,0,0,245113749504,"{""name"":""Chocolate Mint Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+upper_mississippi_brewing,0,0,245120172033,"{""name"":""Upper Mississippi Brewing"",""city"":""Clinton"",""state"":""Iowa"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.8445,""lon"":-90.1887}}",1,51,1
+empyrean_brewing_company-maple_nut_brown,0,0,244633108481,"{""name"":""Maple Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,62,1
+brouwerij_duysters-loterbol,0,0,244500529152,"{""name"":""Loterbol"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_duysters"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+hoppin_frog_brewery-hop_master_s_abbey_belgian_style_double_ipa,0,0,244758413314,"{""name"":""Hop Master's Abbey Belgian-style Double IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""American hops and Belgian abbey beer flavors intermingle to create a spicy and assertive beer style all their own. Citrusy character from select hops dominate this assertive Double I.P.A., complimented by a unique Belgian flavor to add complexity and ultimate beer satisfaction. The result is a flavor combination that’s a whirlwind of taste sensations."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,61,1
+kulmbacher_mnchshof_bru,0,0,244758216709,"{""name"":""Kulmbacher Mnchshof Bru"",""city"":""Kulmbach"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.1077,""lon"":11.453}}",1,60,1
+sierra_leone_brewery-star_beer,0,0,244999258112,"{""name"":""Star Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_leone_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""• Millions of golden bubbles\r\n• Sparkling brightness\r\n• Refreshing taste\r\n• Cascading foam head\r\n• Cold filtered for quality\r\n\r\nhttp://www.slbrewery.com/index.php?option=com_content&task=view&id=18&Itemid=36""}",1,45,1
+blue_cat_brew_pub-wigged_pig_wheat,0,0,244378370049,"{""name"":""Wigged Pig Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_cat_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,53,1
+raccoon_river_brewing-bandit_ipa,0,0,244992507904,"{""name"":""Bandit IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,29,1
+st_peter_s_brewery-old_style_porter,0,0,245113749505,"{""name"":""Old-Style Porter"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,36,1
+walldorff_brew_pub-padawan_pale_ale,0,0,245751152640,"{""name"":""Padawan Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""walldorff_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""A mild pleasant ale with lingering hoppy notes."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,51,1
+feldschlosschen_ag,0,0,244633108482,"{""name"":""Feldschlößchen AG"",""city"":""Dresden"",""state"":""Sachsen"",""code"":""1189"",""country"":""Germany"",""phone"":"""",""website"":""http://www.feldschloesschen.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Cunnersdorfer Str. 25""]}",1,62,1
+brouwerij_van_steenberge-monk_s_cafe,0,0,244500529153,"{""name"":""Monk's Cafe"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""A sweet and sour beer that gets its flavor from mixing old and new ales. An unusual, yet perfect, combination.""}",1,63,1
+jack_s_brewing-hefeweizen,0,0,244758478848,"{""name"":""Hefeweizen"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,61,1
+lakefront_brewery-cream_city_pale_ale,0,0,244758282240,"{""name"":""Cream City Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+sierra_nevada_brewing_co-sierra_nevada_pale_ale,0,0,244999258113,"{""name"":""Sierra Nevada Pale Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nOur most popular beer, Sierra Nevada Pale Ale, is a delightful interpretation of a classic style. It has a deep amber color and an exceptionally full-bodied, complex character. Generous quantities of premium Cascade hops give the Pale Ale its fragrant bouquet and spicy flavor. \r\n\r\n“Sierra Nevada Pale Ale is the flagship beer, the one that made Chico famous. It is a flawless beer that opens with bright, perky high notes of maltiness and orange blossom and segues into a delectable hoppiness.”\r\n\r\n– Elaine Louie, Premier Beer—A Guide to America's Best Bottled Microbrews\r\n \r\n   \r\n  \r\nGOLD MEDAL WINNER\r\nGreat American Beer Festival (American Pale Ale: 1995, 1994, 1993; \r\nClassic English Pale Ale: 1992; Pale Ale: 1990, 1989, 1987)"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+boddington_s_brewery-pub_ale_draught,0,0,244378370050,"{""name"":""Pub Ale Draught"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boddington_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+rahr_sons_brewing_company-blonde_lager,0,0,244992507905,"{""name"":""Blonde Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""It's our very first beer - golden medium-bodied and brewed as a traditional Munich Helles style pale lager. It features a rounded maltiness without being too heavy. And like every proud Texan, it has a good head, is pleaseant but never overly sweet."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+stone_cellar_brewpub_restaurant-stout,0,0,245113749506,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_cellar_brewpub_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+wedge_brewery,0,0,245751218176,"{""name"":""Wedge Brewery"",""city"":""Asheville"",""state"":""NC"",""code"":""28801-3128"",""country"":""United States"",""phone"":""828-505-2792"",""website"":""http://wedgebrewing.com/"",""type"":""brewery"",""updated"":""2011-05-23 10:34:59"",""description"":""The Wedge Brewing Co. is located in the lower level of the Wedge Studios situated in the River Arts District of Asheville, N.C. The building is a classic brick warehouse adjacent  to the railroad tracks. The original use of the structure was probably as a food warehouse. The space the brewery is in at onetime stored slaughtered hogs.\n    We chose this location because it is in the last frontier of Asheville.\n    We chose this specific space because it is a perfect fit for our brewing system and gives\nus great outdoor potential."",""address"":[""125B Roberts St""]}",1,51,1
+firestone_walker_brewing_company-union_jack_india_pale_ale,0,0,244633174016,"{""name"":""Union Jack India Pale Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firestone_walker_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The newest member of the Firestone family, Union Jack is the aggressive IPA that you’ve been searching for. Citrus, pineapple, and a full chewy malt profile finish clean on your palate. Over 70 IBUs and 7.5% alcohol by volume, Union Jack won’t have any problem competing with the big India Pale Ales. A beer true to its origins; deeply hopped and bolstered for a long voyage."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,62,1
+browar_zywiec-krakus,0,0,244500529154,"{""name"":""Krakus"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""browar_zywiec"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+357,0,0,244369719296,"{""name"":""357"",""city"":"""",""state"":"""",""code"":"""",""country"":"""",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,32,1
+jacob_leinenkugel_brewing_company-auburn_ale,0,0,244758478849,"{""name"":""Auburn Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,61,1
+lancaster_brewing_co-lancaster_limited_triple,0,0,244758282241,"{""name"":""Lancaster Limited Triple"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,60,1
+silverado_brewing,0,0,244999323648,"{""name"":""Silverado Brewing"",""city"":""Saint Helena"",""state"":""California"",""code"":""94574"",""country"":""United States"",""phone"":""1-707-967-9876"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3020 St. Helena Highway North""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.5243,""lon"":-122.497}}",1,45,1
+boss_browar_witnica_s_a-mocny_boss_boss_beer,0,0,244378435584,"{""name"":""Mocny BOSS / BOSS Beer"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boss_browar_witnica_s_a"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,53,1
+red_star_brewery_grille-greensburg_lager,0,0,244992507906,"{""name"":""Greensburg Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_star_brewery_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+taylor_s_crossing_brewing-mad_scow_stout,0,0,245113749507,"{""name"":""Mad Scow Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_crossing_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+weinkeller_brewery_berwyn-kristall_weiss,0,0,245751218177,"{""name"":""Kristall Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,51,1
+fish_brewing_company_fish_tail_brewpub-light,0,0,244633174017,"{""name"":""Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+budjovick_mansk_pivovar-samson_crystal_lager_beer,0,0,244500594688,"{""name"":""Samson Crystal Lager Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""budjovick_mansk_pivovar"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+512_brewing_company-512_wit,0,0,244369784832,"{""name"":""(512) Wit"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Made in the style of the Belgian wheat beers that are so refreshing, (512) Wit is a hazy ale spiced with coriander and domestic grapefruit peel. 50% US Organic 2-row malted barley and 50% US unmalted wheat and oats make this a light, crisp ale well suited for any occasion."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,32,1
+jobber_s_canyon_restaurant_brewery-oktoberfest,0,0,244758478850,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jobber_s_canyon_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,61,1
+legacy_brewing_co-hedonism_ale,0,0,244758282242,"{""name"":""Hedonism Ale"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legacy_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Wickedly tasty red ale packed with a full aroma from dry hopping and a massive hop flavor. Specially brewed with all European malts and West Coast whole flower hops. The result is a rich ruby red color; lacy collar and a feast of hop aroma and flavor."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,60,1
+sonoran_brewing_company-burning_bird_pale_ale,0,0,245117288448,"{""name"":""Burning Bird Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sonoran_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Burning Bird is our representation of the Phoenix, our city’s namesake, a mythical bird which lived 500 years, consumed itself by fire, then was reborn from its ashes. Like the phoenix of old, this pale ale is reborn from the time when fabulous hoppy brews were more than mere myths."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,45,1
+boulder_beer_company-never_summer_ale,0,0,244378435585,"{""name"":""Never Summer Ale"",""abv"":5.94,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Winter Warmer"",""category"":""Other Style""}",1,53,1
+redhook_ale_brewery-sunrye,0,0,244992507907,"{""name"":""SunRye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+the_livery-bourbon_barrel_aged_cousin_jax,0,0,245113815040,"{""name"":""Bourbon Barrel Aged Cousin Jax"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Way up in the Keewenaw Peninsula in Michigans UP, Mt. Bohemia ski area has a powder run hidden at the top called \""Cousin Jack\"" (named after the Cornish miners)that winds its' way steeply through the rocks and trees. AAAHHH WINTER!!! Double the Belgian Malt, double the Amarillo hops-a perfect way to end any day. Everyones' favorite cousin!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,36,1
+flyers_restraunt_and_brewery-catalina_common_lager,0,0,244633174018,"{""name"":""Catalina Common Lager"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This copper colored lager is brewed with hybrid yeast that ferments at warmer temps, giving that clean refreshing taste of a lager with the slight fruitiness of an ale."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,62,1
+burton_bridge_brewery,0,0,244500594689,"{""name"":""Burton Bridge Brewery"",""city"":""Burton-upon-Trent"",""state"":""Staffordshire"",""code"":""DE14 1SY"",""country"":""United Kingdom"",""phone"":""44-(01283)-510573"",""website"":""http://www.burtonbridgebrewery.co.uk/Index.shtml"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Bridge Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":52.8065,""lon"":-1.6225}}",1,63,1
+aksarben_brewing_bop,0,0,244369850368,"{""name"":""Aksarben Brewing (BOP)"",""city"":""Omaha"",""state"":""Nebraska"",""code"":""68130"",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This brewery is closed."",""address"":[""11337 Davenport St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2603,""lon"":-96.0903}}",1,32,1
+jolly_pumpkin_artisan_ales-e_s_bam,0,0,244758478851,"{""name"":""E.S. Bam"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An Extra Special Farmhouse Ale. A Bam celebration of excess. More malt, more hops, same vivacious personality."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,61,1
+lift_bridge_brewery-biscotti,0,0,244758282243,"{""name"":""Biscotti"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lift_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We drew inspiration from Steve’s Grandmother’s holiday biscotti recipe to create this one of a kind brew. By utilizing an array of malts, oats, wheat, pure local honey, light European hops and delicately spicing with Grains of Paradise, Madagascar vanilla beans, whole star anise, all brought together with traditional Belgian yeast, the result is a cloudy, deep copper colored, complex experience. This delight to the senses should be served in a 12 ounce footed glass and allowed to warm to 50 degrees to fully gather the malt and spice spectrum."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,60,1
+south_australian_brewing-old_australia_stout,0,0,245117353984,"{""name"":""Old Australia Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_australian_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+boulder_beer_company,0,0,244378435586,"{""name"":""Boulder Beer Company"",""city"":""Boulder"",""state"":""Colorado"",""code"":""80301"",""country"":""United States"",""phone"":""1-303-444-8448"",""website"":""http://boulderbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2880 Wilderness Place""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.0267,""lon"":-105.248}}",1,53,1
+river_horse_brewing_company-tripel_horse,0,0,244992573440,"{""name"":""Tripel Horse"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_horse_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Notice a unique aromatic nose with a hint of vanilla esters, which comes from the Belgian ale yeast. Tripel Horse has a big body and rich mouth feel and finishes mostly dry with only a touch of sweetness. If you shy from some of the sweeter Belgian ales, we think you will enjoy this one. The palate improves with age, so keep some on hand and you can ride Tripel Horse down a new path with each opened bottle."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,29,1
+titletown_brewing-winter_gale_spiced_ale,0,0,245113815041,"{""name"":""Winter Gale Spiced Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+flying_fish_brewing_company,0,0,244633239552,"{""name"":""Flying Fish Brewing Company"",""city"":""Cherry Hill"",""state"":""New Jersey"",""code"":""8003"",""country"":""United States"",""phone"":""(856) 489-0061"",""website"":""http://www.flyingfish.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""When Gene Muller founded Flying Fish Brewing Co. in 1995, he did so first on the World Wide Web - making it the world's first virtual microbrewery. That early Web site helped generate positive press coverage and helped attract the investors needed to make the virtual brewery a real one. Muller said the idea was to make the Web site This Old House meets the World Wide Web�letting people go behind the taps and see the thousands of details needed to put a microbrewery together.  He also wanted to give beer lovers a chance, via their computers, to roll up their cyber-sleeves and help build the brewery. The site let beer lovers help select and name beers, design t-shirts and labels, volunteer to be a taste-tester and even apply for a job as a brewer. Visitors to the Web site can sign up for FlyingFishMail a monthly e-mail newsletter which now boasts more than 12,000 subscribers. Muller, who got into the brewing field to become a brewer, trained at Chicago's Siebel Institute of Technology, America's oldest brewing school. He quickly realized someone was going to have to run the day-to-day business of the brewery and now serves as President and Head Janitor (though not necessarily in that order). Flying Fish Brewing Company is located in Cherry Hill, New Jersey, approximately seven miles east of Philadelphia. In a state that once boasted 50 breweries, it is the first microbrewery in Southern New Jersey and the first new brewery built in that part of the state in more than half a century. From its opening in late 1996, Flying Fish has tripled its capacity and become the largest of the approximately 20 craft breweries in the state. Head brewer Casey Hughes now produces four full-time styles, as well as a variety of seasonal beers.   The key word to describe all Flying Fish beers is balance. The beers are full-flavored, yet highly drinkable. Flavors harmonize, not fight for individual attention. Hopping is generous, but to style. Seeing beer as equal to, if not superior to, wine, Flying Fish beers are designed to complement food. Because of this effort, one can walk into any fine restaurant in the Philadelphia region and be pretty sure of finding a Flying Fish beer available. Flying Fish beers were the first in the region to be featured at the Great British Beer Festival, Oregon Brewers Festival and Canada's Biere de Mondial Festival. They have also won several medals at the Real Ale Festival in Chicago, the World Beer Championships and is the only New Jersey brewery featured in the 2000 book Best American Beers."",""address"":[""1940 Olney Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9121,""lon"":-74.9701}}",1,62,1
+caldera_brewing-dry_hop_red,0,0,244500594690,"{""name"":""Dry Hop Red"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A red ale dry hopped with three different hop varieties.""}",1,63,1
+alaskan_brewing-alaskan_amber,0,0,244369850369,"{""name"":""Alaskan Amber"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Alt. The name of this beer style comes from the German word \""alt\"" meaning \""old\"". This refers to the aging that alts undergo since they ferment more slowly and at colder temperatures than most ales. Slow fermentation helps condition the flavors in Alaskan Amber, contributing to its overall balance and smoothness.\r\n\r\nRichly malty and long on the palate, with just enough hop backing to make this beautiful amber colored \""alt\"" style beer notably well balanced.\r\n\r\nAlaskan Amber is made from glacier-fed water and a generous blend of the finest quality European and Pacific Northwest hop varieties and premium two-row pale and specialty malts.  Our water originates in the 1,500 square-mile Juneau Ice Field and the more than 90 inches of rainfall we receive each year."",""style"":""Old Ale"",""category"":""British Ale""}",1,32,1
+jolly_pumpkin_artisan_ales-luciernaga,0,0,244758544384,"{""name"":""Luciérnaga"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An artisan pale ale brewed in the Grand Cru tradition. Enjoy its golden effervescence and gentle hop aroma. Coriander and Grains of Paradise round out the spicy palate, melting o so softly into a silken finish of hoppiness and bliss! Make any season a celebration!"",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,61,1
+mad_river_brewing-jamaica_brand_red_ale,0,0,244881555456,"{""name"":""Jamaica Brand Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+st_stan_s_brewing_co,0,0,245117353985,"{""name"":""St. Stan's Brewing Co."",""city"":""Modesto"",""state"":""California"",""code"":""95354"",""country"":""United States"",""phone"":""1-209-606-2739"",""website"":""http://www.ststans.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""821 L Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.6417,""lon"":-121.004}}",1,45,1
+boulevard_brewing_company-boulevard_dry_stout,0,0,244378501120,"{""name"":""Boulevard Dry Stout"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Velvety black and perfectly opaque, our bottled Dry Stout is the somewhat livelier companion to our popular draught version of this enduring style. This surprisingly smooth, drinkable beer is a delightful harmony of smoky roasted flavors and tangy, coffee-like notes."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,53,1
+river_west_brewing-marzen,0,0,244992573441,"{""name"":""Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,29,1
+trap_rock_restaurant_and_brewery-octoberfest,0,0,245113815042,"{""name"":""Octoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trap_rock_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,36,1
+foothills_brewing_company,0,0,244633305088,"{""name"":""Foothills Brewing Company"",""city"":""Winston-Salem"",""state"":""North Carolina"",""code"":""27101"",""country"":""United States"",""phone"":""(336) 777-3348"",""website"":""http://www.foothillsbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""638 W. 4th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.0973,""lon"":-80.2509}}",1,62,1
+capital_brewery-capital_fest_beer,0,0,244500660224,"{""name"":""Capital Fest Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,63,1
+alaus_darykla_kalnapilis,0,0,244369850370,"{""name"":""Alaus Darykla Kalnapilis"",""city"":""Panevys"",""state"":"""",""code"":"""",""country"":""Lithuania"",""phone"":""370-45-505223"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Taikos aleja 1""]}",1,32,1
+jt_whitney_s_brewpub_and_eatery-koln_kolsch,0,0,244758544385,"{""name"":""Köln Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+magic_hat-chaotic_chemistry,0,0,244881555457,"{""name"":""Chaotic Chemistry"",""abv"":10.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Aged Barleywine Ale infused with the copper glow of more than 1,000 setting suns.  This exceptional offering has infinite body... a big, sweet malty tumult followed by a long, balanced, hop symphony."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,60,1
+stevens_point_brewery-spring_bock,0,0,245117353986,"{""name"":""Spring Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,45,1
+brasserie_d_orval-orval_trappist_ale,0,0,244378566656,"{""name"":""Orval Trappist Ale"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_orval"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,53,1
+rock_art_brewery-rock_art_american_red_ale,0,0,244992573442,"{""name"":""Rock Art American Red Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_art_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The unofficial name for this beer is “Super Glide”. Malty rich with a hint of spicy hops and roasted grains. This beer is one smooth ride with a clean finish! We brewed this one with American Pale, oats, flaked barley, black, chocolate, red malt, melandolin malt. American hops include Magnum, Centennial, Liberty and Crystal. Enjoy!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,29,1
+troegs_brewing-troegs_splinter_beer_gold,0,0,245113815043,"{""name"":""Tröegs Splinter Beer Gold"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The transformation of Scratch #3-2007 to Splinter Gold has been a slow rest in oak wine barrels dosed with brettanomyces. During a two-year aging period the horsy flavors of the brett combined with the Westmalle yeast used during primary fermentation to create a complex blend of flavors. Bone-dry and 12% abv, Splinter Gold is highly carbonated."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,36,1
+fordham_brewing-copper_head_ale,0,0,244633305089,"{""name"":""Copper Head Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fordham_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+captain_lawrence_brewing_company-brown_bird_brown_ale,0,0,244500660225,"{""name"":""Brown Bird Brown Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Named after the little birds that fly by the brewery looking for grain after the weather turns cold, this was originally to be a Fall/Winter seasonal. Clearly we underestimated the market for this smooth and malty brown ale, and we have decided to keep it for year round enjoyment."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+alesmith_brewing-speedway_stout,0,0,244369915904,"{""name"":""Speedway Stout"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A HUGE Imperial Stout that weighs in at an impressive 12% ABV! As if that's not enough, we added pounds of coffee for a little extra kick. Our special-edition Brewer's Reserve Speedway Stout, which is aged in Bourbon barrels, has been rated the #1 BEST BEER IN THE WORLD at ratebeer.com. It was also featured on CNBC's \""Squawk Box\"" in a segment on the best dark beers in America."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,32,1
+jt_whitney_s_brewpub_and_eatery-mad_badger_barley_wine,0,0,244758609920,"{""name"":""Mad Badger Barley Wine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+main_street_alehouse,0,0,244881555458,"{""name"":""Main Street Alehouse"",""city"":""Gresham"",""state"":""Oregon"",""code"":""97030"",""country"":""United States"",""phone"":""1-503-669-0569"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""333 North Main Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.5001,""lon"":-122.431}}",1,60,1
+stone_brewing_co-old_guardian_barley_wine_2003,0,0,245117419520,"{""name"":""Old Guardian Barley Wine 2003"",""abv"":9.91,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+brasserie_de_l_abbaye_des_rocs-blanche_double,0,0,244378566657,"{""name"":""Blanche Double"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+rogue_ales-chipotle_ale,0,0,244992638976,"{""name"":""Chipotle Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Dedicated to Spanish author Juan de la Cueva, who, in 1575, wrote of a an dish that combined seedless chipotles with beer: Chipotle Ale is based on Rogues American Amber Ale, but delicately spiced with smoked jalapeno (chipotle) chile peppers. Deep amber in color with a tight head, rich malty aroma, delicately smooth and crisp flavor, and subtle chipotle chili finish. Chipotle Ale is created from Northwest Harrington, Klages, and Maier Munich Malts; Willamette and Cascade hops; and Chipolte (smoked jalapeno) Peppers. Available in a 22-ounce (12/case), 12-ounce (24 loose/case) screened bottles, and on draft. Blend it with Rogue Chocolate Stout and create a Mole black and tan!""}",1,29,1
+tyranena_brewing-fighting_finches_bock,0,0,245113880576,"{""name"":""Fighting Finches Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Finches will get you if you don’t watch out!\"" In the early days of southern Wisconsin, falling into the clutches of the \""Fighting Finches\"" was the ultimate threat. Moses Finch fathered 21 offspring whose most notable talents were stealing horses and robbing stagecoaches. From their stronghold in the impenetrable marshes west of Lake Mills, the Finches raided the farms of local settlers and held up the early travelers between Madison and Milwaukee.\r\n\r\nThe Finches are long gone, but their legend lives on. So enjoy a pint of our Fighting Finches Bock… or you better watch out, ‘cause the Finches are gonna get you!"",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,36,1
+greene_king-olde_suffolk,0,0,244758806528,"{""name"":""Olde Suffolk"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greene_king"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,62,1
+carlsberg_bryggerierne-47_bryg,0,0,244500660226,"{""name"":""47 Bryg"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlsberg_bryggerierne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,63,1
+america_s_brewing-sweeney_stout,0,0,244369981440,"{""name"":""Sweeney Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+keg_microbrewery_restaurant-stout,0,0,244758609921,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keg_microbrewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,61,1
+manayunk_brewery_and_restaurant-bohemian_blonde,0,0,244881620992,"{""name"":""Bohemian Blonde"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest beer – pale blonde in color with a crisp, softly sweet malt flavor, smooth finish and very subtle bitterness. Went to the final judging table at the GABF alongwith the Mega Breweries last year!"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,60,1
+stroh_brewery_company,0,0,245117419521,"{""name"":""Stroh Brewery Company"",""city"":""Tampa"",""state"":""Florida"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":27.9494,""lon"":-82.4651}}",1,45,1
+brauerei_reissdorf-kolsch,0,0,244496728064,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_reissdorf"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+rogue_ales-rogue_smoke,0,0,244992638977,"{""name"":""Rogue Smoke"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Rogue Smoke(previously known as Welkommen on draft) is a German style Rauchbier (Smoke Beer), which was inspired by the Fall of the Berlin Wall. Most rauch brews are bottom fermented, however Rogue Smoke, is top fermented. It is orange-amber in hue with a delicate smoke aroma and flavor with an intense hop finish.\r\n\r\nIn All About Beer, August, 1995 issue, Christopher Brooks writes \""Alder wood, indigenous to the Northwest, is the smoking agent, though a small amount of Bamberg malt is used in the mash, too. Beech is drier than alder, reports brewmaster John Maier, so we use a little of that for added complexity. Welkommen, a smoky, nutty ale, is also very dry, which given the 15 pounds of hops (perle and Saaz) added to each 15-barrel batch, is no surprise.\"" The seven medals in nine years which Rogue Smoke won at theGreat American Beer Festival in Denver are also a tribute to this unusual brew.\r\n\r\nRogue Smoke is brewed with Great Western Harrington, Klages, Munich, Hugh Baird Crystal, Carastan (30-37 and 13-17), Chucks Alderwood Smoked Munich and Bamberg Beechwood Smoked malts; plus Perle and Saaz hops. Rogue Smoke is available in the classic 22-ounce seriograph bottle (replacing the older 7 ounce bottle) and on draft.""}",1,29,1
+umpqua_brewing-no_doubt_stout,0,0,245113880577,"{""name"":""No Doubt Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""umpqua_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+greenshields_brewery_and_pub-pilsner,0,0,244758806529,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greenshields_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+chimay_abbaye_notre_dame_de_scourmont-chimay_doree,0,0,244500725760,"{""name"":""Chimay Dorée"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chimay_abbaye_notre_dame_de_scourmont"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed from very similar ingredients as the Red, but paler and spiced differently. It is intended only to be drunk at the abbey or at the nearby inn Auberge de Poteaupré which is associated with the abbey. The monks themselves drink this variety rather than the stronger three. The Dorée is not sold commercially and the rare bottles which make their way out are through unofficial sources. Even the brewery's own web site makes no mention of this variety."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,63,1
+anderson_valley_brewing-boont_amber_ale,0,0,244369981441,"{""name"":""Boont Amber Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,32,1
+kostritzer_schwarzbierbrauerei-oktoberfest,0,0,244758675456,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kostritzer_schwarzbierbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,61,1
+mendocino_brewing_saratoga_springs-white_ale,0,0,244881620993,"{""name"":""White Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_saratoga_springs"",""updated"":""2010-07-22 20:00:20"",""description"":""This Limited Edition unfiltered Belgian Style Ale, brewed with premium unmatted wheat has a crisp & refreshing flavor. This thirst quenching ale has a blend of sweet orange peel, a subtle hint of coriander and a delicate twist of lemon."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,60,1
+sweet_water_tavern_and_brewery,0,0,245117419522,"{""name"":""Sweet Water Tavern and Brewery"",""city"":""Sterling"",""state"":""Virginia"",""code"":""20121"",""country"":""United States"",""phone"":""(703) 449-1108"",""website"":""http://www.greatamericanrestaurants.com/sweetMainSter/index.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""45980 Waterview Plaza""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.0324,""lon"":-77.4097}}",1,45,1
+brauerei_spezial-rauchbier_lager,0,0,244496793600,"{""name"":""Rauchbier Lager"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_spezial"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+saint_louis_brewery_schlafy_tap_room-schlafly_tripel,0,0,244992704512,"{""name"":""Schlafly Tripel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+union_barrel_works-union_barrel_works_lager,0,0,245113946112,"{""name"":""Union Barrel Works Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_barrel_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Dortmunder style lager with full body and deep golden color. Brewed using four specialty malts with moderate hopping for a smooth clean flavor and aroma."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,36,1
+grolsche_bierbrouwerij-grolsch_amber_ale,0,0,244758872064,"{""name"":""Grolsch Amber Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grolsche_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,62,1
+cooperstown_brewing_company-nine_men_ale,0,0,244500725761,"{""name"":""Nine Men Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooperstown_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Nine Man\"" is a golden ale, brewed from English pale and crystal malts, and with torrified wheat.  It is bittered with Cascade and Cluster hops and finished with Cascade hops.  \""Nine Man Ale\"" was first brewed as a summer seasonal beer in 1996.   It was kegged the first season but not bottled until the opening of the baseball season in April 1997."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,63,1
+appalachian_brewing_company-jolly_scot_scottish_ale,0,0,244369981442,"{""name"":""Jolly Scot Scottish Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This flavorful sweet ale has a smooth malt finish balanced against a light hop flavor. This beer is very quaffable and has become a brewpub favorite throughout the United States. \r\n\""Jolly Scot\"" was a famed local beer produced by R.H. Graupners Brewery that was located at 10th and Market – one block from our brewery."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,32,1
+krogh_s_restaurant_and_brewpub-packs_a_punch_porter,0,0,244758675457,"{""name"":""Packs A Punch Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,61,1
+mendocino_brewing_saratoga_springs,0,0,244881686528,"{""name"":""Mendocino Brewing - Saratoga Springs"",""city"":""Saratoga Springs"",""state"":""New York"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.mendobrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0831,""lon"":-73.7846}}",1,60,1
+sweetwater_brewing_casper-surefire_stout,0,0,245117485056,"{""name"":""Surefire Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_casper"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,45,1
+brauhaus_johann_albrecht_konstanz-kupfer,0,0,244496793601,"{""name"":""Kupfer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_konstanz"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,53,1
+saint_somewhere_brewing_company-saison_athene,0,0,244992704513,"{""name"":""Saison Athene"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_somewhere_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A bottle conditioned Saison with a spicy and moderately hoppy profile true to the traditions of the farmhouse ales of Wallonia.\r\n\r\n A spiced saison with chamomile, rosemary and black pepper."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,29,1
+upstream_brewing_old_market-old_market_stout,0,0,245113946113,"{""name"":""Old Market Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+grupo_modelo-negra_modelo,0,0,244758872065,"{""name"":""Negra Modelo"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grupo_modelo"",""updated"":""2010-07-22 20:00:20"",""description"":""Negra Modelo has long been the dark beer alternative for Mexican beer drinkers. It has been identified as one of the few surviving examples of Vienna style lager - a style that was largely replaced in European breweries with Oktoberfest, a slightly lighter lager, in the early twentieth century. \r\nNegra Modelo pours with an off-white, medium head. The body is clear with a rich amber/copper color. The aroma is sweet with hints of apple. The impression at the first sip is sweet. This gives way only a bit to some hops bitterness which gives some balance but leaves the beer firmly in the sweet category. It has no real lager snap at the end, just lingering hops. This actually makes the second sip more balanced than the first.\r\n\r\nThere is some complexity and depth here but the flavors are very delicate. They are obliterated by the aggressive flavors of the Mexican food that Modelo is often served with making it a sweet balance to the savory and sometimes hot cuisine."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,62,1
+copper_kettle_brewery-celebration_wheat,0,0,244500725762,"{""name"":""Celebration Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_kettle_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A nice traditional cloudy wheat beer. It is light in color with a banana and yeasty fragrance. This would go nice on a hot summer day or anytime you want a refreshing drink."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,63,1
+appleton_brewing-adler_brau_winter_ale,0,0,244369981443,"{""name"":""Adler Bräu Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,32,1
+kulmbacher_brauerei_ag-monchshof_original_pils,0,0,244758740992,"{""name"":""Mönchshof Original Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+moosejaw_pizza_dells_brewing_company-oktoberfest,0,0,244881686529,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,60,1
+taylor_s_restaurant_and_brewery-nut_brown,0,0,245117485057,"{""name"":""Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,45,1
+brauhaus_johann_albrecht_konstanz-messing,0,0,244496859136,"{""name"":""Messing"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_konstanz"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+schooner_brewery,0,0,244992704514,"{""name"":""Schooner Brewery"",""city"":""Dallas"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.803,""lon"":-96.7699}}",1,29,1
+wachusetts_brewing_company-wachusetts_ipa,0,0,245748858880,"{""name"":""Wachusetts IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wachusetts_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Nice Hoppy IPA - available in MA & NY only"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,36,1
+harbor_city_brewing,0,0,244758937600,"{""name"":""Harbor City Brewing"",""city"":""Port Washington"",""state"":""Wisconsin"",""code"":""53074"",""country"":""United States"",""phone"":""1-262-284-3118"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""535 West Grand Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.3871,""lon"":-87.8795}}",1,62,1
+daas,0,0,244500791296,"{""name"":""Daas"",""city"":""Tournai"",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":""442032865958"",""website"":""http://www.daasbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Daas beers are organically brewed Belgium beer produced in Hainaut the famous Belgian province known for its fine hand crafted beers."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.6059,""lon"":3.3884}}",1,63,1
+barley_brothers_brewery_and_grill-kickstart_oatmeal_stout,0,0,244370046976,"{""name"":""Kickstart Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_brothers_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+aksarben_brewing_bop-bavarian_bock,0,0,244366180352,"{""name"":""Bavarian Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aksarben_brewing_bop"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,24,1
+lancaster_brewing_co-celtic_rose,0,0,244758740993,"{""name"":""Celtic Rose"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our version of the traditional Irish Amber Ale. This beer combines the richness of German and Austrian malts with the delicate and spicy British hops for a taste worthy of the Red Rose City."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,61,1
+moylan_s_brewery_restaurant-white_christmas,0,0,244881752064,"{""name"":""White Christmas"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+tied_house_cafe_brewery_san_jose-new_world_wheat,0,0,245117485058,"{""name"":""New World Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+brewpub_on_the_green-independence_ale,0,0,244496859137,"{""name"":""Independence Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewpub_on_the_green"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+shipyard_brewing_portland-pugsley_s_signature_series_xxxx_ipa,0,0,244992770048,"{""name"":""Pugsley's Signature Series XXXX IPA"",""abv"":9.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":""XXXX IPA is a non-traditional American IPA with a brilliant copper color and the classic citrus nose of Cascade hops. This beer demonstrates a unique balance of malt-inspired, delicate red grapefruit sweetness and lingering hop dryness. The OG and final ABV provide the structure and body to balance the harmony of distinct flavours. Cascade, Warrior, Summit and Glacier Hops are used for bittering and Cascade Hops are added for dry hopping after fermentation. This hop blend is well balanced with Malted Wheat, Pale Ale, Crystal, and Caramalt Malts. To fully enjoy all the flavours, this ale is best drunk at 55 degrees Fahrenheit. This beer pairs well with Cajun dishes, blackened fish, and BBQ. XXXX draws its name from the British brewing convention of using X’s to denote style. 70 BU’s, 1.092 OG, 9.25% ABV."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,29,1
+weyerbacher_brewing_company-house_ale,0,0,245748924416,"{""name"":""House Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""House Ale, our 4.5% session ale, was first brewed in 2006.  Our goal was to brew a beer that was a little bit lower in alcohol, but did not lack for body and flavor. We're sure you'll agree, that's just what we achieved with this tasty brew.  Brewed with Pale, Caramunich, and Carapils malt for flavor and body, then hopped exclusively with expensive Tettnang hops, a very delicate, delicious hops that perfectly fits this beer with just the right snap of flavor.   Available only in Pennsylvania, in our Variety Pack Case."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,36,1
+hook_ladder_brewing_company,0,0,244758937601,"{""name"":""Hook & Ladder Brewing Company"",""city"":""Silver Spring"",""state"":""Maryland"",""code"":""20910"",""country"":""United States"",""phone"":""301.565.4522"",""website"":""http://www.hookandladderbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""At Hook & Ladder Brewing we believe in great beer in the company of good friends, so we bring you three great beers for your drinking pleasure (please drink responsibly). Each of our beers is carefully crafted with the finest quality ingredients for a distinctive taste we know you will enjoy. Try one tonight, you just might get hooked. Through our own experiences in the fire and rescue service we have chosen the Hook & Ladder as a symbol of pride and honor to pay tribute to the brave men and women who serve and protect our communities."",""address"":[""8113 Fenton St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.9911,""lon"":-77.0237}}",1,62,1
+denmark_brewing-valhalla_ale,0,0,244633305088,"{""name"":""Valhalla Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denmark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+big_buck_brewery_and_steakhouse_2,0,0,244370046977,"{""name"":""Big Buck Brewery and Steakhouse #2"",""city"":""Grand Rapids"",""state"":""Michigan"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.9634,""lon"":-85.6681}}",1,32,1
+aksarben_brewing_bop-witbier,0,0,244366180353,"{""name"":""Witbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aksarben_brewing_bop"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+legends_brewhouse_eatery_of_green_bay-light,0,0,244758740994,"{""name"":""Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legends_brewhouse_eatery_of_green_bay"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+nodding_head_brewpub-3c_extreme,0,0,244881752065,"{""name"":""3C Extreme"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+tunner_s_guild_brewing_systems-rock_river_lager_beer,0,0,245117485059,"{""name"":""Rock River Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tunner_s_guild_brewing_systems"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,45,1
+brouwerij_de_achelse_kluis-trappist_blond,0,0,244496859138,"{""name"":""Trappist Blond"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+sierra_nevada_brewing_co-dark_wheat,0,0,244992770049,"{""name"":""Dark Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+wild_river_brewing_and_pizza_cave_junction-esb,0,0,245748989952,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_river_brewing_and_pizza_cave_junction"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,36,1
+hoppin_frog_brewery-smashing_berry_ale,0,0,244759003136,"{""name"":""Smashing Berry Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An abundance of fresh, natural fruit flavor makes this beer something special. You would think we picked the fruit moments before brewing."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,62,1
+deschutes_brewery-jubel_2000,0,0,244633370624,"{""name"":""Jubel 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,63,1
+big_dog_s_brewing_company-black_lab_stout,0,0,244370112512,"{""name"":""Black Lab Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_dog_s_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+amherst_brewing_company-puffers_smoked_porter,0,0,244366245888,"{""name"":""Puffers Smoked Porter"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark, full bodied ale with a prominent smoked malt flavor"",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+lowenbrau_brauerei-original,0,0,244881883136,"{""name"":""Original"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lowenbrau_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+o_grady_s_brewery_and_pub_1-haymarket_pilsner,0,0,244881817600,"{""name"":""Haymarket Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_grady_s_brewery_and_pub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,60,1
+tunner_s_guild_brewing_systems,0,0,245117550592,"{""name"":""Tunner's Guild Brewing Systems"",""city"":""Saint Paul"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.9442,""lon"":-93.0861}}",1,45,1
+bullfrog_brewery-billtown_blonde,0,0,244496924672,"{""name"":""Billtown Blonde"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This lightly colored ale has a delicate floral aroma and flavor reminiscent of Williamsports first breweries, clean and crisp with just a touch of lingering sweetness leading to a dry, balanced finish.""}",1,53,1
+spaten_franziskaner_brau-munchner_hell_premium_lager,0,0,245110538240,"{""name"":""Münchner Hell / Premium Lager"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,29,1
+wynkoop_brewing-sagebrush_stout,0,0,245748989953,"{""name"":""Sagebrush Stout"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark, deeply roasted and full-bodied ale. Rich with kisses of chocolate, coffee and oats, it's a glorious version of an American-style stout. A longtime house favorite."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,36,1
+jj_bitting_brewing-hop_garden_pale_ale,0,0,244759003137,"{""name"":""Hop Garden Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jj_bitting_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+devil_mountain_brewing-5_malt_ale,0,0,244633370625,"{""name"":""5 Malt Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""devil_mountain_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,63,1
+birra_moretti,0,0,244370112513,"{""name"":""Birra Moretti"",""city"":""Udine"",""state"":"""",""code"":"""",""country"":""Italy"",""phone"":""39-800-1859.00"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Viale Venezia 9""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":46.0597,""lon"":13.2269}}",1,32,1
+anderson_valley_brewing-hop_ottin_ipa,0,0,244366311424,"{""name"":""Hop Ottin IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Hop Ottin' IPA is as hoppy as they come. The name means \""hard working hops,\"" in Boontling, and that tells it all. Generous additions of high-alpha Pacific Northwest hops added during a vigorous boil, plus traditional dry hopping, with whole hop cones, give this ale a delicious citrus aroma, and an intense hoppy bite. This IPA is a hop lover's dream."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,24,1
+magic_hat-feast_of_fools,0,0,244881948672,"{""name"":""Feast of Fools"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Holiday Offering\r\nIn pre-christian times, the Celebration of darkness and light was marked with great halls filled with smoke & mirrors. Guilded goblets brimming with seasonal brews were lifted to lips, speaking a language no longer known. \r\nCenturies pass.\r\n\r\nThe winter wind finds its way through heavy wood doors. There is a solemn business of monks to be done. But also brewing, a season of celebration is about to begin....\r\nMore years pass.\r\nThe modern age. \r\nThe present connects the past through the brewer's art and a new beer is born.\r\nFeast of Fools... \r\nA perfect dessert beer brewed exclusively for the holiday season.  Hand bottled, champagne corked. \r\nOur inky, rich, black stout, with the addition of raspberries."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,61,1
+oak_creek_brewery-village_nut_brown_ale,0,0,244881817601,"{""name"":""Village Nut Brown Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,60,1
+upper_mississippi_brewing-hefeweizen,0,0,245117550593,"{""name"":""Hefeweizen"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upper_mississippi_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,45,1
+callahan_s_pub_and_brewery-mesa_pale_ale,0,0,244496924673,"{""name"":""Mesa Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""callahan_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+sprecher_brewing-winter_brew,0,0,245110669312,"{""name"":""Winter Brew"",""abv"":5.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A flavorful blend of dark roasted and sweet caramel malts defines this smooth and robust lager. The rich, nourishing flavors of a full-bodied Munich bock make this Bavarian-style brew perfect for those long winter nights."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,29,1
+yards_brewing-yards_brawler,0,0,245748989954,"{""name"":""Yards Brawler"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Boasting superior taste and champion flavor, the Brawler is crafted in the style of English session ales. This malt-forward, ruby colored ale is great for when you want to go a few rounds."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,36,1
+keesmann_bru,0,0,244759003138,"{""name"":""Keesmann Bru"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-26646"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wunderburg 5""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.8904,""lon"":10.9056}}",1,62,1
+diebels_privatbrauerei-alt,0,0,244633436160,"{""name"":""Alt"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diebels_privatbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+bj_s_restaurant_and_brewery-harvest_hefeweizen,0,0,244370178048,"{""name"":""Harvest Hefeweizen"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,32,1
+appalachian_brewing_company-batch_666,0,0,244366311425,"{""name"":""Batch 666"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Winter Warmer"",""category"":""Other Style""}",1,24,1
+maritime_pacific_brewing-portage_bay_pilsener,0,0,244882014208,"{""name"":""Portage Bay Pilsener"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+pacific_beach_brewhouse-over_the_line_stout,0,0,244881883136,"{""name"":""Over The Line Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_beach_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,60,1
+upstream_brewing_old_market-irish_red,0,0,245117550594,"{""name"":""Irish Red"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+cedar_brewing-flying_aces_ale,0,0,244496990208,"{""name"":""Flying Aces Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+standing_stone_brewing_company-standing_stone_india_pale_ale,0,0,245110669313,"{""name"":""Standing Stone India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This unfiltered ale retains a medium maltiness and body and features a flowery hop perfume and pleasant bitterness."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,29,1
+yuengling_son_brewing,0,0,245749055488,"{""name"":""Yuengling & Son Brewing"",""city"":""Pottsville"",""state"":""Pennsylvania"",""code"":""17901"",""country"":""United States"",""phone"":""570-622-0153"",""website"":""http://www.yuengling.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""310 Mill Creek Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.7,""lon"":-76.1747}}",1,36,1
+king_and_barnes-worthington_white_shield,0,0,244759068672,"{""name"":""Worthington White Shield"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""king_and_barnes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+duck_rabbit_craft_brewery-duck_rabbit_porter,0,0,244633436161,"{""name"":""Duck-Rabbit Porter"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duck_rabbit_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Duck-Rabbit Porter is very dark in color. This robust porter features a pronounced flavor of roasted grains reminiscent of dark chocolate. Also, Paul and Brandon add oats to the grist to give a subtle round silkiness to the mouthfeel. We’re confident that you’re really going to love this yummy porter!"",""style"":""Porter"",""category"":""Irish Ale""}",1,63,1
+black_sheep_brewery-ale,0,0,244370178049,"{""name"":""Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""black_sheep_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+appleton_brewing-adler_brau_doppel_bock_beer,0,0,244366311426,"{""name"":""Adler Bräu Doppel Bock Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,24,1
+mckenzie_brew_house,0,0,244882014209,"{""name"":""McKenzie Brew House"",""city"":""Glen Mills"",""state"":""Pennsylvania"",""code"":""19342"",""country"":""United States"",""phone"":""1-610-361-9800"",""website"":""http://www.mckenziebrewhouse.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""451 Wilmington-West Chester Pike""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.8658,""lon"":-75.5442}}",1,61,1
+paulaner-paulaner_oktoberfest,0,0,245005680640,"{""name"":""Paulaner Oktoberfest"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""Paulaner Oktoberfestbier is festive, full-flavoured and ultra delicious, and is brewed specially for the most famous festival in the world. Every year, more than one million liters are served at the Oktoberfest. You can create your own \""beer tent atmosphere\"" at home with this golden yellow, mildly hoppy seasonal speciality - but only between July and October.\r\n\r\nOktoberfest Bier:\r\n13.7% original wort; 6.0% alcohol; 50 kcal/100 ml"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,60,1
+valley_brewing_company,0,0,245117616128,"{""name"":""Valley Brewing Company"",""city"":""Stockton"",""state"":""California"",""code"":""95204"",""country"":""United States"",""phone"":""(209) 464-2739"",""website"":""http://www.valleybrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1950 W. Fremont St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.9551,""lon"":-121.322}}",1,45,1
+central_city_brewing_company-red_racer_india_pale_ale,0,0,244496990209,"{""name"":""Red Racer India Pale Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,53,1
+stoudt_s_brewery-scarlet_lady_ale,0,0,245110669314,"{""name"":""Scarlet Lady Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This English-style ale is brewed with Marris Otter and Caramel malts for a rich, reddish-copper color and smooth malty palate.  The use of bittering and aroma addition hops balances the regal, sweet maltiness and imparts a softly perfumed aroma"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,29,1
+lancaster_brewing_co-amish_four_grain,0,0,244759068673,"{""name"":""Amish Four Grain"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our multi-grain pale ale summons the sweetness of oats, the complexity of rye and the smoothness of malted wheat, balanced by a generous dry-hopping of imported, noble Saaz hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+eastern_shore_brewing,0,0,244633436162,"{""name"":""Eastern Shore Brewing"",""city"":""St Michaels"",""state"":""Maryland"",""code"":""21663"",""country"":""United States"",""phone"":""410.745.8010"",""website"":""http://www.easternshorebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Offering beers for every taste including: St. Michaels Blonde Ale, St. Michaels LT, Not So Pale Ale and seasonal beers...Ameri-Hefe & Ameri-Wheat. Stop by the tasting room and sample a few beers. We anticipate being open by Labor Day 2008."",""address"":[""605 S. Talbot St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.7814,""lon"":-76.2222}}",1,63,1
+black_sheep_brewery,0,0,244370178050,"{""name"":""Black Sheep Brewery"",""city"":""Ripon"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01765)-689227"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wellgarth""]}",1,32,1
+augusta_brewing,0,0,244366376960,"{""name"":""Augusta Brewing"",""city"":""Augusta"",""state"":""Missouri"",""code"":""63332"",""country"":""United States"",""phone"":""1-636-482-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5221 Water Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.5702,""lon"":-90.8802}}",1,24,1
+middle_ages_brewing-middle_ages_raspberry_ale,0,0,244882014210,"{""name"":""Middle Ages Raspberry Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A scintillating ale with just the right amount of hops and ripe berry flavor."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,61,1
+quigleys,0,0,245005746176,"{""name"":""Quigleys"",""city"":""Pawleys Island"",""state"":""South Carolina"",""code"":""29585"",""country"":""United States"",""phone"":""(843) 237-7010"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Former brewer at Liberty Brewpub in Myrtle Beach is the owner/brewer at this new brewpub in the middle of golf country."",""address"":[""257 Willbrook Blvd""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":33.4905,""lon"":-79.116}}",1,60,1
+walldorff_brew_pub-amber_waves,0,0,245750169600,"{""name"":""Amber Waves"",""abv"":4.85,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""walldorff_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""A clean crisp ale with a beautiful reddish caramel color and a superb balance of hops and malts."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,45,1
+cervecera_del_pacfico,0,0,244497055744,"{""name"":""Cervecera del Pacfico"",""city"":""Mazatln"",""state"":""Sinaloa"",""code"":"""",""country"":""Mexico"",""phone"":""52-1-28-71-6011"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Calz.Gabriel Leyva y Melchor Ocampo""]}",1,53,1
+taylor_s_restaurant_and_brewery-pale_ale,0,0,245110669315,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+main_street_brewing-brown_ale,0,0,244882341888,"{""name"":""Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,62,1
+edelweissbrauerei_farny-alt_durrener_weisse,0,0,244633501696,"{""name"":""Alt-Dürrener-Weiße"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""edelweissbrauerei_farny"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+blue_cat_brew_pub-red_toad_amber_ale,0,0,244370243584,"{""name"":""Red Toad Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_cat_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,32,1
+barley_island_brewing-rust_belt_porter,0,0,244366376961,"{""name"":""Rust Belt Porter"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+monte_carlo_casino_and_brewpub,0,0,244882079744,"{""name"":""Monte Carlo Casino and Brewpub"",""city"":""Las Vegas"",""state"":""Nevada"",""code"":""89109"",""country"":""United States"",""phone"":""1-702-730-7438"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.1286,""lon"":-115.171}}",1,61,1
+remington_watson_smith_brewing,0,0,245005746177,"{""name"":""Remington Watson Smith Brewing"",""city"":""Waukesha"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0117,""lon"":-88.2315}}",1,60,1
+weissbierbrauerei_hopf,0,0,245750169601,"{""name"":""Weissbierbrauerei Hopf"",""city"":""Miesbach"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8025-/-2959-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Schtzenstrae 8-10""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.794,""lon"":11.8311}}",1,45,1
+commonwealth_brewing_1,0,0,244497121280,"{""name"":""Commonwealth Brewing #1"",""city"":""Boston"",""state"":""Massachusetts"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.3584,""lon"":-71.0598}}",1,53,1
+the_bruery-autumn_maple,0,0,245110734848,"{""name"":""Autumn Maple"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with 17 lbs. of yams per barrel (in other words, a lot of yams!), this autumn seasonal is a different take on the “pumpkin” beer style. Brewed with cinnamon, nutmeg, allspice, vanilla, molasses, and maple syrup, and fermented with our traditional Belgian yeast strain, this bold and spicy beer is perfect on a cold autumn evening."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,29,1
+maritime_pacific_brewing-salmon_bay_e_s_b,0,0,244882341889,"{""name"":""Salmon Bay E.S.B."",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+eel_river_brewing-triple_exultation_old_ale,0,0,244633501697,"{""name"":""Triple Exultation Old Ale"",""abv"":9.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eel_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,63,1
+blue_ridge_brewing,0,0,244370243585,"{""name"":""Blue Ridge Brewing"",""city"":""Greenville"",""state"":""South Carolina"",""code"":""29601"",""country"":""United States"",""phone"":""1-864-232-4677"",""website"":""http://www.blueridgebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Born in the foothills of the Blue Ridge Mountains, Greenville's Brew-Pub continues to pay homage to one simple creed, to provide our customers the very best we can! We're as proud of Chef Rich's House-Made Menu as we are of Jay's Freshly Crafted Brews!"",""address"":[""217 North Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.8531,""lon"":-82.3983}}",1,32,1
+black_sheep_brewery-riggwelter_yorkshire_ale,0,0,244366376962,"{""name"":""Riggwelter Yorkshire Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""black_sheep_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+512_brewing_company,0,0,244366573568,"{""name"":""(512) Brewing Company"",""city"":""Austin"",""state"":""Texas"",""code"":""78745"",""country"":""United States"",""phone"":""512.707.2337"",""website"":""http://512brewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(512) Brewing Company is a microbrewery located in the heart of Austin that brews for the community using as many local, domestic and organic ingredients as possible."",""address"":[""407 Radam, F200""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":30.2234,""lon"":-97.7697}}",1,25,1
+monteith_s_brewing_co-monteith_s_celtic_beer,0,0,244882079745,"{""name"":""Monteith's Celtic Beer"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""monteith_s_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Monteith’s Celtic Beer is considered an ‘Irish-style ale’ in the heritage of beers of a burnt-red colour traditionally brewed in the Emerald Isle.\r\n\r\nMonteith’s Celtic Beer has a dry roasted malt flavour characteristic of this style of brewing. This malty characteristic and crisp dryness is derived from malts of the roasted chocolate malt style. The hop character is medium to allow the chocolate malts to show through.\r\n\r\nMonteith’s brewers have been able to develop traditional ale fermentation characters while allowing the interesting roasted malt notes to come through in the aroma."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,61,1
+rogue_ales-jittery_frog,0,0,245005811712,"{""name"":""Jittery Frog"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""This special coffee stout includes NAFTA approved, organic, shade grown coffee beans from Costa Rica, Indonesia, and Ethiopia roasted by the brewmaster at local coffee roaster Red Twig in Edmonds, Wa.  Hints of your morning cup are evident in the aroma, flavor and finish of this breakfast beer (but not just for breakfast).  \r\nNo Chemicals, Additives or Preservatives.""}",1,60,1
+white_oak_cider,0,0,245750169602,"{""name"":""White Oak Cider"",""city"":""Newberg"",""state"":""Oregon"",""code"":""97132"",""country"":""United States"",""phone"":""1-503-538-0349"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""18452 NE Ribbon Ridge Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.3498,""lon"":-123.073}}",1,45,1
+coors_brewing_golden_brewery-harvest_moon_pumpkin,0,0,244497121281,"{""name"":""Harvest Moon Pumpkin"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This amber-colored, naturally pumpkin flavored ale is brewed only in the autumn and combines the flavor of vine-ripened pumpkin and spices. If you're in the mood for something unique and different to go along with the change of season, autumn is the perfect time to try Blue Moon™ Pumpkin Ale. Available mid-September through December."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,53,1
+the_livery-555_ipa,0,0,245110734849,"{""name"":""555 IPA"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""A true North American IPA! All North American malts, Northwest Mt. Hood hops, and American Ale yeast all blend for a perfectly balanced bitter ale."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,29,1
+midnight_sun_brewing_co-gluttony,0,0,244882407424,"{""name"":""Gluttony"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""GLUTTONY Triple IPA overindulges the palate with profound malt, powerful hops and abundant body. Its deep decadent golden orange color presents an appetizing invitation for extravagant enjoyment. Its aroma entices with citrus, pine and alcohol while the flavor provides a smorgasbord of sweet malt, fresh tangerine/grapefruit and a resinous hop character that lingers well beyond the finish. \r\n\r\nGLUTTONY...More than a mouthful."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,62,1
+egan_brewing-enkel_biter,0,0,244633567232,"{""name"":""Enkel Biter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+boston_beer_company-longshot_hazelnut_brown,0,0,244370243586,"{""name"":""Longshot Hazelnut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+bootleggers_steakhouse_and_brewery-voluptuous_blonde,0,0,244366442496,"{""name"":""Voluptuous Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bootleggers_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+abhi_brewery,0,0,244366573569,"{""name"":""Abhi Brewery"",""city"":"""",""state"":"""",""code"":"""",""country"":""India"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2011-09-27 00:35:48"",""description"":"""",""address"":[]}",1,25,1
+monteith_s_brewing_co-monteith_s_summer_ale,0,0,244882079746,"{""name"":""Monteith's Summer Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""monteith_s_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Monteith’s Summer Ale is a refreshingly different beer. The opportunity to rediscover some flavour highlights of beer styles enjoyed on summer days past, and bring them back to life.\r\n\r\nAt the end of last century, in England, Europe and the Americas and in New Zealand, there was still an adherence to brew with barley, wholesome grains, hops and other traditional brewing spices.\r\n\r\nMonteith’s Summer Ale is a bright gold beer with great body from four different malts. Spiced with a single hop variety and a touch of history - a little Rata honey. Subtle, but enough to make all the difference. The result is a truly refreshing herbal spiced beer brewed for the Summer Season — a splendid thirst quencher.\r\n\r\nMonteith’s Summer Ale enjoyed ice-cold with a simple range of fruits, perhaps refreshing wedge of orange or lime. Alternatively, match with summer salads and stir-frys to complement the light flavours."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,61,1
+rothaus_brauerei-dunkles,0,0,245005811713,"{""name"":""Dunkles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rothaus_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+wild_duck_brewing-imperial_sasquatch,0,0,245750235136,"{""name"":""Imperial Sasquatch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_duck_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+copper_kettle_brewery-potbelly_porter,0,0,244497186816,"{""name"":""Potbelly Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_kettle_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Porter has a deep dark color and a light creamy head. The aroma and flavor lingers of burnt grains and roasted coffe. We hope you enjoy this special brew."",""style"":""Porter"",""category"":""Irish Ale""}",1,53,1
+the_lost_abbey-serpents_stout,0,0,245110800384,"{""name"":""Serpents Stout"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""The history of the bible and religion is indeed the struggle of good vs. evil. Our Serpent’s Stout recognizes the evil of the dark side that we all struggle with. This is a massively thick and opaque beer that begs the saints to join the sinners in their path to a black existence. 10.5% ABV and available in 750 ml bottles and on draft at select locations."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,29,1
+midnight_sun_brewing_co-oak_aged_imperial_chocolate_pumpkin_porter,0,0,244882407425,"{""name"":""Oak-Aged Imperial Chocolate Pumpkin Porter"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This version is even lovelier than the original. Share with your sweetie."",""style"":""Porter"",""category"":""Irish Ale""}",1,62,1
+elysian_brewery_public_house-the_immortal_ipa,0,0,244633567233,"{""name"":""The Immortal IPA"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,63,1
+boulevard_brewing_company-bouldevard_zon,0,0,244370243587,"{""name"":""Bouldevard ZŌN"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Boulevard’s summer seasonal is our interpretation of a classic Belgian witbier. ZŌN (Flemish for “sun”) combines the subtle flavors of coriander and orange peel with other traditional ingredients to create a delightful, refreshing summertime brew. Available from May through August, in bottles and draught."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,32,1
+brasserie_de_la_senne-zinnebir,0,0,244366442497,"{""name"":""Zinnebir"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_la_senne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,24,1
+abita_brewing_company-christmas_ale,0,0,244366639104,"{""name"":""Christmas Ale"",""abv"":5.5,""ibu"":38.0,""srm"":35.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-12-19 09:11:43"",""description"":""Abita Christmas Ale is an American style Brown Ale. It is hopped with Willamette, Cascade, and Columbus hops and has a good hop flavor and aroma."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,25,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_pale_ale,0,0,244882145280,"{""name"":""Nøgne Ø Pale Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing light and hoppy ale. Probably our best allrounder.  Recommended serving temperature 8°C/45°F.  Ideal with barbequed or smoked meat dishes."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,61,1
+saint_arnold_brewing-divine_reserve_9,0,0,245005811714,"{""name"":""Divine Reserve 9"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Important: let this beer warm to at least 50° before enjoying.  This beer is black with some ruby highlights.  The nose is full of pumpkin pie spices and some alcohol.  There are notes of nutmeg, caraway and vanilla.  The taste starts with chocolate malt with a hint of spice and rolls into a warm spicy alcohol taste which has the effect of creating the balance that usually comes from the hop bitter.  There is some hop bitter on the finish, but not much.  Overall, this beer finishes relatively dry for such a big beer.  As it warms, the spices move forward in the taste and the chocolate moves to the finish.  The pumpkin provides a pleasant undertone and a nice mouthfeel.  The spices will probably fade some over time; they mellowed considerably while still in the fermenter."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,60,1
+york_brewery-yorkshire_terrier_premium_cask_bitter,0,0,245750235137,"{""name"":""Yorkshire Terrier Premium Cask Bitter"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""york_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,45,1
+coronado_brewing_company-islandweizen,0,0,244497186817,"{""name"":""Islandweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Coronado 'Islandweizen' is our version of an American-styled Hefeweizen or unfiltered wheat beer. It's lightly hopped with Nobel Tettnang and Saaz hops to create a great full-bodied beer. This refreshing beer can be enjoyed with a slice of lemon."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,53,1
+the_round_barn_winery_brewery-round_barn_cocoa_stout,0,0,245110865920,"{""name"":""Round Barn Cocoa Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_round_barn_winery_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Cocoa Stout boasts a beautiful black body and tan head with notes of roasted barley, coffee, and bittersweet chocolate. Enjoy with dessert ‹ especially good in a float with vanilla ice cream. Round Barn beer is bottle conditioned, decant into a pint glass before drinking for the best taste experience. Contains lactose (milk sugar)."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,29,1
+minneapolis_town_hall_brewery-hope_king_scotch_ale,0,0,244882472960,"{""name"":""Hope & King Scotch Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Hope and King is a full-body brew and is rich in malt complexity. Brewed with both English and American barley and many, many specialty malts this deeply colored ale has hints of roasted chocolate, caramel and raisins with very little hop presence. Our interpretation of the classic ale that originated in Glasgow, Scotland."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,62,1
+empyrean_brewing_company-solar_flare_summer_ale,0,0,244633632768,"{""name"":""Solar Flare Summer Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+brasserie_de_tahiti,0,0,244370309120,"{""name"":""Brasserie de Tahiti"",""city"":""Tahiti"",""state"":"""",""code"":"""",""country"":""French Polynesia"",""phone"":""689-467600"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""BP 597""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-17.6797,""lon"":-149.407}}",1,32,1
+brasserie_de_vervifontaine-biere_du_lion,0,0,244366442498,"{""name"":""Bière du Lion"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_vervifontaine"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+abita_brewing_company-honey_rye_ale,0,0,244366639105,"{""name"":""Honey Rye Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:54:55"",""description"":""This beer is not very bitter which allows the flavors of the rye and honey to come through. The result is a full bodied, sweet, and malty beer."",""style"":""Specialty Honey Lager or Ale"",""category"":""Other Style""}",1,25,1
+o_hanlon_s_brewing_company_ltd,0,0,244882145281,"{""name"":""O'Hanlon's Brewing Company Ltd."",""city"":""Exeter"",""state"":""Devon"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01404)-822412"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Great Barton Farm""]}",1,61,1
+scharer_s_little_brewery-scharer_s_lager,0,0,245005877248,"{""name"":""Scharer's Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scharer_s_little_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional German-style lager, fermented at 7-9°C and lagered at 4°C for 4-6 weeks. The storage produces a soft, natural carbonation. Full-bodied with high bitterness and hop flavour and a dry finish. Hoppy aromatic nose. Available on draught or in 780 mL champagne-style bottles. Can be difficult to acquire."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,60,1
+courthouse_pub-canadian_light,0,0,244497252352,"{""name"":""Canadian Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""courthouse_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,53,1
+the_st_louis_brewrey,0,0,245110865921,"{""name"":""The St. Louis Brewrey"",""city"":""St. Louis"",""state"":""MO"",""code"":""63103"",""country"":""United States"",""phone"":""314-241-2337"",""website"":""http://http://www.schlafly.com"",""type"":""brewery"",""updated"":""2011-02-10 07:49:03"",""description"":""The Schlafly Tap Room first opened its doors in 1991 and proudly holds the distinction of being the first new brewpub in Missouri since Prohibition."",""address"":[""2100 Locust Street""]}",1,29,1
+new_albanian_brewing-solidarity,0,0,244882472961,"{""name"":""Solidarity"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_albanian_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,62,1
+engine_house_9-tacoma_brew,0,0,244633632769,"{""name"":""Tacoma Brew"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+brauerei_gasthof_zur_krone-kellerpils,0,0,244487290880,"{""name"":""Kellerpils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gasthof_zur_krone"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brasserie_des_cimes,0,0,244366508032,"{""name"":""Brasserie des Cimes"",""city"":""Aix les Bains"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-04.79.88.16.80"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""152 Avenue St Simond""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.7075,""lon"":5.9153}}",1,24,1
+agassiz_brewing,0,0,244366704640,"{""name"":""Agassiz Brewing"",""city"":""Winnipeg"",""state"":""Manitoba"",""code"":""0"",""country"":""Canada"",""phone"":""1-204-233-4677"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 42008""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.7652,""lon"":-97.1539}}",1,25,1
+oasis_brewery_annex-brown_ale,0,0,244882210816,"{""name"":""Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oasis_brewery_annex"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,61,1
+scottish_newcastle_breweries-newcastle_brown_ale,0,0,245005877249,"{""name"":""Newcastle Brown Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scottish_newcastle_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,60,1
+daleside_brewery-morocco_ale,0,0,244497252353,"{""name"":""Morocco Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""daleside_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+three_floyds_brewing-alpha_klaus_xmas_porter,0,0,245110865922,"{""name"":""Alpha Klaus Xmas Porter"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,29,1
+new_glarus_brewing_company-staghorn_oktoberfest,0,0,244882472962,"{""name"":""Staghorn Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,62,1
+erie_brewing_company-sunshie_wit,0,0,244633632770,"{""name"":""Sunshie Wit"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Hot, Hazy summer days call for a craft beer that refreshes. Have no fear – Sunshine Wit is here! Sunshine Wit is a refreshingly smart-assed ale that will satisfy, especially when the mercury is rising. Add a slice of orange for an extra blast of flavor! Sunshine Wit is a “white ale” or “wit” – a hazy yellow wheat beer with a subtle citrus flavor and remarkable drinkability at 4.0% alcohol by volume. Let sunshine wit help you chill out on the hottest, humid, heat-stricken days of summer."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,63,1
+brauerei_im_fchschen,0,0,244487356416,"{""name"":""Brauerei im Fchschen"",""city"":""Düsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-211-/-13747-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ratinger Strasse 28""]}",1,32,1
+brasserie_des_gants-gouyasse_goliath,0,0,244366508033,"{""name"":""Gouyasse / Goliath"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_des_gants"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+alpine_beer_company-duet,0,0,244366704641,"{""name"":""Duet"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alpine_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A West Coast IPA. Our original single IPA made with Simcoe and Amarillo hops “in harmony.” 1.065 OG 45 IBU 7%ABV"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,25,1
+odell_brewing-odell_ipa,0,0,244882210817,"{""name"":""Odell IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""We took the traditional IPA, originally shipped from England to India in the 1700's, and made it bolder and more flavorful - American Style. We've added new varieties of highly aromatic American hops to create a distinctive bitterness profile and an incredible hop character."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,61,1
+south_county_brewing_co-south_county_munich_dunkel_lager,0,0,245122924544,"{""name"":""South County Munich Dunkel Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_county_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Crisp and smooth. This beer is deep amber in color. Toasty, malty flavor. Full-bodied with a clean finish.""}",1,60,1
+de_dochter_van_de_korenaar-embrasse,0,0,244628979712,"{""name"":""embrasse"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_dochter_van_de_korenaar"",""updated"":""2010-07-22 20:00:20"",""description"":""pure-malt dark ale.\r\nrich and intense. good mix between imperial stout (but not as intense) and quadrupel. The beer has real balance and a luxurious mouthfeel"",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,53,1
+thunderhead_brewery-autumn_strong_lager,0,0,245110931456,"{""name"":""Autumn Strong Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,29,1
+new_holland_brewing_company-night_tripper,0,0,244882538496,"{""name"":""Night Tripper"",""abv"":10.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Night Tripper is an Imperial Stout for a Fat Tuesday release. Dark, mysterious and poetic, Night Tripper's abundance of roasted malts, combined with flaked barley create a rich, roasty beer with deeply intense and lush flavors. Night Tripper's layered, nuanced tones invite intrigue and reward a curious palate."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,62,1
+f_x_matt_brewing-saranac_nut_brown_ale,0,0,244633632771,"{""name"":""Saranac Nut Brown Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Nut Brown Ale's soft mellow malt character is rich and smooth with a medium body. Look for hints of toasted malt flavor, slight hop bitterness and amber brown color."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+brauhaus_sion-kolsch,0,0,244487356417,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_sion"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brasserie_ellezelloise-la_quintine_blonde,0,0,244483686400,"{""name"":""La Quintine Blonde"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_ellezelloise"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+amerisports_brew_pub,0,0,244366770176,"{""name"":""Amerisports Brew Pub"",""city"":""Kansas City"",""state"":""Missouri"",""code"":""64161"",""country"":""United States"",""phone"":""1-816-414-7000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""8201 NE Birmingham Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.1551,""lon"":-94.482}}",1,25,1
+odell_brewing,0,0,244882210818,"{""name"":""Odell Brewing"",""city"":""Fort Collins"",""state"":""Colorado"",""code"":""80524"",""country"":""United States"",""phone"":""1-888-887-2797"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""800 East Lincoln Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.5894,""lon"":-105.063}}",1,61,1
+speakeasy_ales_and_lagers-prohibition_pale_ale,0,0,245122990080,"{""name"":""Prohibition Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""speakeasy_ales_and_lagers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+denver_chophouse_and_brewery,0,0,244629045248,"{""name"":""Denver ChopHouse and Brewery"",""city"":""Denver"",""state"":""Colorado"",""code"":""80202"",""country"":""United States"",""phone"":""1-303-296-0800"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1735 19th Street #100""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7553,""lon"":-104.997}}",1,53,1
+thunderhead_brewery_2-modern_monks_belgian_blonde,0,0,245110931457,"{""name"":""Modern Monks Belgian Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+niagara_falls_brewing-apple_ale,0,0,244882538497,"{""name"":""Apple Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,62,1
+fitzpatrick_s_brewing-hawk_rye,0,0,244633698304,"{""name"":""Hawk Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitzpatrick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+brauhaus_sternen-oktoberfest,0,0,244487356418,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_sternen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,32,1
+brasserie_lefebvre-abbaye_de_floreffe_double,0,0,244483686401,"{""name"":""Abbaye de Floreffe Double"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_lefebvre"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+asahi_breweries-asahi_super_dry,0,0,244366770177,"{""name"":""Asahi Super Dry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""asahi_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+ohio_brewing,0,0,244882210819,"{""name"":""Ohio Brewing"",""city"":""Niles"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.1828,""lon"":-80.7654}}",1,61,1
+springfield_brewing,0,0,245123055616,"{""name"":""Springfield Brewing"",""city"":""Springfield"",""state"":""Missouri"",""code"":""65806"",""country"":""United States"",""phone"":""1-417-832-8277"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""305 South Market Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.2079,""lon"":-93.2955}}",1,60,1
+aksarben_brewing_bop-harvest_brown,0,0,244366966784,"{""name"":""Harvest Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aksarben_brewing_bop"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+dick_s_brewing,0,0,244629110784,"{""name"":""Dick's Brewing"",""city"":""Centralia"",""state"":""Washington"",""code"":""98531"",""country"":""United States"",""phone"":""1-800-586-7760"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5945 Prather Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":46.7713,""lon"":-123.007}}",1,53,1
+timmermans-timmermans_gueuze,0,0,245110996992,"{""name"":""Timmermans Gueuze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,29,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_saison,0,0,244882538498,"{""name"":""Nøgne Ø Saison"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""One of our most refreshing brews, made for those hot summer days, but satisfying year 'round. Recommended serving temperature 8°C/45°F. Goes well with seafood, particularly oysters."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,62,1
+florida_beer_company,0,0,244633698305,"{""name"":""Florida Beer Company"",""city"":""Melbourne"",""state"":""Florida"",""code"":""32901"",""country"":""United States"",""phone"":""321-728-3412"",""website"":""http://www.floridabeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2500 S. Harbor City Blvd.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":28.0707,""lon"":-80.6012}}",1,63,1
+brauhaus_sternen-weizentrumpf,0,0,244487421952,"{""name"":""Weizentrumpf"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_sternen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,32,1
+brauerei_beck-beck_s_light,0,0,244483751936,"{""name"":""Beck's Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-12-20 16:12:12"",""description"":"""",""style"":""European Low-Alcohol Lager"",""category"":""German Lager""}",1,24,1
+avery_brewing_company-the_beast_grand_cru,0,0,244366770178,"{""name"":""The Beast Grand Cru"",""abv"":14.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Beast is a seducer - accommodating, complicated, powerful, dark and created to last the ages. With a deep burgundy color and aromas of honey, nutmeg, mandarin orange and pineapple, this massive and challenging brew has flavors akin to a beautiful Carribean rum. Dates, plums, raisins and molasses are dominant in a rich vinous texture. Cellarable for 10+ years."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,25,1
+okanagan_spring_brewery,0,0,244882276352,"{""name"":""Okanagan Spring Brewery"",""city"":""Vernon"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-800-663-7037"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2801 - 27A Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.2613,""lon"":-119.277}}",1,61,1
+storm_brewing-highland_scottish_ale,0,0,245123055617,"{""name"":""Highland Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""storm_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""While hugely popular in Scotland, this style of beer escapes most North Americans. Designed and brewed by the Scottish punk rocker David “Malty” Macanulty, this creamy, nutty, malty, dark ale is true to its origins. David drives James crazy over this beer, insisting on rigid fermentation temperatures, traditional mild hops for bittering, and even some weird caramelizing ritual as the kettle is being filled. The beer continues to undergo subtle evolutionary changes because the stubborn Scottish bastard will never be satisfied."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,60,1
+anheuser_busch-michelob_irish_red,0,0,244367032320,"{""name"":""Michelob Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Born of Irish tradition, this all-malt ale uses kilned and toasted malts to produce its all-natural, signature red shade. A beer with exceptional balance, Irish Red displays an initial sweetness that fades to a clean, dry finish."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,26,1
+dix_barbecue_brewery,0,0,244629110785,"{""name"":""Dix Barbecue & Brewery"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-682-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""871 Beatty Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.2766,""lon"":-123.115}}",1,53,1
+tollemache_and_cobbold_brewery,0,0,245110996993,"{""name"":""Tollemache and Cobbold Brewery"",""city"":""Ipswich"",""state"":""Suffolk"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.0593,""lon"":1.1557}}",1,29,1
+oldenberg_brewery-nut_brown_ale,0,0,244882604032,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oldenberg_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,62,1
+flying_bison_brewing-bird_of_prey_ipa,0,0,244633698306,"{""name"":""Bird of Prey IPA"",""abv"":8.26,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our true English style IPA. Bready English Malt gives this beer a firm backbone to hang truckloads of East Kent Golding Hops on. Available on draft at the brewery and select “Beer Geek Bars” Feb. March April (if it lasts that long)."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,63,1
+brew_kettle_taproom_smokehouse_bop,0,0,244487421953,"{""name"":""Brew Kettle Taproom & Smokehouse BOP"",""city"":""Strongsville"",""state"":""Ohio"",""code"":""44136"",""country"":""United States"",""phone"":""1-440-239-8788"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""8377 Pearl Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.347,""lon"":-81.8226}}",1,32,1
+brauerei_beck-haacke_beck,0,0,244483751937,"{""name"":""Haacke-Beck"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+back_road_brewery-maple_city_gold,0,0,244366770179,"{""name"":""Maple City Gold"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""No, there is no maple flavor here, just a great beer with a good name.  LaPorte, Indiana is known as the \""Maple City\"" because of its trees.  This German style Oktoberfest lager beer has a golden copper color and intense malty flavor.  We make this beer 4 times a year, but it is hard to find because it goes so fast.  Give it a try and you may find it worthy of the gold.... or at least another round"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,25,1
+olde_peninsula_brewpub_and_restaurant-double_cream_oatmeal_stout,0,0,244882276353,"{""name"":""Double Cream Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,61,1
+sturgeon_bay_brewing,0,0,245123055618,"{""name"":""Sturgeon Bay Brewing"",""city"":""Sturgeon Bay"",""state"":""Wisconsin"",""code"":""54235"",""country"":""United States"",""phone"":""1-920-746-7611"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.8342,""lon"":-87.377}}",1,60,1
+appleton_brewing-adler_brau_pumpkin_spice,0,0,244367032321,"{""name"":""Adler Bräu Pumpkin Spice"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+dubuque_brewing_and_bottling-star_big_muddy_brown,0,0,244629110786,"{""name"":""Star Big Muddy Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dubuque_brewing_and_bottling"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,53,1
+tooth_s-sheaf_stout,0,0,245111062528,"{""name"":""Sheaf Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tooth_s"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,29,1
+otter_creek_brewing_wolaver_s_organic_ales-otter_creek_russian_imperial_stout,0,0,244882669568,"{""name"":""Otter Creek Russian Imperial Stout"",""abv"":10.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""The style was first brewed in England for the Russian Czar and it is the king of stouts. Plenty of big malt flavors- chocolate and roasted- and high alcohol with lower carbonation and mild hops. \r\nWe brewed this beer with double the malts and four times the hops of regular stouts!\r\n\r\nOtter Creek Russian Imperial Stout clocks in around 10% ABV- a beer to be savored responsibly. True to style, this beer will last for years so you may want to stock up on a few bottles for your cellar while it's available.\r\n\r\nRussian Imperial Stouts pair well with creamy cheeses such as camembert (we recommend Vermont-made!), decadent chocolate desserts, or a hearty meal."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,62,1
+flying_fish_brewing_company-exit_11_hoppy_american_wheat,0,0,244633763840,"{""name"":""Exit 11 - Hoppy American Wheat"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Exit 11 Hoppy American Wheat Ale is the second in their wildly popular Exit Series of Big Bottle Beers. Exit 11 is a confluence of styles and ingredients, just as Exit 11 is the point in New Jersey where the Garden State Parkway, the New Jersey Turnpike and several other highways come together.\r\n\r\n“Exit 11 is the point on the Turnpike where the Garden State Parkway branches off and takes hundreds of thousands of travelers to the renowned Jersey Shore,” says Flying Fish Founder Gene Muller.  “Our Exit 11 Wheat Ale is a fresh, citrus-y summer beer perfect for beachgoers and those who only wish they were headed ‘downa shore’.”\r\n\r\nExit 11 is an American-style wheat beer brewed with English ale yeast and three Pacific Northwest hops, Columbus, Palisade and Amarillo.  It is brewed with 50% Belgian pale malt and 50% white wheat, and is an ideal summer thirst quencher, with its bouquet of tangerines and apricots. Exit 11 is available only during this one-time release, and only until it sells out across New Jersey, Pennsylvania and Delaware."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,63,1
+brewer_s_art-resurrection,0,0,244487421954,"{""name"":""Resurrection"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewer_s_art"",""updated"":""2010-07-22 20:00:20"",""description"":""During the fermentation of the first batch of this Abbey-style dubbel, the yeast \""died\"" and was \""resurrected\"" by brewer Chris Cashell. Made with five types of barley malt and lots of sugar, this beer is quite flavorful, without being too sweet."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,32,1
+brauerei_beck-oktoberfest,0,0,244483751938,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,24,1
+baltika_breweries,0,0,244366835712,"{""name"":""Baltika Breweries"",""city"":""St. Petersburg"",""state"":"""",""code"":""194292"",""country"":""Russia"",""phone"":""(812)325-93-25"",""website"":""http://baltikabeer.com/"",""type"":""brewery"",""updated"":""2011-02-15 19:35:41"",""description"":""* The leader on the Russian beer market\n* One of the leading European producers of beer\n* The Baltika brand is Europe's second largest in terms of sales\n* The Company accounts for more than 80% of all Russian beer exports\n* Product is exported to 42 countries\n* 10 breweries: 2 factories in St. Petersburg and factories in Rostov-on-Don, Tula, Samara, Khabarovsk, Yaroslavl, Voronezh, Chelyabinsk, and Krasnoyarsk.\n* Around 12,000 employees"",""address"":[""6 Verkhny per., d. 3""]}",1,25,1
+olde_peninsula_brewpub_and_restaurant-midnight_stout,0,0,244882276354,"{""name"":""Midnight Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,61,1
+sullivan_s_black_forest_brew_haus_grill-sherwood_forest_ipa,0,0,245123055619,"{""name"":""Sherwood Forest IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,60,1
+arcadia_brewing-imperial_stout,0,0,244367097856,"{""name"":""Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,26,1
+duck_rabbit_craft_brewery,0,0,244629176320,"{""name"":""Duck-Rabbit Craft Brewery"",""city"":""Farmville"",""state"":""North Carolina"",""code"":""27828"",""country"":""United States"",""phone"":""(252) 753-7745"",""website"":""http://www.duckrabbitbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4519 W. Pine Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.6003,""lon"":-77.5971}}",1,53,1
+utenos_alus,0,0,245111062529,"{""name"":""Utenos Alus"",""city"":""Utena"",""state"":"""",""code"":"""",""country"":""Lithuania"",""phone"":""370-39-69-023"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Pramons gatv 12""]}",1,29,1
+otto_s_pub_and_brewery-red_mo_ale,0,0,244882669569,"{""name"":""Red Mo Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An American red ale brewed with Northern Brewer for the bittering and Liberty in the hopback.  Very malty and crisp, this ale has all the fun without the AMD.  ABV  5.0%"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+founders_brewing-founders_kentucky_breakfast,0,0,244633763841,"{""name"":""Founders Kentucky Breakfast"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A bit of backwoods pleasure without the banjo. This stout is brewed with a hint of coffee and vanilla then aged in oak bourbon barrels. Our process ensures that strong bourbon undertones come through in the finish in every batch we brew. We recommend decanting at room temperature and best enjoyed in a brandy snifter."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,63,1
+brooklyn_brewery-black_chocolate_stout,0,0,244487487488,"{""name"":""Black Chocolate Stout"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+brauerei_fssla-gold_pils,0,0,244483817472,"{""name"":""Gold-Pils"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_fssla"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+biddy_early_brewery,0,0,244366835713,"{""name"":""Biddy Early Brewery"",""city"":""Ennis"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":""353-065-6836742"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Inagh""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.3293,""lon"":-96.6253}}",1,25,1
+pacific_rim_brewing-vashon_old_stock_ale,0,0,245005877248,"{""name"":""Vashon Old Stock Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+the_alchemist,0,0,245123121152,"{""name"":""The Alchemist"",""city"":""Waterbury"",""state"":""Vermont"",""code"":""5676"",""country"":""United States"",""phone"":""(802) 244-4120"",""website"":""http://www.alchemistbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Alchemist is a 7 barrel brew pub specializing in hand-crafted beer and casual pub fare. All of our ales are brewed in our basement brewery, which was designed and installed by our brewer and co-proprietor John Kimmich. We use only the finest imported malts and domestic hops available to bring you the tastiest and finest selection of beers in Vermont!"",""address"":[""23 South Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.3372,""lon"":-72.756}}",1,60,1
+arcadia_brewing-sky_high_rye,0,0,244367097857,"{""name"":""Sky High Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+egan_brewing-irish_ale,0,0,244629176321,"{""name"":""Irish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,53,1
+water_street_brewery-pale_ale,0,0,245747744768,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+otto_s_pub_and_brewery,0,0,244882735104,"{""name"":""Otto's Pub and Brewery"",""city"":""State College"",""state"":""Pennsylvania"",""code"":""16803"",""country"":""United States"",""phone"":""814-867-6886"",""website"":""http://www.ottospubandbrewery.com/index.php"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Otto's typically offers a selection of 9-11 beers on draft. These include seasonal offerings as well as some of our favorite year-round ales and lagers including our special cask-conditioned ales. All of our beers are brewed on-premises at Otto's for the utmost freshness and quality control. They are made with the finest ingredients available, all of our skill, and a true love for the craft of brewing. Enjoy!"",""address"":[""2105 N. Atherton St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.8098,""lon"":-77.9101}}",1,62,1
+founders_hill_brewing-blackburn_doppelbock,0,0,244633829376,"{""name"":""Blackburn Doppelbock"",""abv"":7.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_hill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,63,1
+brouwerij_bavik_de_brabandere-witte_ezel,0,0,244487487489,"{""name"":""Witte Ezel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brauerei_fssla-lagerbier,0,0,244483817473,"{""name"":""Lagerbier"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_fssla"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+big_rock_brewery-albino_rhino_discontinued,0,0,244366835714,"{""name"":""Albino Rhino (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+panther_brewing_company,0,0,245005942784,"{""name"":""Panther Brewing Company"",""city"":""Utica"",""state"":""New York"",""code"":""13502"",""country"":""United States"",""phone"":""1-800-568-2553"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Utica NY 13502""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.1467,""lon"":-75.1779}}",1,61,1
+the_round_barn_winery_brewery-round_barn_amber_ale,0,0,245123121153,"{""name"":""Round Barn Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_round_barn_winery_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Amber Ale is a deep, copper ale with rich notes of caramel balanced with a hop finish, making it a great all-around beer that pairs well with roasted meats or a favorite sandwich. Round Barn beer is bottle conditioned, decant into a pint glass before drinking for the best taste experience."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,60,1
+arthur_guinness_son-guinness_250th_anniversary_stout,0,0,244367163392,"{""name"":""Guinness 250th Anniversary Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arthur_guinness_son"",""updated"":""2010-07-22 20:00:20"",""description"":""To mark the 250 year anniversary of the signing of the lease on St. Jame's Gate Brewery by Arthur Guinness, we introduce a special commemorative stout. This premium recipe provides a refreshing taste, which underlies the complex flavor of stout."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,26,1
+egan_brewing-thyme_of_the_saison,0,0,244629176322,"{""name"":""Thyme of the Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+water_street_lake_country-bavarian_weiss_beer,0,0,245747810304,"{""name"":""Bavarian Weiss Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,29,1
+pennichuck_brewing_company-bagpiper_s_scottish_ale,0,0,245006139392,"{""name"":""Bagpiper's Scottish Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,62,1
+fratellos_restaurant_and_brewery-rye,0,0,244633829377,"{""name"":""Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+brouwerij_de_landtsheer-malheur_black_chocolate_2003,0,0,244487487490,"{""name"":""Malheur Black Chocolate 2003"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_landtsheer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brauerei_gasthof_zur_krone,0,0,244483817474,"{""name"":""Brauerei & Gasthof zur Krone"",""city"":""Tettnang"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7542-/-7452"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brenplatz 7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6715,""lon"":9.5888}}",1,24,1
+big_sky_brewing,0,0,244366901248,"{""name"":""Big Sky Brewing"",""city"":""Missoula"",""state"":""Montana"",""code"":""59808"",""country"":""United States"",""phone"":""1-800-559-2774"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5417 Trumpeter Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":46.9223,""lon"":-114.073}}",1,25,1
+paulaner-hacker_pschorr_dunkel_weisse,0,0,245005942785,"{""name"":""Hacker-Pschorr Dunkel Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+tommyknocker_brewery_and_pub-pick_axe_pale_ale,0,0,245123121154,"{""name"":""Pick Axe Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""Pick Axe Pale Ale is a classic American Pale Ale which uses premium hops and barley to impart a full bodied characteristic that dances on your tongue and titillates your palate."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+backcountry_brewery-peak_one_porter,0,0,244367163393,"{""name"":""Peak One Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""backcountry_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+fox_river_brewing_1-trolleycar_stout,0,0,244629176323,"{""name"":""Trolleycar Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,53,1
+weinkeller_brewery_berwyn-dusseldorfer_doppelbock,0,0,245747810305,"{""name"":""Dusseldorfer Doppelbock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,29,1
+pennichuck_brewing_company-saint_florian_s_doppelbock,0,0,245006204928,"{""name"":""Saint Florian's Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,62,1
+glen_ellyn_sports_brew-red,0,0,244633894912,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,63,1
+brouwerij_t_ij,0,0,244487553024,"{""name"":""Brouwerij 't IJ"",""city"":""Amsterdam"",""state"":"""",""code"":""0"",""country"":""Netherlands"",""phone"":""31-020-3201786"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Funenkade 7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":52.3666,""lon"":4.9263}}",1,32,1
+brewdog_ltd-dogma,0,0,244483883008,"{""name"":""Dogma"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Dogma is an innovative, enigmatic ale brewed with guarana, poppy seeds and kola nut all blended together with Scottish heather honey. A conspiracy of transcontinental ingredients infused with some devastatingly BrewDog imaginative thinking.\r\n\r\nThe flavours, intricacies and nuances of this beer are best enjoyed while musing over some obscure 17th Century philosophical meanderings, such as:\r\n\r\n\""If we disbelieve everything because we cannot certainly know all things we will do much, what as wisely as he who would not use his wings but sit still and perish because he had no wings to fly.\""\r\nJohn Locke.\r\n\r\nThis beer is not cool. You may think it is, but that is just a beautiful lie fabricated by clowns and gypsies."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,24,1
+boston_beer_works-boston_red,0,0,244366901249,"{""name"":""Boston Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,25,1
+plzesk_prazdroj_pivovar_radegast-premium,0,0,245006008320,"{""name"":""Premium"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""plzesk_prazdroj_pivovar_radegast"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+tongerlo-tongerlo_dubbel_bruin,0,0,245123121155,"{""name"":""Tongerlo Dubbel Bruin"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tongerlo"",""updated"":""2010-07-22 20:00:20"",""description"":""DOUBLE BROWN 6°\r\nRed brown beer with a smooth gentle aroma, a full flavour and a slightly roasted aftertaste."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,60,1
+bandana_brewery-mankato_gold,0,0,244367228928,"{""name"":""Mankato Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+free_state_brewing,0,0,244629241856,"{""name"":""Free State Brewing"",""city"":""Lawrence"",""state"":""Kansas"",""code"":""66044"",""country"":""United States"",""phone"":""1-785-843-4555"",""website"":""http://freestatebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""636 Massachusetts""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.9718,""lon"":-95.2357}}",1,53,1
+weyerbacher_brewing_company-prophecy,0,0,245747810306,"{""name"":""Prophecy"",""abv"":9.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Prophecy is our third ale to be aged in bourbon barrels. We've taken our Merry Monks' Ale and carefully aged it in bourbon barrels. The result is a fabulous unique ale, softened with hints of vanilla and oak, with an intriguing finish to it. Prophecy is a limited release so when it's here, be sure to grab a case or two to lay away before its gone. 9.3% ABV."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,29,1
+pleasanton_main_street_brewery-honey_wheat,0,0,245006204929,"{""name"":""Honey Wheat"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pleasanton_main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,62,1
+gordon_biersch_brewing-bock,0,0,244633894913,"{""name"":""Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,63,1
+bube_s_brewery-bube_s_kiwi_strawberry_wheat,0,0,244487553025,"{""name"":""Bube's Kiwi-Strawberry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The perfect thirst quenching summertime ale. The subtle flavor of kiwi and strawberry blend with traditional German wheat and hops. Great for a hot summer day."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,32,1
+brewery_belle_vue,0,0,244483883009,"{""name"":""Brewery Belle-Vue"",""city"":""Molenbeek"",""state"":""Brussel"",""code"":"""",""country"":""Belgium"",""phone"":""32-024-12-44-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Delaunoystraat 58/60""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.8527,""lon"":4.3311}}",1,24,1
+brasserie_clarysse,0,0,244366901250,"{""name"":""Brasserie Clarysse"",""city"":""Oudenaarde"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-055-31-17-21"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Krekelput 16-18""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8431,""lon"":3.6077}}",1,25,1
+prescott_brewing_company-manzanita_red,0,0,245006008321,"{""name"":""Manzanita Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,61,1
+traquair_house_brewery,0,0,245123186688,"{""name"":""Traquair House Brewery"",""city"":""Innerleithen"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01896)-830323"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Innerleithen EH44 6PW""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":55.619,""lon"":-3.0636}}",1,60,1
+barley_creek_brewing-antler_brown_ale,0,0,244367228929,"{""name"":""Antler Brown Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This traditional American style brown ale has medium body with a sweet Carastan maltiness. A rich deep chocolate color, our Antler Brown Ale is mildly hopped with Mt. Hood hops. Check out the Antler tap handle... locally grown! This has been our most popular beer over the years... a very easy drinking brew."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+fuller_smith_turner_pbc-london_porter,0,0,244629241857,"{""name"":""London Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,53,1
+wychwood_brewery_company_ltd-duchy_originals_organic_english_ale,0,0,245747875840,"{""name"":""Duchy Originals Organic English Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,29,1
+pripps_ringnes_bryggerier-d_carnegie_and_company_porter,0,0,245006204930,"{""name"":""D. Carnegie and Company Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pripps_ringnes_bryggerier"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,62,1
+gordon_biersch_brewing-gordon_biersch_marzen,0,0,244633894914,"{""name"":""Gordon Biersch Marzen"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+capital_brewery-capital_wisconsin_amber,0,0,244487618560,"{""name"":""Capital Wisconsin Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,32,1
+brooklyn_brewery-local_2,0,0,244483883010,"{""name"":""Local 2"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,24,1
+brasserie_d_achouffe-chouffe_bok,0,0,244366901251,"{""name"":""Chouffe-Bok"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_achouffe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-thomas_kemper_belgian_white,0,0,245006008322,"{""name"":""Thomas Kemper Belgian White"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+valley_brewing_company-hitman_gold,0,0,245123186689,"{""name"":""Hitman Gold"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Hitman Gold is an American Pale Ale. The flavor is smooth but aggressively hopped with Simcoe Hops. The beer is best described as a “mini-IPA”. The beer is inspired by the famous wrestler Bret The Hitman Hart, who also is the artist who designed and drew the logo."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,60,1
+bavaria,0,0,244367228930,"{""name"":""Bavaria"",""city"":""Barranquilla"",""state"":"""",""code"":"""",""country"":""Colombia"",""phone"":"""",""website"":""http://www.bavaria.com.co"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Fundada en abril de 1889 Cervecería Águila tiene una capacidad de producción de 3.234.000 hectolitros de cerveza al año, con los cuales atiende los departamentos del Sucre, Magdalena, Atlántico, Bolívar, Guajira, Cesar y la Isla de San Andrés. Produce y distribuye las marcas Águila, Club Colombia, Costeñita, además de cerveza en barril; Agua Brisa en diferentes presentaciones y Pony Malta. Esta planta tiene su origen en la Cervecería Barranquilla que empieza operaciones el 10 de abril de 1913 y años más tarde, en 1933, se une a la Cervecería Bolívar, convirtiéndose en la Cervecería Barranquilla y Bolívar S.A. El 3 de marzo de 1967 la compañía tomó el nombre de Cervecería Águila S.A. En diciembre de 2002 se fusionó con Bavaria S.A. convirtiéndose en una planta estratégica para el proceso de exportaciones de la compañía. Desde octubre de 2005, Bavaria es parte de SABMiller, segunda cervecera mundial en volumen, con operaciones en cuatro continentes y una producción que supera los 170 millones de hectolitros de cerveza anuales en más de 170 marcas."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":10.9639,""lon"":-74.7964}}",1,26,1
+glenwood_canyon_brewing_company,0,0,244629241858,"{""name"":""Glenwood Canyon Brewing Company"",""city"":""Glenwood Springs"",""state"":""Colorado"",""code"":""81601"",""country"":""United States"",""phone"":""1-970-945-1276"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""402 Seventh Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.5476,""lon"":-107.323}}",1,53,1
+yards_brewing-yards_philadelphia_pale_ale,0,0,245747875841,"{""name"":""Yards Philadelphia Pale Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Not to be boastful, but we honestly believe that all other ales pale in comparison to this one. Brewed with pilsner malt, Philadelphia Pale Ale is crisp and hoppy, bursting with citrus flavors and aromas.\r\n\r\nPhiladelphia Pale Ale was named one of the best Pale Ales in the country by the New York Times."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,29,1
+pyramid_alehouse_brewery_and_restaurant_seattle-krystal_weizen,0,0,245006204931,"{""name"":""Krystal Weizen"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,62,1
+great_lakes_brewing-burning_river_pale_ale,0,0,244759068672,"{""name"":""Burning River Pale Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An assertively hopped American Pale Ale with citrusy and piney Cascade hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,63,1
+clipper_city_brewing_co-peg_leg_stout,0,0,244487618561,"{""name"":""Peg Leg Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A dry Imperial stout with rich black color and aromas of roasted coffee, molasses, dark chocolate, toffee and caramel. Rich, powerful, and lingering."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,32,1
+brouwerij_het_anker-gouden_carolus_tripel,0,0,244483948544,"{""name"":""Gouden Carolus Tripel"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_het_anker"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+brasserie_de_saint_sylvestre-gavroche_french_red_ale,0,0,244366966784,"{""name"":""Gavroche French Red Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_saint_sylvestre"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-weizenberry,0,0,245006008323,"{""name"":""Weizenberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,61,1
+valley_forge_brewing,0,0,245123186690,"{""name"":""Valley Forge Brewing"",""city"":""Wayne"",""state"":""Pennsylvania"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.0439,""lon"":-75.3881}}",1,60,1
+baxter_brewing,0,0,244367228931,"{""name"":""Baxter Brewing"",""city"":""Lewiston"",""state"":""ME"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Planned to begin brewing in fall 2010."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.1004,""lon"":-70.2148}}",1,26,1
+goose_island_beer_company_clybourn-smooth_oatmeal_stout,0,0,244629241859,"{""name"":""Smooth Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,53,1
+aass_brewery,0,0,244367425536,"{""name"":""Aass Brewery"",""city"":""Drammen"",""state"":"""",""code"":"""",""country"":""Norway"",""phone"":""47-32-26-60-00"",""website"":""http://www.aass.no"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Aass Brewery was established in 1834 and is the oldest brewery in Norway today. It is located in the city of Drammen, approximately 25 miles south of our capital, Oslo. You will spot it at the banks of the Drammen River at the very same place as it has been since 1834. The annual production of beer is aprox. 10 mill liter (85 000 barrels), and together with the production of 18 mill liters of soft drinks and mineralwater it gives employment to approximately 150 people.  You may wonder how we got our name ? It was a young fellow with the name Poul Lauritz Aass that bought the brewery in 1860. Since then it has been in the same family, and is today run by the 4th generation of Aass. (By the way - A real Norwegian viking would pronounce it Ouse)  The brewery is proud of its history. To us the quality of what we produce has always been and always will be the main issue. In 1516, Duke Wilhelm of Bavaria established a law admitting only malted barley, hops yeast, and water as ingredients in the production of beer. The law is known as the purity law and Aass Brewery is still loyal to Duke Wilhelm of Bavaria. In Norway the brewery is known for outstanding quality and large number of different beer types."",""address"":[""Ole Steensgt. 10 Postboks 1530""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":59.7451,""lon"":10.2135}}",1,27,1
+rogue_ales-american_amber_ale,0,0,245006270464,"{""name"":""American Amber Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Tawny amber in color with a coffee aroma and tight head. A delicate roasted malt accent, generous use of hops and a smooth finish. American Amber, originally known as Ashland Amber (created at Rogues original brewpub in Ashland, Oregon which was destroyed by flooding several years ago), is created from Northwest Harrington and Klages, 95-115 and 135-165 Crystal Malts. Kent Golding and Cascade Hops. American Amber is available in a 22-ounce bottle, 12-ounce 6-pack (new for 2005), and on draft."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+greene_king-wexford_irish_cream_ale,0,0,244759134208,"{""name"":""Wexford Irish Cream Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greene_king"",""updated"":""2010-07-22 20:00:20"",""description"":""Based on a traditional Irish recipe from county Wexford that dates back to 1810, we use only the best ingredients to ensure that our Wexford Ale has a smooth mellow creaminess we believe you will enjoy."",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,63,1
+clipper_city_brewing_co-winter_storm,0,0,244487618562,"{""name"":""Winter Storm"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our \""winter warmer\"" ale, brewed with copious helpings of English malts and US and English hops, a ruddy hued \""Imperial ESB\"" in style. Full malty flavors dancing with powerful hop aromas and a lingering, firm hop bitterness. Seasonally available from mid October to February.\r\n\r\nGold Medal, International Pale Ale Category- World Beer Cup"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,32,1
+brouwerij_huyghe-delirium_noel,0,0,244483948545,"{""name"":""Delirium Noël"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_huyghe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,24,1
+brasserie_du_bocq,0,0,244366966785,"{""name"":""Brasserie du Bocq"",""city"":""Purnode"",""state"":""Namur"",""code"":"""",""country"":""Belgium"",""phone"":""32-083-61-07-80"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue de la Brasserie 4""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.3114,""lon"":4.9435}}",1,25,1
+ramapo_valley_brewery,0,0,245006073856,"{""name"":""Ramapo Valley Brewery"",""city"":""Hillburn"",""state"":""New York"",""code"":""10931"",""country"":""United States"",""phone"":""1-845-369-7827"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""143 Highway 59 Building 6""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.1151,""lon"":-74.147}}",1,61,1
+voodoo_brewing_co_llc-gran_met,0,0,245752266752,"{""name"":""Gran Met"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Gran Met (Grand Master) is an Ale made from our Propriatery yeast from a small brewery in Belgium. We use Cane and Beet sugar, along with German Pilsner Malt to create the unique flavor of this age old style. We also use a unique fermentation process of slowly adding the sugars to the fermentation during fermentation. This allows the yeast to more slowly ferment the beer without overloading the yeast. This process allows for a more clean, tight flavor profile.10% alc by vol. \r\n\r\nBottle Conditioned and Refermented."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,60,1
+beach_brewing-red_rock,0,0,244367294464,"{""name"":""Red Rock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,26,1
+gottberg_brew_pub-pioneer_pale_ale_discontinued,0,0,244629307392,"{""name"":""Pioneer Pale Ale (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+abita_brewing_company-strawberry_harvest_lager,0,0,244367425537,"{""name"":""Strawberry Harvest Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,27,1
+rogue_ales-morimoto_imperial_pilsner,0,0,245006270465,"{""name"":""Morimoto Imperial Pilsner"",""abv"":8.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Imperial Pilsner, part of the Morimoto Signature Series, was launched in September 2003. The beer was selected by internationally acclaimed Chef Masaharu Morimoto--a James Beard awarded chef and one of the stars of the Food Network series, Iron Chef. \r\n\r\nBrewed with four ingredients: 100% French Pilsner Malt, 100% Sterling Hops, Free Range Coastal Water and Czech Pilsner Yeast. Imperial Pilsner is golden in color with a dry hop floral aroma and intense hop bitterness supported by a big malty backbone. Available in a swing-top 750 mil ceramic bottle and 13.2 gallon sankey kegs.\r\nTo learn more about the Chef, visit Morimotos web page.""}",1,62,1
+grupo_modelo-corona_light,0,0,244759134209,"{""name"":""Corona Light"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grupo_modelo"",""updated"":""2010-12-20 16:15:31"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,63,1
+coniston_brewing-old_man_ale,0,0,244487684096,"{""name"":""Old Man Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coniston_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brouwerij_van_eecke-het_kapittel_abt,0,0,244484014080,"{""name"":""Het Kapittel Abt"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_eecke"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+brauerei_und_altbierkche_pinkus_mller-organic_ur_pils,0,0,244484276224,"{""name"":""Organic Ur Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_und_altbierkche_pinkus_mller"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+red_kettle_brewing,0,0,245006073857,"{""name"":""Red Kettle Brewing"",""city"":""Encinitas"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.037,""lon"":-117.292}}",1,61,1
+warwick_valley_wine_co-doc_s_hard_apple_cider,0,0,245752332288,"{""name"":""Doc's Hard Apple Cider"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""warwick_valley_wine_co"",""updated"":""2010-12-20 16:23:00"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,60,1
+bison_brewing-organic_barley_wine_ale_2005,0,0,244367294465,"{""name"":""Organic Barley Wine Ale 2005"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+great_dane_pub_and_brewing_1-crop_circle_wheat,0,0,244755529728,"{""name"":""Crop Circle Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,53,1
+alaskan_brewing-alaskan_white_ale,0,0,244367491072,"{""name"":""Alaskan White Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Alaskan White Ale has a soft, slightly sweet base with the unique spice aroma of coriander and crisp, citrus finish of orange peel. A light and effervescent body combined with the smooth palate creates a complex and delicate beer that is deliciously refreshing in any season."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,27,1
+rogue_ales-old_crustacean_barleywine_2005,0,0,245006270466,"{""name"":""Old Crustacean Barleywine 2005"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+hanssens_artisanal-oudbeitje,0,0,244759199744,"{""name"":""Oudbeitje"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hanssens_artisanal"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,63,1
+cugino_brewing_company-beer,0,0,244487684097,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cugino_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,32,1
+browar_okocim-okocim_porter,0,0,244484014081,"{""name"":""Okocim Porter"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""browar_okocim"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+breckenridge_bbq_of_omaha-india_pale_ale,0,0,244484341760,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_bbq_of_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+rock_bottom_restaurant_brewery_milwaukee-pilsner,0,0,245006073858,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_milwaukee"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+wynkoop_brewing-railyard_ale,0,0,245752332289,"{""name"":""Railyard Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship brew is a smooth, amber beer that combines the malty goodness of an Octoberfest lager with the slight fruitiness of an ale. Hearty but refreshing."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,60,1
+bootleggers_steakhouse_and_brewery-bourbon_street_stout,0,0,244367294466,"{""name"":""Bourbon Street Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bootleggers_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,26,1
+great_northern_tavern_and_brewery-empire_builder_stout,0,0,244755595264,"{""name"":""Empire Builder Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_northern_tavern_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,53,1
+american_river_brewing-oatmeal_stout,0,0,244367556608,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""american_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,27,1
+rogue_ales-red_fox,0,0,245006336000,"{""name"":""Red Fox"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+harpoon_brewery_boston-harpoon_celtic_ale,0,0,244759199745,"{""name"":""Harpoon Celtic Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,63,1
+de_proef_brouwerij-andelot_cuvee_diabolique,0,0,244619739136,"{""name"":""Andelot Cuvee Diabolique"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+c_b_potts_of_cheyenne-big_horn_big_red_ale,0,0,244484079616,"{""name"":""Big Horn Big Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,24,1
+breckenridge_brewery-summer_bright_ale,0,0,244484407296,"{""name"":""Summer Bright Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+sam_choy_s_breakfast_lunch_crab_big_aloha_brewery-bumbucha_stout,0,0,245006073859,"{""name"":""Bumbucha Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sam_choy_s_breakfast_lunch_crab_big_aloha_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,61,1
+zea_rotisserie_and_brewery-abby_road_belgian_ale,0,0,245752332290,"{""name"":""Abby Road Belgian Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,60,1
+boulevard_brewing_company-boulevard_maibock,0,0,244367360000,"{""name"":""Boulevard Maibock"",""abv"":5.95,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""First introduced in 2008, Boulevard Maibock is a new, limited-release seasonal brew. A welcome sign of Spring, this beer is a traditional German lager, lighter in color than other bocks. Boulevard’s Maibock is a distinctive, refreshing take on this springtime classic."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,26,1
+great_waters_brewing_company-brown_trout_brown,0,0,244755595265,"{""name"":""Brown Trout Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,53,1
+andechser_klosterbrauerei-doppelbock_dunkel,0,0,244367556609,"{""name"":""Doppelbock Dunkel"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""andechser_klosterbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,27,1
+salt_lake_brewing_squatters-black_forest_schwarzbier,0,0,245006336001,"{""name"":""Black Forest Schwarzbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""salt_lake_brewing_squatters"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,62,1
+hereford_hops_restaurant_and_brewpub_1-whitetail_ale,0,0,244759199746,"{""name"":""Whitetail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_restaurant_and_brewpub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,63,1
+dick_s_brewing-silk_lady,0,0,244619804672,"{""name"":""Silk Lady"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,32,1
+captain_lawrence_brewing_company-captain_s_reserve_imperial_ipa,0,0,244484079617,"{""name"":""Captain's Reserve Imperial IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is a salute to the ingenuity and creativity of the American craft brewers. A uniquely American style of beer, the Double or Imperial IPA, has become the calling card of many craft brewers who aren't afraid to push the limits of what hops can add to a beer. This beer is big and hoppy - not for the faint of heart! Be prepared to experience sensory overload as you savor this Imperial IPA."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,24,1
+brewery_ommegang-hennepin_farmhouse_ale,0,0,244484407297,"{""name"":""Hennepin Farmhouse Ale"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_ommegang"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+sarah_hughes_brewery,0,0,245006073860,"{""name"":""Sarah Hughes Brewery"",""city"":""Dudley"",""state"":""West Midlands"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dudley DY3 1JE""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.5435,""lon"":-2.1156}}",1,61,1
+brasserie_des_franches_montagnes,0,0,244367360001,"{""name"":""Brasserie des Franches-Montagnes"",""city"":""Saignelgier"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-32-951-26-26"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Chemin des Buissons 8""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.2543,""lon"":7.0026}}",1,26,1
+green_flash_brewing-green_flash_imperial_india_pale_ale,0,0,244755660800,"{""name"":""Green Flash Imperial India Pale Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_flash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,53,1
+anheuser_busch-bud_extra,0,0,244367622144,"{""name"":""Bud Extra"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Originally known as \""B to the E\""""}",1,27,1
+schooner_s_grille_brewery,0,0,245006336002,"{""name"":""Schooner's Grille & Brewery"",""city"":""Antioch"",""state"":""California"",""code"":""94531"",""country"":""United States"",""phone"":""1-925-776-1800"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4250 Lone Tree Way""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.9669,""lon"":-121.783}}",1,62,1
+hoppin_frog_brewery-hoppin_to_heaven_ipa,0,0,244759265280,"{""name"":""Hoppin' To Heaven IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Raise your glass to the heavens in a toast to HOPS – the spice of beer! This classic American I.P.A. features the finest American hops to add a spicy, assertive, and citrusy character to its full-bodied, rich malt taste"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,63,1
+double_mountain_brewery_taproom-double_mountain_altbier,0,0,244619804673,"{""name"":""Double Mountain Altbier"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""double_mountain_brewery_taproom"",""updated"":""2010-07-22 20:00:20"",""description"":""This special German-style ale is still made faithfully in Dusseldorf, just down the road from Cologne. Our interpretation is light brown in color and cleanly malty, with a crisp hoppy bitterness in the finish. \r\nBrewed with organic Pilsner and Munich malt; Chocolate and wheat malt, and imported Spalt hops."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,32,1
+carolina_beer_company,0,0,244484079618,"{""name"":""Carolina Beer Company"",""city"":""Mooresville"",""state"":""North Carolina"",""code"":""28115"",""country"":""United States"",""phone"":""(704) 799-2337"",""website"":""http://www.carolinabeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""110 Barley Park Lane""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.6231,""lon"":-80.8011}}",1,24,1
+bricktown_brewery-laughing_ass,0,0,244484407298,"{""name"":""Laughing Ass"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bricktown_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+sequoia_brewing_conoabt,0,0,245006139392,"{""name"":""Sequoia Brewing Conoabt"",""city"":""Fresno"",""state"":""California"",""code"":""93728"",""country"":""United States"",""phone"":""1-559-264-5521"",""website"":""http://www.sequoiabrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""777 East Olive Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.7582,""lon"":-119.802}}",1,61,1
+brasserie_dubuisson-scaldis_bush_amber_12,0,0,244367360002,"{""name"":""Scaldis / Bush Amber 12%"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dubuisson"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+hansa_bryggeri-premium,0,0,244755660801,"{""name"":""Premium"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hansa_bryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+appalachian_brewing_company-ipa_series_simcoe,0,0,244367622145,"{""name"":""IPA Series (Simcoe)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A series of single hop, small batch IPAs brewed in Camp Hill. These IPAs showcase the bitterness, flavor, and aroma of each particular hop variety."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,27,1
+shipyard_brewing_portland-export_ale,0,0,245006336003,"{""name"":""Export Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+hubcap_brewery_and_kitchen-rainbow_trout_stout,0,0,244759265281,"{""name"":""Rainbow Trout Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hubcap_brewery_and_kitchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+dragonmead_microbrewery-broken_paddle,0,0,244619870208,"{""name"":""Broken Paddle"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""If you like your beer on the bitter side then this one's for you. This American Style IPA uses Pale Ale, Munich, and Caramunich malt blest with Cascade, Chinook, Willamette and Centennial (dry hopped) hops to create a brew that is fit for the crazy American hop addicts."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,32,1
+chelsea_brewing_company-checker_cab_blonde_ale,0,0,244484145152,"{""name"":""Checker Cab Blonde Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chelsea_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+brouwerij_de_landtsheer-malheur_12,0,0,244484472832,"{""name"":""Malheur 12"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_landtsheer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+sly_fox_brewhouse_and_eatery_royersford-sly_fox_christmas_ale,0,0,245123252224,"{""name"":""Sly Fox Christmas Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":""This malty, full-bodied red ale is made with traditional mulling spices: Ginger, Clove, All Spice, Cinnamon & Nutmeg. If this one doesn't get you into the Christmas spirit, you truly are a Scrooge."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,61,1
+brasserie_lefebvre-saison_1900,0,0,244484603904,"{""name"":""Saison 1900"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_lefebvre"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+highland_brewing_company-oatmeal_porter,0,0,244755726336,"{""name"":""Oatmeal Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A unique Highland creation, this robust beer is black in color, very malty with hints of chocolate-roasted flavor and a well balanced hop character.\r\n\r\nIBU: 32\r\nAlcohol content: 5.8% by volume\r\nHops: Chinook, Willamette and Cascade\r\n\r\nCalories per 12 oz. 191.16\r\nCarbs per 12 oz. 19.42"",""style"":""Porter"",""category"":""Irish Ale""}",1,53,1
+appalachian_brewing_company-volks_weizenbock,0,0,244367622146,"{""name"":""Volks Weizenbock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Volks Weizenbock combines the strong malty component of a bock bier with the tangy, spiciness of the Hefe Weizen.  This beer is brewed 1 1/2 times stronger than our Hefe Weizen and is aged commensurately longer for extra smoothness!  \r\nVolks Weizenbock is \""The Peoples Beer\""!"",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,27,1
+allagash_brewing-grand_cru,0,0,244364279808,"{""name"":""Grand Cru"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+sierra_nevada_brewing_co-harvest_ale_2007,0,0,245006336004,"{""name"":""Harvest Ale 2007"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,62,1
+indian_wells_brewing-desert_pale_ale,0,0,244759265282,"{""name"":""Desert Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""indian_wells_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,63,1
+empyrean_brewing_company-summer_common,0,0,244619870209,"{""name"":""Summer Common"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+clipper_city_brewing_co-hang_ten,0,0,244484145153,"{""name"":""Hang Ten"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Hang Ten is the Heavy Seas wheat beer you’ve been waiting for. A classic German-style weizen bock, slightly cloudy and bursting with flavor. Hang on and surf the Heavy Seas wave! Seasonally available in July while supplies last."",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,24,1
+california_cider_company-ace_fermented_honey_cider,0,0,244484472833,"{""name"":""Ace Fermented Honey Cider"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""california_cider_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+south_australian_brewing,0,0,245123252225,"{""name"":""South Australian Brewing"",""city"":""Adelaide"",""state"":""South Australia"",""code"":"""",""country"":""Australia"",""phone"":""61-(09)-8354-8666"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""107 Port Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-34.9111,""lon"":138.575}}",1,61,1
+brasserie_mcauslan,0,0,244484669440,"{""name"":""Brasserie McAuslan"",""city"":""Montreal"",""state"":""Quebec"",""code"":""H4C 2G"",""country"":""Canada"",""phone"":""1-514-939-3060"",""website"":""http://www.mcauslan.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5080 Rue St-Ambroise""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.4682,""lon"":-73.5913}}",1,26,1
+hornsby_s_pubdrafts_ltd,0,0,244755726337,"{""name"":""Hornsby's Pubdrafts Ltd."",""city"":""Modesto"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""600 Yosemite Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.6345,""lon"":-120.982}}",1,53,1
+back_road_brewery-back_road_american_pale_ale,0,0,244367687680,"{""name"":""Back Road American Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""If you are looking for a straight shooting quaffable beer with plenty of hops, this is it.  Straw colored from plump North American 2-row malted barley and deliciously hopped with Cascades from the USA, any patriot can enjoy this beer.  Cascade hops have a pleasant taste and fresh smell best described as florally or mildly citrusy.  A nice balance is struck between the malt and hops.  So how about it Yank?  Put that capitalism to work and buy some today!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+appleton_brewing-adler_brau_bucky_brau_barleywine,0,0,244364345344,"{""name"":""Adler Bräu Bucky Brau Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+spoetzl_brewery-shiner_bock,0,0,245123645440,"{""name"":""Shiner Bock"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spoetzl_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,62,1
+jacob_leinenkugel_brewing_company-red_lager,0,0,244759330816,"{""name"":""Red Lager"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+faultline_brewing_2-stout,0,0,244619870210,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+court_avenue_brewing-black_hawk_stout,0,0,244484145154,"{""name"":""Black Hawk Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""court_avenue_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,24,1
+captain_lawrence_brewing_company-nor_easter,0,0,244484472834,"{""name"":""Nor' Easter"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a truly unique brew, combining some unusual elements to create a powerful, yet flavorful brew. I brewed a similar beer to this one back in 1998, while I was home brewing out in California. Only this time around I decided to age it in bourbon barrels to add a new element to the already rich sensory profile. The combination of dark malt, elderberries and bourbon barrels makes for an interesting tasting experience. This is a sippin’ beer, so sit back by the fire and enjoy. 12% alcohol by volume."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,25,1
+southern_tier_brewing_co-iniquity_imperial_black_ale,0,0,245123317760,"{""name"":""Iniquity Imperial Black Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The hexagram talisman has been used around the world for centuries to invoke magic and good luck. The six–point star is also the customary symbol of the brewer, representing the essential aspects of purity: water, hops, grain, malt, yeast, and of course, the brewer. Wishes of good fortune often collaborate with the brewer’s creativity to yield dramatic results. We carefully chose the name for this Imperial India Black Ale, Iniquity – a word opposing goodness. Why? This beer is contrary to what one may expect from an IPA; this is an ale as black as night. It is the antithesis of Unearthly. Some may consider it an immoral act to blacken an ale. We suggest they don’t rely on conventional standards. Allow the darkness to consume you. Cheers!""}",1,61,1
+brasserie_pietra-ambree_chestnut_beer,0,0,244484669441,"{""name"":""Ambrée / Chestnut Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_pietra"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+joshua_huddy_s_brew_pub_and_grill-porter,0,0,244755726338,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joshua_huddy_s_brew_pub_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,53,1
+bamberger_mahr_s_bru-pilsner,0,0,244367687681,"{""name"":""Pilsner"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+barley_s_brewing_1-j_scott_francis_esb,0,0,244364410880,"{""name"":""J. Scott Francis ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_s_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+st_francis_abbey_brewery,0,0,245123710976,"{""name"":""St. Francis Abbey Brewery"",""city"":""Kilkenny"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":"""",""website"":""http://www.diageo.ie/Company/Brewing/KilKenny/CompanyBrewingKilkenny"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.6538,""lon"":-7.248}}",1,62,1
+jarre_creek_ranch_brewing,0,0,244759330817,"{""name"":""Jarre Creek Ranch Brewing"",""city"":""Castle Rock"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.3722,""lon"":-104.856}}",1,63,1
+fitzpatrick_s_brewing,0,0,244619935744,"{""name"":""Fitzpatrick's Brewing"",""city"":""Iowa City"",""state"":""Iowa"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.6611,""lon"":-91.5302}}",1,32,1
+court_avenue_brewing-esb,0,0,244484210688,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""court_avenue_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+cat_s_paw_home_brew-monkeyboy_ale,0,0,244484472835,"{""name"":""MonkeyBoy Ale"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cat_s_paw_home_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Made for Wedding"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,25,1
+southern_tier_brewing_co-oak_aged_unearthly_imperial_pale_ale,0,0,245123317761,"{""name"":""Oak Aged Unearthly Imperial Pale Ale"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,61,1
+brauerei_aying_franz_inselkammer_kg-jahrhundert_bier,0,0,244484669442,"{""name"":""Jahrhundert-Bier"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_aying_franz_inselkammer_kg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+jw_lees_and_co_brewers_ltd,0,0,244755726339,"{""name"":""JW Lees and Co (Brewers) Ltd."",""city"":""Manchester"",""state"":""Manchester"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0161)-6432487"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Middleton Junction""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.5412,""lon"":-2.1734}}",1,53,1
+barley_john_s_brewpub,0,0,244367687682,"{""name"":""Barley John's Brewpub"",""city"":""New Brighton"",""state"":""Minnesota"",""code"":""55112"",""country"":""United States"",""phone"":""1-651-636-4670"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""781 Old Highway 8 SW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.036,""lon"":-93.1984}}",1,27,1
+barrel_house_brewing_co-redlegg_ale,0,0,244364410881,"{""name"":""RedLegg Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barrel_house_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""In the old days, runners who made it to third base were rewarded with a mug of beer! This is the way the game was meant to be played; pitchers throwing side- armed and a half barrel on the field. Our Red Legg Ale is an American Amber Ale with a rich, malty flavor, slightly sweet on the finish. An All-Star in any line- up!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,20,1
+staatliches_hofbrauhaus_in_munchen-hofbrau_oktoberfestbier,0,0,245123710977,"{""name"":""Hofbräu Oktoberfestbier"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""staatliches_hofbrauhaus_in_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":""Hofbräu brews a rich, full-bodied beer which goes down ideally with traditional Bavarian cuisine. With its deliciously bitter taste and alcoholic content of 6.3% volume, Hofbräu Oktoberfestbier is as special as the Beer Festival itself.\r\n\r\nType: Bottom-fermented, light festive beer"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,62,1
+jolly_pumpkin_artisan_ales-madrugada_obscura,0,0,244759330818,"{""name"":""Madrugada Obscura"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian inspired stout that is as dark as a moonless midnight, brimming of roasted malts and bitter hops. It will keep you good company in all places, be thay light or dark."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+fort_collins_brewery-the_kidd_lager,0,0,244619935745,"{""name"":""The Kidd Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fort_collins_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,32,1
+de_leyerth_brouwerijen-urthel_hibernius_quentum_ale,0,0,244616593408,"{""name"":""Urthel Hibernius Quentum Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_leyerth_brouwerijen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+cedar_brewing-ribleymeister_light,0,0,244484538368,"{""name"":""Ribleymeister Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+st_austell_brewery,0,0,245123383296,"{""name"":""St. Austell Brewery"",""city"":""St. Austell"",""state"":""Cornwall"",""code"":""PL25 4BY"",""country"":""United Kingdom"",""phone"":""0845 2411122"",""website"":""http://www.staustellbrewery.co.uk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""63 Trevarthian Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.3416,""lon"":-4.7883}}",1,61,1
+brauerei_grieskirchen_ag-jorger_weisse_hell,0,0,244484669443,"{""name"":""Jörger Weiße Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_grieskirchen_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,26,1
+kaiserdom_privatbrauerei_bamberg-meranier_schwarzbier,0,0,244755791872,"{""name"":""Meranier Schwarzbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kaiserdom_privatbrauerei_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,53,1
+baron_brewing_company-baron_helles_bock,0,0,244367687683,"{""name"":""Baron Helles Bock"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""baron_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Helles-Bock is similar to a traditional Maibock. Bocks are traditionally brewed in the winter / early spring months and are served during the spring / early summer months. The Helles Bock has a copper golden color with a brilliant white head. The body showcases a clean sweet maltiness that is offset by just enough hops to balance it. Very smooth and easy, drinkable yet deceptive at 6.4%.\r\n\r\nAll ingredients for the beer are imported from Germany. Brewed in accordance to the German Beer Purity Law (Reinheitsgebot) of 1516."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,27,1
+basil_t_s_brew_pub_and_italian_grill,0,0,244364410882,"{""name"":""Basil T's Brew Pub and Italian Grill"",""city"":""Toms River"",""state"":""New Jersey"",""code"":""8753"",""country"":""United States"",""phone"":""1-732-244-7566"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1171 Hooper Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.9767,""lon"":-74.1829}}",1,20,1
+stadsbrouwerij_de_hemel-nieuw_ligt_grand_cru_2006,0,0,245123710978,"{""name"":""Nieuw Ligt Grand Cru 2006"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stadsbrouwerij_de_hemel"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+jt_whitney_s_brewpub_and_eatery-badger_red_ale,0,0,244759396352,"{""name"":""Badger Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,63,1
+glacier_brewhouse-black_rye_bock,0,0,244620001280,"{""name"":""Black Rye Bock"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glacier_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark lager combines the characteristics of three winter beer styles. All three of these styles traditionally come from the colder harsher areas of Europe. The styles are (1) Black Beer (aka schwartzbier) originating from the former East Germany); (2) Rye Beer which at one time was only made in hardier areas of Eastern and Baltic Europe; and (3) Bock Beer which is widely known as a higher alcohol lager of Northern Germany. Our Black Rye Bock has a distinctive bitter chocolate palate and black color reminiscent of a black beer. The spiciness from the rye malt shines through in the flavor. The high alcohol balanced with malty sweetness rounds out this cold season bock. Smooth drinking with a punch makes this lager a perfect quaffer for our Arctic winter. 6.2% alcohol by volume."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,32,1
+de_proef_brouwerij-flemish_primitive_wild_ale_pig_nun,0,0,244616658944,"{""name"":""Flemish Primitive Wild Ale (Pig Nun)"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+central_city_brewing_company,0,0,244484538369,"{""name"":""Central City Brewing Company"",""city"":""Surrey"",""state"":""British Columbia"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":""http://www.centralcitybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""13450 - 102 Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.1873,""lon"":-122.85}}",1,25,1
+steamworks-sour_cherry_ale,0,0,245123383297,"{""name"":""Sour Cherry Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""An intriguing fruit beer brewed with fresh sour cherries.\r\n\r\nOur Sour Cherry Ale is inspired by the centuries old Belgian tradition of brewing beer with cherries. This high gravity brew undergoes a slow second fermentation with tons of fresh, whole Montmorency cherries from a local orchard in the Fraser Valley. The result is a most intriguing beer with an elegant cherry perfume, a tart, fruity flavour, and a subtle almondy finish."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,61,1
+brauhaus_johann_albrecht_dsseldorf,0,0,244484734976,"{""name"":""Brauhaus Johann Albrecht - Dsseldorf"",""city"":""Dsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)211-/-570129"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Niederkasseler Strae 104""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.2404,""lon"":6.7516}}",1,26,1
+kessler_brewing-wild_west_beer,0,0,244755791873,"{""name"":""Wild West Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kessler_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+beach_chalet_brewery-essex_s_o_b,0,0,244367753216,"{""name"":""Essex S.O.B."",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_chalet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+bell_s_brewery_inc-lager_beer,0,0,244364476416,"{""name"":""Lager Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""As refreshingly crisp as a morning swim in a Great Lake, this brew is crafted with Pils and Munich malts. The pronounced hop character of this golden lager sparks thoughts of sandy beaches and rocky islands."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+stone_brewing_co-levitation_ale,0,0,245123776512,"{""name"":""Levitation Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,62,1
+keihan_uji_kotsu-busby_stout,0,0,244759396353,"{""name"":""Busby Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keihan_uji_kotsu"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+golden_gate_park_brewery-four_sheets_cream_ale,0,0,244620001281,"{""name"":""Four Sheets Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_gate_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,32,1
+dempsey_s_restaurant_brewery-spring_bock,0,0,244616658945,"{""name"":""Spring Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dempsey_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,24,1
+cigar_city_brewing-guava_grove_ale,0,0,244484538370,"{""name"":""Guava Grove Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cigar_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Guava Grove is a Saison which is fermented with guava. The guava adds sweetness and acidity to the prodigious fruity esters imparted by the warm fermentation temperatures  of the Belgian yeast strain."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,25,1
+stone_brewing_co-4th_anniversary_ipa,0,0,245123383298,"{""name"":""4th Anniversary IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,61,1
+brewdog_ltd-77_lager,0,0,244484734977,"{""name"":""77 Lager"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""A Lager that actually tastes of something?\r\n\r\nYou have to be kidding, right?\r\n\r\n77 lager is made with 100% malt and whole leaf hops.\r\n\r\nIt contains no preservatives, additives, cheap substitutes or any other junk.\r\n\r\nMaybe we are crazy. So what?\r\n\r\nTaste 77 Lager and we are pretty sure you will agree that the fine line between genius and insanity has just become a little more blurred."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,26,1
+lakefront_brewery-beer_line_2000,0,0,244755791874,"{""name"":""Beer Line 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+belize_brewing,0,0,244367753217,"{""name"":""Belize Brewing"",""city"":""Belize City"",""state"":"""",""code"":"""",""country"":""Belize"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 1068""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":17.4977,""lon"":-88.1867}}",1,27,1
+bersaglier,0,0,244364476417,"{""name"":""Bersaglier"",""city"":""San Martin"",""state"":""Buenos Aires"",""code"":""1650"",""country"":""Argentina"",""phone"":""(54)-011-4713-6557"",""website"":""http://www.bersaglier.com.ar/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Calle 92 N� 101""]}",1,20,1
+stoudt_s_brewery-smooth_hoperator,0,0,245123776513,"{""name"":""Smooth Hoperator"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,62,1
+kleinbrouwerij_de_glazen_toren-canaster_winter_scotch,0,0,244759396354,"{""name"":""Canaster Winter Scotch"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kleinbrouwerij_de_glazen_toren"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+goose_island_beer_company_fulton_street-matilda,0,0,244620001282,"{""name"":""Matilda"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+dixon_s_downtown_grill-uncle_dunkel,0,0,244616724480,"{""name"":""Uncle Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dixon_s_downtown_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+costal_extreme_brewing_company-newport_storm_hurricane_amber_ale,0,0,244484603904,"{""name"":""Newport Storm Hurricane Amber Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""costal_extreme_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The first offering from the Coastal Extreme Brewing Company blends some of the world's finest ingredients into a delightful beer. In producing our amber ale, we selected the highest quality European and American malts and hops. This ale has a malt character which is delicately balanced with its hop profile so that consumers of all levels enjoy drinking it. Hurricane Amber Ale is a full flavored beer which clearly has more taste than other domestic and imported light beers while at the same time does not overpower the drinker with heavy body or excessive bitterness. So find yourself a cold 'Hurricane' and ENJOY!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,25,1
+stone_brewing_co-stone_pale_ale,0,0,245123448832,"{""name"":""Stone Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship ale, Stone Pale Ale is our Southern California interpretation of the classic British pale ale style. Deep amber in color, Stone Pale Ale is robust and full flavored. A delicate hop aroma is complemented by a rich maltiness. This is an ale for those who have learned to appreciate distinctive flavor. Stone Pale Ale is great by itself, or with food that requires a beer of character."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,61,1
+brouwerij_bosteels-deus_brut_des_flandres,0,0,244484734978,"{""name"":""Deus Brut des Flandres"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bosteels"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+liefmans_breweries,0,0,244755857408,"{""name"":""Liefmans Breweries"",""city"":""Dentergem"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-051-63-36-81"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wontergemstraat 42""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9649,""lon"":3.422}}",1,53,1
+bent_river_brewing-pale_ale,0,0,244367753218,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bent_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+big_time_brewing-prime_time_pale_ale,0,0,244364476418,"{""name"":""Prime Time Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,20,1
+the_livery-the_livery_hefe_weizen,0,0,245123842048,"{""name"":""The Livery Hefe Weizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""A lightly hopped, refreshing, Bavarian style wheat ale that has hints of banana and clove in the finish. Available May until October."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,62,1
+left_hand_brewing_company,0,0,244759461888,"{""name"":""Left Hand Brewing Company"",""city"":""Longmont"",""state"":""Colorado"",""code"":""80501"",""country"":""United States"",""phone"":""1-303-772-0258"",""website"":""http://www.lefthandbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1265 Boston Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.1587,""lon"":-105.113}}",1,63,1
+gordon_biersch_brewing-dunkles,0,0,244620066816,"{""name"":""Dunkles"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+dreher_srgyrak_zrt-dreher_classic,0,0,244616724481,"{""name"":""Dreher Classic"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dreher_srgyrak_zrt"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,24,1
+dixon_s_downtown_grill-platte_valley_pale_ale,0,0,244616986624,"{""name"":""Platte Valley Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dixon_s_downtown_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+stone_brewing_co-sublimely_self_righteous_ale,0,0,245123448833,"{""name"":""Sublimely Self-Righteous Ale"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Brace yourself, bereaved fans of Stone 11th Anniversary Ale, for your joyous new day has finally come! It’s like your first crush–you know, the one who broke your heart when she/he decided to go to the junior prom with what’s-their-name–has suddenly come back to you to go for a cruise down the main drag on Friday night. It’s like…it’s like finding that long lost gold watch, given to you by your father, who got it from his father, who got it from his father. It’s like when your best buddy in the world, Sam the family dog, finally sauntered up the front porch steps one sunny afternoon after having been on a six-week runaway. Yes, it’s just like that.\r\n\r\nAnd it’s like this: A brilliantly hopped double IPA–providing a wake up call of floral and citrus aromas–backed up by a deliciously smooth and dark roasted maltiness. You get the best of both worlds with this black double IPA.""}",1,61,1
+brouwerij_rodenbach-alexander,0,0,244484800512,"{""name"":""Alexander"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_rodenbach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+lion_brewery_ceylon_ltd-imperial_premium_malt_pilsner,0,0,244878409728,"{""name"":""Imperial Premium Malt Pilsner"",""abv"":8.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lion_brewery_ceylon_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Lion Imperial Lager, from Sri Lanka, is brewed using the finest natural ingredients - delivering a rich smooth taste and refreshment. Enjoy its bite.""}",1,53,1
+bierbrouwerij_bavaria-holland_beer,0,0,244367753219,"{""name"":""Holland Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_bavaria"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+birrificia_le_baladin-super,0,0,244364476419,"{""name"":""Super"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birrificia_le_baladin"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+three_needs_brewery_and_taproom-peat_smoked_altbier,0,0,245123842049,"{""name"":""Peat Smoked Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_needs_brewery_and_taproom"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,62,1
+lwenbru_zrich-lowen_weisse,0,0,244882735104,"{""name"":""Löwen Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lwenbru_zrich"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,63,1
+granville_island_brewing-brockton_black_lager,0,0,244747010048,"{""name"":""Brockton Black Lager"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granville_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,32,1
+dux_de_lux,0,0,244616724482,"{""name"":""Dux de Lux"",""city"":""Queenstown"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":""03 442 9688"",""website"":""http://www.thedux.co.nz/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""16 Church Street PO Box 684""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-45.0331,""lon"":168.661}}",1,24,1
+dragonmead_microbrewery-dubbel_dragon,0,0,244617052160,"{""name"":""Dubbel Dragon"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This Dubbel style Belgian beer is created in the great Belgian tradition. Pale Malt, Caramel and Special B Malts impart a unique sweetness to this beer. The traditional Belgian yeast fully ferments the Belgian Candi Sugar to give a satisfying taste that is twice what a Belgian pale delivers."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,25,1
+taiwan_tobacco_and_wine_monopoly_board,0,0,245123514368,"{""name"":""Taiwan Tobacco and Wine Monopoly Board"",""city"":""Taipei"",""state"":"""",""code"":"""",""country"":""Taiwan, Province of China"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Taipei""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":25.026,""lon"":121.472}}",1,61,1
+brown_street_brewery-aussie_lager,0,0,244484800513,"{""name"":""Aussie Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brown_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+lost_coast_brewery-dunkel_hefeweizen,0,0,244878475264,"{""name"":""Dunkel Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+big_horn_brewing_the_ram_2-schaumbergfest,0,0,244367753220,"{""name"":""Schaumbergfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_horn_brewing_the_ram_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,27,1
+black_creek_historic_brewery,0,0,244364541952,"{""name"":""Black Creek Historic Brewery"",""city"":""Toronto"",""state"":""Ontario"",""code"":""M3J 2P3"",""country"":""Canada"",""phone"":""416 736-1733"",""website"":""http://www.blackcreekbrewery.ca/"",""type"":""brewery"",""updated"":""2011-06-08 07:07:47"",""description"":""Black Creek Historic Brewery recreates the techniques, tools and recipes used by brewers in 1860s Ontario. Our Brewmasters do everything by hand on a small scale. It's a great place to learn about beer because, unlike a modern commercial brewery, you can see every step in the process for yourself. And, no one else has a Brewmaster ready to welcome visitors in period costume.\n\nIn the 1860s there were 155 registered breweries in Ontario, and countless smaller operations. Black Creek Historic Brewery is the first in this province to replicate the brewing processes of that era, when there was no electricity or refrigeration, no stainless steel tanks or bottling plants.\n\nThe equipment at Black Creek Historic Brewery is made mainly of wood and copper, and the beer ferments the way it was done in the old days, with wooden barrels to age the beer. Malted barley is shoveled by hand into the wort tun where it is boiled into a mash. After filtering the solids through a linen cloth, the sugary liquid is boiled and hops are added, both for flavouring and as a natural preservative. Once the boiling is complete, the beer is put in barrels where the yeast is added. A short time later, the beer is ready!\n\nVisitors can sample the beer at cellar temperature, the way it was enjoyed in the past, or drink a chilled pint in the pub, the way many people prefer it today. Either way, you"",""address"":[""Black Creek Pioneer Village"",""1000 Murray Ross Parkway""]}",1,20,1
+troegs_brewing-oatmeal_stout,0,0,245123842050,"{""name"":""Oatmeal Stout"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Tröegs Oatmeal Stout is our interpretation of the classic dry stout style. Dark and creamy with hints of chocolate and black currants, our Oatmeal Stout includes a healthy dose of Centennial and Chinook hops creating a unique stout perfect for the late Fall and Winter."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,62,1
+marzoni_s_brick_oven_brewing_co-stone_mason_stout,0,0,244882800640,"{""name"":""Stone Mason Stout"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marzoni_s_brick_oven_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Creamy and Dark with a Dry Roasted Finish"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+great_dane_pub_and_brewing_2-black_earth_porter,0,0,244747075584,"{""name"":""Black Earth Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,32,1
+finnegans-irish_amber,0,0,244616790016,"{""name"":""Irish Amber"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":2147483647,""type"":""beer"",""brewery_id"":""finnegans"",""updated"":""2010-12-03 17:58:29"",""description"":""Finnegans Irish Amber is brewed with potatoes and three varieties of imported two-row malts. The beer is pale amber in color but light in body. A gentle hop bitterness compliments its complex malt character. \n\nFinnegans is currently available on tap and in liquor stores throughout the state of Minnesota. Finnegans is unique in that 100% of the profits are donated to The Finnegans Community Fund which disburses grants to help the working poor and at-risk youth throughout Minnesota. "",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,24,1
+dragonmead_microbrewery-excalibur_barleywine,0,0,244617052161,"{""name"":""Excalibur Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+the_bruery-black_orchard,0,0,245123514369,"{""name"":""Black Orchard"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Black Orchard is an unfiltered, bottle conditioned Belgian-style black wheat beer, or “black wit”, if you will. This dark but surprisingly light bodied beer is very drinkable while still having character and complexity. Chamomile is added for its floral aroma, while the coriander and citrus peel give the characteristics of a traditional witbier.""}",1,61,1
+21st_amendment_brewery_cafe-general_pippo_s_porter,0,0,244364607488,"{""name"":""General Pippo's Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep toffee color with rich roasty and subtle hop aroma. Chocolate flavors dominate the palate and interact with back-end sweetness."",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+bull_bush_pub_brewery-portsmouth_pale,0,0,244484866048,"{""name"":""Portsmouth Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+main_street_station_casino_brewery_and_hotel-hibernator_doppelbock,0,0,244878540800,"{""name"":""Hibernator Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_station_casino_brewery_and_hotel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,53,1
+big_river_brewing-vienna_lager,0,0,244367753221,"{""name"":""Vienna Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+blue_point_brewing-sour_cherry_imperial_stout,0,0,244364541953,"{""name"":""Sour Cherry Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-12-20 15:37:54"",""description"":""An extremely complex version of the classic Russian beer style. Roasted, black, and chocolate malts deliver multi-layered coffee and sherry notes in a surprisingly smooth package. The beer is then matured with just a kiss of real sour red cherries."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,20,1
+tyranena_brewing-bitter_woman_ipa,0,0,245123907584,"{""name"":""Bitter Woman IPA"",""abv"":5.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Lest we forget Aunt Cal, an early resident of Lake Mills.  Local history remembers her for blindly running into a hitching post and saying, \""Excuse me, Dr. Dodge!\""  It was said that she was an old sweetheart of the famous American poet, Henry Wadsworth Longfellow.  And she still had the love letters to prove it!  Sadly, Aunt Cal never wed.  We brewed our Bitter Woman IPA the way we imagine Aunt Cal may have been, very fruity and intensely bitter.  So lift up a pint of Bitter Woman IPA and toast Aunt Cal and the bitter woman you know.  Cheers!\r\n\r\nBitter Woman IPA is our Wisconsin variation of an India Pale Ale.  This beer is intensely bitter with a mighty hop flavor and aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,62,1
+metropolitan_brewing-dynamo_copper_lager,0,0,244882800641,"{""name"":""Dynamo Copper Lager"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""metropolitan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""If malt and hops are the two poles of brewing, this beer is the gently spinning sweet spot between them. First, you’ll notice the spicy aromas of Perle and Hallertau hops. Then - wipe the foam off the tip of your nose - dive into the toasty flavors of Vienna and Munich malts. Dynamo starts strong and finishes crisp and smooth. The balanced flavors, aromas, and even the coppery-red tones of this beer go great with everything. Fear no pairing. The best time to enjoy Dynamo is when you’re thirsty.\r\n\r\nDynamo Copper Lager goes great with pizza, neighborhood block parties, spring rolls, first dates, football games, whiskey, tapas, the Sunday newspaper, late-night burritos, veggie omelets, business lunches, grilled mushrooms, pretzels, political debate, corn-on-the-cob, classic sci-fi flicks, mixed greens, campfires, salmon, billiards, cherry pie, rock shows, pumpernickel, salsa, grand openings, peanuts, sewing bees, extra sharp cheddar cheese, and holidays.""}",1,63,1
+great_dane_pub_and_brewing_2,0,0,244747141120,"{""name"":""Great Dane Pub and Brewing #2"",""city"":""Fitchburg"",""state"":""Wisconsin"",""code"":""53711"",""country"":""United States"",""phone"":""1-608-442-9000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2980 Cahill Main""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0177,""lon"":-89.4232}}",1,32,1
+fox_river_brewing_1-golden_ale,0,0,244616790017,"{""name"":""Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,24,1
+duclaw-snake_oil,0,0,244617052162,"{""name"":""Snake Oil"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duclaw"",""updated"":""2010-07-22 20:00:20"",""description"":""Just like the miracle cure-alls of old, Professor Wagner’s Imperial Pilsner possesses no verifiable medicinal qualities whatsoever. And yet, taken internally, this golden elixir is guaranteed to cure what ails you. Snake Oil is a crisp, Medium-bodied lager with a complex maltiness and heavy hop presence – well-rounded and refreshing.""}",1,25,1
+the_church_brew_works-church_brew_oktoberfest,0,0,245123514370,"{""name"":""Church Brew Oktoberfest"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Oktoberfest is a light amber colored beer.  It is malty in both flavor and aroma making it a delicate beer which is very drinkable. The hop bitterness is kept low to accentuate the maltiness.  Notice the crisp clean character and enjoy.  We brewed three batches of this beer so that we can bottle some of it in order to enhance our bottle beer selection."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,61,1
+aberdeen_brewing,0,0,244364673024,"{""name"":""Aberdeen Brewing"",""city"":""Valparaiso"",""state"":""Indiana"",""code"":"""",""country"":""United States"",""phone"":""(219) 548-3300"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""210 Aberdeen Dr.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.4392,""lon"":-87.1078}}",1,21,1
+caldera_brewing-pilot_rock_porter,0,0,244484866049,"{""name"":""Pilot Rock Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth, creamy, chocolate laden porter."",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+martini_brauerei-kasseler_premium_pils,0,0,244878540801,"{""name"":""Kasseler Premium Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""martini_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+big_rock_brewery-buzzard_breath_discontinued,0,0,244367818752,"{""name"":""Buzzard Breath (discontinued)"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+boston_beer_company-samuel_adams_summer_ale,0,0,244364541954,"{""name"":""Samuel Adams Summer Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""right and citrusy, brewed with mysterious grains of paradise.\r\nSamuel Adams® Summer Ale is an American wheat ale. This summer seasonal uses malted wheat as well as lemon zest and grains of paradise, a rare pepper from Africa first used as a brewing spice in the 13th Century to create a crisp and spicy flavor and body. The ale fermentation imparts a background tropical fruit note reminiscent of mangos and peaches. All of these come together to create a quenching, clean finishing beer perfect for those warm Summer days"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,20,1
+uehara_shuzou_co_ltd_echigo_beer_pub,0,0,245123907585,"{""name"":""Uehara Shuzou Co. Ltd. / Echigo Beer Pub"",""city"":"""",""state"":"""",""code"":"" 953-0076"",""country"":""Japan"",""phone"":""+81 0256-72-0640"",""website"":""http://www.echigo-beer.jp/"",""type"":""brewery"",""updated"":""2011-07-23 20:36:03"",""description"":"""",""address"":[""Niigata-ken Nishikanbara-gun""]}",1,62,1
+michigan_brewing-sunset_amber_lager,0,0,244882866176,"{""name"":""Sunset Amber Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing, crisp and clean amber colored lager. Made in a Vienna-style with distinct caramel malt flavor and aroma."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+greenshields_brewery_and_pub,0,0,244747141121,"{""name"":""Greenshields Brewery and Pub"",""city"":""Raleigh"",""state"":""North Carolina"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.7721,""lon"":-78.6386}}",1,32,1
+full_sail_brewing_1-old_boardhead_2006,0,0,244616790018,"{""name"":""Old Boardhead 2006"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+fifty_fifty_brewing_co-donner_party_porter,0,0,244617117696,"{""name"":""Donner Party Porter"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Sustenance to get you through those long, cold winters, the Donner Party Porter is another of FiftyFifty's flagship beers. Reminiscent of dark chocolate, espresso, and dark dried fruits with a long complex finish, this beer is good for one of those nights where you've dug yourself into a snow bank because the ski trip didn't go quite as planned. Deep brown with mahogany highlights, the hops and malt are very well balanced leaving one to contemplate the myriad of flavors as the beer warms. Moderate to slightly heavy, this beer is heaven in a glass."",""style"":""Porter"",""category"":""Irish Ale""}",1,25,1
+thirsty_dog_brewing-12_dogs_christmas_ale,0,0,245123579904,"{""name"":""12 Dogs Christmas Ale"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Spiced for the holidays with honey, cinnamon, ginger, nutmeg and Santa's secret recipe.""}",1,61,1
+abita_brewing_company,0,0,244364738560,"{""name"":""Abita Brewing Company"",""city"":""Abita Springs"",""state"":""Louisiana"",""code"":""70420"",""country"":""United States"",""phone"":""800-737-2311"",""website"":""http://www.abita.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Founded in 1986, the Abita Brewing Company is nestled in the piney woods 30 miles north of New Orleans. In its first year, the brewery produced 1,500 barrels of beer. We had no idea what we started. Customers loved our beer! By 1994, we outgrew the original site (now our 100 seat brew pub) and were forced to move up the road to a larger facility to keep up with demand. Today, we brew over 62,000 barrels of beer and 3,000 barrels of root beer, and we're still growing! But don't let our growth fool you. Our lagers and ales are still brewed in small batches, hand-crafted by a team of dedicated workers with only the highest ideals of quality. This pride, along with our brewing process, is what creates our great brews. Abita uses only the finest ingredients  British and American barley, German yeast, European and Washington State hops and the pure artesian water of Abita Springs. In Abita, we are blessed with the purest of water. Drawn from our deep wells, our pristine water is not altered in any way. Abita Beer has no preservatives, additives or stabilizers and is cold filtered. The result is beer that is the finest and freshest tasting as proven by our loyal customers and great chefs of the south who use Abita Beer in their recipes. We're proud of our brewery and the beers we make. Try Abita Beer today and taste a bit of the South!"",""address"":[""PO Box 1510""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":30.5049,""lon"":-89.944}}",1,21,1
+cambridge_brewing-tall_tale_pale_ale,0,0,244484931584,"{""name"":""Tall Tale Pale Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cambridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Big and bold, our Pale Ale distinguishes itself by its huge, fresh hop aroma and flavor. A combination of Cascade and Centennial hops, both in the kettle and during an extensive dry-hopped conditioning time, gives this beer its nectarious flavor."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+michigan_brewing-sebewaing_beer,0,0,244878540802,"{""name"":""Sebewaing Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A commemorative brew styled after the Sebewaing Brewing Company's signature beer. The Sebewaing Brewing Company brewed from 1880 until 1965. This brew was commissioned for the town of Sebewaing's 150th anniversary celebration."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+brasserie_la_binchoise-reserve_speciale_speciale_noel,0,0,244485128192,"{""name"":""Reserve Speciale / Spéciale Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_binchoise"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+boulder_beer_company-hazed_infused_dry_hopped_ale,0,0,244364607488,"{""name"":""Hazed & Infused Dry-Hopped Ale"",""abv"":4.85,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,20,1
+upstream_brewing_company_at_legacy-espresso_stout,0,0,245123907586,"{""name"":""Espresso Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,62,1
+mickey_finn_s_brewery,0,0,244882866177,"{""name"":""Mickey Finn's Brewery"",""city"":""Libertyville"",""state"":""Illinois"",""code"":""60048"",""country"":""United States"",""phone"":""1-847-362-6688"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""412 North Milwaukee Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.2872,""lon"":-87.9538}}",1,63,1
+hair_of_the_dog_brewing-adam,0,0,244747206656,"{""name"":""Adam"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,32,1
+gatz_brauhaus,0,0,244616855552,"{""name"":""Gatz Brauhaus"",""city"":""Dsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.2249,""lon"":6.7757}}",1,24,1
+fitger_s_brewhouse_brewery_and_grill-xxx_english_ale,0,0,244617117697,"{""name"":""XXX English Ale"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+thunderhead_brewery,0,0,245123579905,"{""name"":""Thunderhead Brewery"",""city"":""Kearney"",""state"":""Nebraska"",""code"":""68847"",""country"":""United States"",""phone"":""1-308-237-1558"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""18 East 21st Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.6966,""lon"":-99.0815}}",1,61,1
+appalachian_brewing_company-rauchbock,0,0,244364738561,"{""name"":""Rauchbock"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This smoked bock is made with the finest smoked malt from Bamberg, Germany. The malts are kilned over aged beechwood chips which gives this deep copper ale a mellow smoky flavor.""}",1,21,1
+chimay_abbaye_notre_dame_de_scourmont-chimay_triple_chimay_white,0,0,244484931585,"{""name"":""Chimay Triple (Chimay White)"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chimay_abbaye_notre_dame_de_scourmont"",""updated"":""2010-07-22 20:00:20"",""description"":""Named Cinq Cents in 75 cl (25.4 fl.oz.) bottles, this beer with its typical golden colour, its slightly hazy appearance and its fine head is especially characterised by its aroma which results from an agreeable combination of fresh hops and yeast. \r\n\r\nThe beer's flavour, as sensed in the mouth, comes from the smell of hops: above all it is the fruity notes of muscat and raisins that give this beer a particularly attractive aroma. \r\n\r\nThe aroma complements the touch of bitterness. There is no acidity, but an after-bitterness which melts in the mouth.\r\n\r\nThis top fermented Trappist beer, refermented in the bottle, is not pasteurised."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,26,1
+microbrouwerij_achilles,0,0,244878606336,"{""name"":""Microbrouwerij Achilles"",""city"":""Itegem"",""state"":""Antwerpen"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dulft 9A""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1028,""lon"":4.7269}}",1,53,1
+brauhaus_sternen,0,0,244485193728,"{""name"":""Brauhaus Sternen"",""city"":""Frauenfeld"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-052-728-99-09"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hohenzornstrasse 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5585,""lon"":8.9006}}",1,27,1
+brasserie_du_bocq-blanche_de_namur,0,0,244364607489,"{""name"":""Blanche de Namur"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_du_bocq"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+upstream_brewing_old_market-india_pale_ale,0,0,245123973120,"{""name"":""India Pale Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""Our India Pale Ale is a full-bodied, golden-colored ale that is exceptionally refreshing. The “Double” refers to the beer’s huge hop character and malt base that give this beer its great complexity."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,62,1
+middle_ages_brewing-tenth_anniversery_ale,0,0,244882866178,"{""name"":""Tenth Anniversery Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the style of an American Double IPA in celebration of our 10th anniversary. This beer is golden in color, has medium to full body, intense hop bitterness, flavor and aroma. Ten additions of American hops are made throughout the brewing process."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,63,1
+hair_of_the_dog_brewing-blue_dot_double_india_pale_ale,0,0,244747206657,"{""name"":""Blue Dot Double India Pale Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,32,1
+goose_island_beer_company_clybourn-christmas_ale,0,0,244616921088,"{""name"":""Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+flyers_restraunt_and_brewery-first_flight_amber_ale,0,0,244617183232,"{""name"":""First Flight Amber Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our first beer brewed right here at Flyers.  This ale has brownish red hues with a mild maltiness balanced by an herbal hop character without being bitter."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,25,1
+timmermans-timmermans_lambicus_blanche,0,0,245123579906,"{""name"":""Timmermans lambicus Blanche"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+appleton_brewing-adler_brau_holiday_ale,0,0,244364738562,"{""name"":""Adler Bräu Holiday Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,21,1
+cigar_city_brewing-maduro_oatmeal_brown_ale,0,0,244484997120,"{""name"":""Maduro Oatmeal Brown Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cigar_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Maduro is a Northern English-style brown ale with some American affectations. It is unlike the typical American Brown Ale, as it doesn’t have the big hop character common in American-brewed Brown Ales. And Maduro is higher in alcohol than the common English brown ale. Maduro also has oats, in the malt bill which imparts a silky body and aids in making the roasted, toasted and chocolate components mesh together in Maduro's complex malt profile. The end result is a remarkably full flavored yet approachable and sessionable brown ale that pairs well with cigars."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+milwaukee_ale_house-downtown_lites_honey_ale,0,0,244878606337,"{""name"":""Downtown Lites Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,53,1
+brick_brewing-waterloo_dark,0,0,244485259264,"{""name"":""Waterloo Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brick_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+brasserie_fantme-speciale_noel,0,0,244482048000,"{""name"":""Speciale Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_fantme"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+van_honsebrouch,0,0,245123973121,"{""name"":""Van Honsebrouch"",""city"":""Ingelmunster"",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.9205,""lon"":3.2541}}",1,62,1
+midnight_sun_brewing_co-pluto_belgian_style_golden_strong_ale,0,0,244882931712,"{""name"":""Pluto - Belgian-style Golden Strong Ale"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""P9 = 9th [non-] planet from The [Midnight] Sun\r\n\r\nNamed after the ruler of the underworld, PLUTO was re-classified as a non-planet in AUG 2006. Here we celebrate our “Fallen Planet” by creating a Belgian-style Golden Strong Ale, aged in French oak Chardonnay barrels with Brettanomyces. Appropriately, the devil’s in the details. \r\n\r\nLOGISTICS LOG: \r\ndesigned to represent the \""Fallen Planet\"" with a Belgian beer style that includes beers traditionally named after the devil. primary fermentation and aging in stainless steel. phenomenal funk flavors realized with aging in oak barrels affected with Brettanomyces. bottle-conditioning achieved with secondary fermentation. devil-may-care data continues to develop.\r\n\r\nAvailability:\r\nAK - draft and 22-oz bottles (limited release begins 08/29/2008)"",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,63,1
+harvey_son_lewes-christmas_ale,0,0,244747272192,"{""name"":""Christmas Ale"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvey_son_lewes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+gordon_biersch_brewing-czech_lager,0,0,244616921089,"{""name"":""Czech Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+flying_dog_brewery-classic_pale_ale,0,0,244617248768,"{""name"":""Classic Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Doggie Style Pale Ale \r\nMeet the Alpha of the pack ... Flying Dog Classic Pale Ale is brilliant amber in color and dry hopped with buckets full of Cascades for an unrivaled hop flavor and aroma. This is a true representation of an American-style pale ale, using the finest ingredients. Flying Dog Classic Pale Ale is a multi-award winning product and is consistently ranked as one of the best pale ales in the U.S. This is what craft beer is all about."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+tooth_s,0,0,245123645440,"{""name"":""Tooth's"",""city"":""Sydney"",""state"":""New South Wales"",""code"":"""",""country"":""Australia"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-33.8671,""lon"":151.207}}",1,61,1
+ballast_point_brewing-dorado_double_ipa,0,0,244364804096,"{""name"":""Dorado Double IPA"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,21,1
+cooperstown_brewing_company-pride_of_milford_special_ale,0,0,244484997121,"{""name"":""Pride of Milford Special Ale"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooperstown_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Pride of Milford\"" is a very special ale with a tapestry of complex flavors and aromas. It is brewed with five malts and fermented with the Ringwood yeast at a higher temperature which gives this beer a uniqueness all its own. \""Pride\"" has a distinctive reddish copper color. It is strong and rich beer. When \""Pride\"" was first brewed in December 1999, many thought the flavor and aromas of this beer had fruit overtones. No fruit or adjunct flavoring is added to this beer. The unique flavor comes from our special brewing process.""}",1,26,1
+monte_carlo_casino_and_brewpub-jackpot_pale,0,0,244878606338,"{""name"":""Jackpot Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""monte_carlo_casino_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+broughton_ales,0,0,244485259265,"{""name"":""Broughton Ales"",""city"":""The Borders"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01899)-830345"",""website"":""http://www.broughtonales.co.uk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Broughton""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":55.6145,""lon"":-3.4107}}",1,27,1
+brasserie_la_choulette,0,0,244482113536,"{""name"":""Brasserie La Choulette"",""city"":""Hordain"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.27.35.72.44"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""16 rue des Ecoles""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.2601,""lon"":3.3125}}",1,20,1
+walldorff_brew_pub-state_street_oatmeal_stout,0,0,245752397824,"{""name"":""State Street Oatmeal Stout"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""walldorff_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark rich full-bodied stout with a dense creamy head.  Full of character and very satisfying."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,62,1
+mikkeller-simcoe_single_hop_ipa,0,0,244882931713,"{""name"":""Simcoe Single Hop IPA"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mikkeller"",""updated"":""2010-07-22 20:00:20"",""description"":""The first in a new series of single hop IPA's from Mikkeller. Brewed with Simcoe, known for many great US micro-brews. An extremely fresh-hopped IPA."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,63,1
+hoffbrau_steaks_brewery_2-red_lager,0,0,244747272193,"{""name"":""Red Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,32,1
+great_dane_pub_and_brewing_1-old_scratch_barleywine_1996,0,0,244743602176,"{""name"":""Old Scratch Barleywine 1996"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+founders_brewing-founders_pale_ale,0,0,244617248769,"{""name"":""Founders Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A testament to Cascade hops in a bottle. Our medium-bodied, Pale Ale has a distinctive floral hop aroma and refreshing citrus flavor. Founders Pale Ale has a slight malty sweetness with a balanced hop finish. A perfect beer to enjoy while mowing the lawn, boating, grilling with friends or just taking it easy."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+umpqua_brewing-summer_wheat,0,0,245123645441,"{""name"":""Summer Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""umpqua_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,61,1
+beck_s-beck_s,0,0,244364804097,"{""name"":""Beck´s"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beck_s"",""updated"":""2010-07-22 20:00:20"",""description"":""German Pilsner beer, with quite a bit of hops taste."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,21,1
+corner_pub-porter,0,0,244484997122,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""corner_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+moosejaw_pizza_dells_brewing_company-blonde_bock,0,0,244878671872,"{""name"":""Blonde Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,53,1
+cameron_s_brewing,0,0,244485259266,"{""name"":""Cameron's Brewing"",""city"":""Oakville"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-905-849-8282"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1165 Invicta Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.4745,""lon"":-79.6775}}",1,27,1
+brauerei_gasthof_zur_krone-kronenbier,0,0,244482179072,"{""name"":""Kronenbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gasthof_zur_krone"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+weyerbacher_brewing_company-unfiltered_double_simcoe_ipa,0,0,245752397825,"{""name"":""Unfiltered Double Simcoe IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""In 750ml corked ’n’ caged bottles this will be and unfiltered, fully bottle conditioned version of the super popular Double Simcoe. Expect Cask taste in a bottle, with more pronounced hoppy flavor and aroma due to being unfiltered. Also, carbonation will be a bit higher as is usual in our cork n cage series in keeping with tradition. It all comes together to form a uniquely great experience for hopheads."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,62,1
+milagro_brewery_and_grill-silver,0,0,244882997248,"{""name"":""Silver"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milagro_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+512_brewing_company-512_bruin,0,0,244365131776,"{""name"":""(512) Bruin"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""At once cuddly and ferocious, (512) BRUIN combines a smooth, rich maltiness and mahogany color with a solid hop backbone and stealthy 7.6% alcohol. Made with Organic 2 Row and Munich malts, plus Chocolate and Crystal malts, domestic hops, and a touch of molasses, this brew has notes of raisins, dark sugars, and cocoa, and pairs perfectly with food and the crisp fall air."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,22,1
+hopworks_urban_brewery-survival_stout,0,0,244747272194,"{""name"":""Survival Stout"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Beer of the Ancients! Barley (Egyptian), Wheat (Mesopotamian), Oats (Egyptian), Amaranth (Aztec), Quinoa (Incan), Spelt (Mesopotamian), and Kamut (Egyptian) sustain the soul with a nutrients cultivated through the millennia. Finished with 15 pounds of cold-pressed Stumptown Hairbender espresso. Unlock the mystery entombed in darkness."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,32,1
+great_lakes_brewing-ohio_city_oatmeal_stout,0,0,244743667712,"{""name"":""Ohio City Oatmeal Stout"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth and creamy medium-bodied stout with soft malty notes and dry finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,24,1
+four_peaks_brewing-hefeweizen,0,0,244617248770,"{""name"":""Hefeweizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a Bavarian ale which uses 51% wheat malt in the recipe. Very low bitterness. It is unfiltered so the characteristic cloudiness is achieved. The haze comes from suspended yeast. Hefe-Weizen literally means \""yeast-wheat.\"" The aroma is reminiscent of cloves and banana and is put out by the yeast. While some of this aroma carries over to the flavor, the dominant flavor is the malty wheat. \r\n\r\nAlcohol content approximately 5.0% by volume (ALWAYS ON TAP!!)"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,25,1
+victory_brewing-hard_times_lager,0,0,245123645442,"{""name"":""Hard Times Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+bell_s_brewery_inc-hell_hath_no_fury_ale,0,0,244364804098,"{""name"":""Hell Hath No Fury Ale"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A brew that gives you either sympathy for the devil or the courage to face him. Goes especially well with your favorite lost my girl/truck/dog/trailer song."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,21,1
+court_avenue_brewing-pointer_brown_ale,0,0,244484997123,"{""name"":""Pointer Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""court_avenue_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+ninkasi_brewing,0,0,244878671873,"{""name"":""Ninkasi Brewing"",""city"":""Eugene"",""state"":""Oregon"",""code"":""97402"",""country"":""United States"",""phone"":""877-7-NINKASI"",""website"":""http://www.ninkasibrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""272 Van Buren St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.0569,""lon"":-123.11}}",1,53,1
+capital_city_brewing_company-irish_red_ale,0,0,244485259267,"{""name"":""Irish Red Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Just in time for St. Patrick’s day, this Irish style red ale definitely has a big malt profile.  This beer is the antithesis of our Amber Waves ale.  It has a low hop bitterness and aroma, this allows the caramel malt flavors to dominate.  It has a medium body, and is very easy going down."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,27,1
+brauerei_leibinger-edel_pils,0,0,244482179073,"{""name"":""Edel-Pils"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_leibinger"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+widmer_brothers_brewing-widmer_w_08,0,0,245752528896,"{""name"":""Widmer W'08"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""widmer_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Our Brewmasters' Release - The three different red, caramelized, and dark wheat malts give this beer an intense red color that runs as deep as the flavor. The toasted grain flavors blend perfectly with the subtle spiciness of the hops just as the entirety fades to a smooth quick finish. 2007 Great American Beer Festival Silver Medal Award Winner.\""\r\n-Widmer Brothers Brewing Company"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,62,1
+mogollon_brewing_company-wapiti_amber_ale,0,0,244882997249,"{""name"":""Wapiti Amber Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mogollon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our flagship ale.  The label for this beer is adorned with the majestic Wapiti (aka elk).  Wapiti are abundant in northern Arizona.  They are large and beautiful creatures, which is why we chose this animal to represent this beer.  Wapiti Amber Ale is hand crafted with mountain pure water, two row malted barley, yeast and Yakima Valley hops.  Our brewers use traditional methods to create this full-bodied amber ale with a distinct hoppy aroma.  Wapiti Amber Ale should be enjoyed cool, not cold, to best experience the complex character and flowery aroma.  Serve at 43-47 deg F."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,63,1
+abita_brewing_company-abita_jockamo_ipa,0,0,244365197312,"{""name"":""Abita Jockamo IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,22,1
+humboldt_brewing,0,0,244747337728,"{""name"":""Humboldt Brewing"",""city"":""Arcata"",""state"":""California"",""code"":""95521"",""country"":""United States"",""phone"":""1-707-826-2739"",""website"":""http://www.humboldtbrews.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""856 10th Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.87,""lon"":-124.087}}",1,32,1
+greenshields_brewery_and_pub-amber,0,0,244743667713,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greenshields_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,24,1
+fox_river_brewing_1-nut_brown_ale,0,0,244617314304,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,25,1
+warsteiner_brauerei-warsteiner_premium_dunkel,0,0,245752397824,"{""name"":""Warsteiner Premium Dunkel"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""warsteiner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,61,1
+bellows_brew_crew-red,0,0,244364869632,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,21,1
+crabby_larry_s_brewpub_steak_crab_house-golden_treasure,0,0,244485062656,"{""name"":""Golden Treasure"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":""For those who enjoy a clean, crisp, refreshing beer this medium copper colored brew is perfect. With its low level of hop bitterness and slightly sweet flavor it is one of our lightest ales. We use the lightest grains with Kent Goldings and Liberty hops. This beer is an excellent choice for the not so brave."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,26,1
+north_country_brewery-amber_waves_of_grain,0,0,244878671874,"{""name"":""Amber Waves of Grain"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An amber-colored beer, lightly hopped, with a nice malty finish; go ahead, salute your brew."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,53,1
+carmel_brewing,0,0,244485324800,"{""name"":""Carmel Brewing"",""city"":""Salinas"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.6777,""lon"":-121.656}}",1,27,1
+brewdog_ltd-hardcore_ipa,0,0,244482244608,"{""name"":""Hardcore IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""This little bottle has a grandiloquent story to tell.\r\n\r\n2,204 malted Maris Otter grains gave all they had to offer the world to provide the robustly delicate toffee malt canvas for the ensuing epic.\r\n\r\n6 Hop Cones willingly sacrificed themselves in fiery cauldron that is our brew kettle to ensure your mouth is left feeling punished and puckering for more.\r\n\r\n9,900,000,000 yeast cells frantically fermented their little hearts out as the sugars were magically turned into alcohol in the dark depths of our fermentation tanks.\r\n\r\nThis explicit ale has more hops and bitterness that any other beer brewed in the UK. This is an extreme beer rollercoaster for freaks, gypsies and international chess superstars."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,20,1
+wild_river_brewing_and_pizza_cave_junction-dark,0,0,245752528897,"{""name"":""Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_river_brewing_and_pizza_cave_junction"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,62,1
+moylan_s_brewery_restaurant-imperial_stout,0,0,244883062784,"{""name"":""Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+aksarben_brewing_bop-heater,0,0,244365328384,"{""name"":""Heater"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aksarben_brewing_bop"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+lost_coast_brewery-indica_india_pale_ale,0,0,244869955584,"{""name"":""Indica India Pale Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,32,1
+half_moon_bay_brewing-pillar_point_pale_ale,0,0,244743733248,"{""name"":""Pillar Point Pale Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,24,1
+freeminer_brewery-trafalgar_ipa,0,0,244617314305,"{""name"":""Trafalgar IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""freeminer_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,25,1
+big_buck_brewery-raspberry_wheat,0,0,244364869633,"{""name"":""Raspberry Wheat"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_buck_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An American wheat beer made with malted barley and malted wheat.  Lightly flavored with pure fruit to impart a subtle raspberry nose, a delicate fruit flavor and a slight pink hue."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,21,1
+crescent_city_brewhouse-pilsner,0,0,244485128192,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crescent_city_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+o_grady_s_brewery_and_pub_1-blacksmith_bitter_ale,0,0,244878671875,"{""name"":""Blacksmith Bitter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_grady_s_brewery_and_pub_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+carolina_brewery-stout,0,0,244485324801,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carolina_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,27,1
+brouwerij_de_smedt-affligem_tripel,0,0,244482244609,"{""name"":""Affligem Tripel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_smedt"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+new_glarus_brewing_company-fat_squirrel_nut_brown_ale,0,0,244883062785,"{""name"":""Fat Squirrel Nut Brown Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""One deceptively spring like winter day, Brewmaster Dan walked home from the brewery, sat down to dinner and said, \""Boy, there are some fat squirrels out there. They're running all over the place. I think I should brew a Fat Squirrel Nut Brown Ale.\"" Deb agreed and so another beer legend was born. \r\n\r\n100% Wisconsin malt of six different varieties impart the natural toasted color to this bottle conditioned unfiltered ale. Clean hazelnut notes result from these carefully chosen barley malts. Hops from Slovenia, Bavaria and the Pacific Northwest give Fat Squirrel its backbone. \r\n\r\nWhen the going gets tough, remember to relax a moment and enjoy the \""Fat Squirrel\"" in your neighborhood."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+alaskan_brewing-breakup_bock,0,0,244365328385,"{""name"":""Breakup Bock"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,22,1
+lwenbru_munich-premium_lager,0,0,244870021120,"{""name"":""Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lwenbru_munich"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+hanssens_artisanal-oude_gueuze,0,0,244743733249,"{""name"":""Oude Gueuze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hanssens_artisanal"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,24,1
+gaslight_brewery,0,0,244617314306,"{""name"":""Gaslight Brewery"",""city"":""South Orange"",""state"":""New Jersey"",""code"":""7079"",""country"":""United States"",""phone"":""1-973-762-7077"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""15 South Orange Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.7465,""lon"":-74.2594}}",1,25,1
+big_time_brewing,0,0,244364935168,"{""name"":""Big Time Brewing"",""city"":""Seattle"",""state"":""Washington"",""code"":""98105"",""country"":""United States"",""phone"":""1-206-545-4509"",""website"":""http://www.bigtimebrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Big Time's brewery is a 14 barrel JV Northwest system consisting of a gas fired brew kettle, an infusion mash tun with mixer, a hot liquor back, a wort cooler, (5) 14 barrel fermenters, a diatomaceous earth filter, a bright beer tank, and (12) 7 bbl serving tanks.  We sell most of our beer at the pub but do wholesale a limited number of kegs to a few Seattle area taverns. We currently brew approximately 1,500 barrels of beer per year"",""address"":[""4133 University Way NE""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6576,""lon"":-122.313}}",1,21,1
+dark_horse_brewing_co-double_crooked_tree_i_p_a,0,0,244485128193,"{""name"":""Double Crooked Tree I.P.A."",""abv"":13.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From their website:\r\n\""Have you read the description for the regular Crooked Tree yet? Well this beer is almost the same just double. We actually took the Crooked Tree recipe and doubled all of the ingredients except the water, just the way a DOUBLE should be made. Big hops balanced with tons of malt give this beer a huge body. Although this beer is as cool as \""the Fonz\""  when first purchased, it gets really mellow and smooth with some age. After a year or two stored in a cool dark place you'll notice the heavy caramel and malt flavors are trying to sneak past the hops, they’re just not fast enough. This beer is hugely delicious so it will need your undivided attention (the chores can wait....trust us).\"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,26,1
+portland_brewing-zig_zag_lager,0,0,245002731520,"{""name"":""Zig Zag Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""portland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+cervejaria_de_macau,0,0,244485390336,"{""name"":""Cervejaria de Macau"",""city"":""Macao"",""state"":"""",""code"":"""",""country"":""Macao"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Unit 1-B, Blk. A, Edf. Ind. Fei Tong""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":19.7219,""lon"":-101.225}}",1,27,1
+brouwerij_sterkens-poorter,0,0,244482310144,"{""name"":""Poorter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+new_glarus_brewing_company-zwickel,0,0,244883128320,"{""name"":""Zwickel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+alesmith_brewing-x_extra_pale_ale,0,0,244365328386,"{""name"":""X Extra Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+magic_hat-hocus_pocus,0,0,244870021121,"{""name"":""Hocus Pocus"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Our take on a classic summer ale.  A toast to weeds, rays, and summer haze.  A light, crisp ale for mowing lawns, hitting lazy fly balls, and communing with nature, Hocus Pocus is offered up as a summer sacrifice to clodless days.\r\n\r\nIts malty sweetness finishes tart and crisp and is best apprediated with a wedge of orange."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,32,1
+harvest_moon_brewery_cafe,0,0,244743733250,"{""name"":""Harvest Moon Brewery / Cafe"",""city"":""New Brunswick"",""state"":""New Jersey"",""code"":""8901"",""country"":""United States"",""phone"":""1-732-249-6666"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""392 George Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.4962,""lon"":-74.4441}}",1,24,1
+golden_valley_brewery_and_pub-tannen_bomb,0,0,244617314307,"{""name"":""Tannen Bomb"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_valley_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+bj_s_restaurant_and_brewery-tatonka_stout,0,0,244364935169,"{""name"":""Tatonka Stout"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,21,1
+dark_horse_brewing_co-too_cream_stout,0,0,244617379840,"{""name"":""Too Cream Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is made with milk sugar (lactose) which gives this beer a nice creamy mouth feel which mingles with hints of chocolate and roasty flavors."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,26,1
+privat_brauerei_schmucker_ober_mossau_kg,0,0,245002731521,"{""name"":""Privat-Brauerei Schmucker Ober-Mossau KG"",""city"":""Mossautal"",""state"":""Hessen"",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.6747,""lon"":8.925}}",1,53,1
+coopers_brewery-coopers_premium_light,0,0,244485390337,"{""name"":""Coopers Premium Light"",""abv"":2.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Coopers Premium Light is brewed using malted barley and no sugar.  Coopers has used traditional lager brewing techniques to produce a full-flavoured light beer.  The light has a fresh aroma with clean floral hop notes, excellent head and colour presentation."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,27,1
+brouwerij_van_steenberge-steenbrugge_tripel_blond,0,0,244482310145,"{""name"":""Steenbrugge Tripel Blond"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+new_holland_brewing_company-cabin_fever,0,0,244883193856,"{""name"":""Cabin Fever"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Robust in character yet smooth in delivery, Cabin Fever is a roasty brown ale and a hearty, comforting companion for long, mind-bending winters. Its rye, roast and raisin notes play off a subtle caramel sweetness and culminate in a dry finish. Excellent with roasts, stews, caramelized onions and snowfall."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+america_s_brewing-honey_wheat_ale,0,0,244365393920,"{""name"":""Honey Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,22,1
+marine_pub_brewhouse,0,0,244870021122,"{""name"":""Marine Pub & Brewhouse"",""city"":""Burnaby"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-435-2245"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5820 Marine Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.2055,""lon"":-122.978}}",1,32,1
+heavenly_daze_brewery_and_grill-derailer_esb,0,0,244743733251,"{""name"":""Derailer ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+gottberg_brew_pub-stuvenbrau_maibock,0,0,244617379840,"{""name"":""Stüvenbräu Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,25,1
+blue_cat_brew_pub-arkham_stout,0,0,244364935170,"{""name"":""Arkham Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_cat_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+de_struise_brouwers,0,0,244617445376,"{""name"":""De Struise Brouwers"",""city"":""Woesten"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":""http://www.struisebrouwers.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Woesten""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.9229,""lon"":2.7518}}",1,26,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-imperial_hefeweizen,0,0,245002797056,"{""name"":""Imperial Hefeweizen"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+coors_brewing_golden_brewery-coors_original,0,0,244485390338,"{""name"":""Coors Original"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Coors beer, first introduced by Adolph Coors in April, 1874, is brewed in the Rockies for a uniquely crisp, clean and drinkable \""Mile High Taste.\""\r\n\r\nDuring World War II, Coors aided the war effort by setting aside half its beer for sale to the military.  When the service men and women returned home to states outside of Coors' original 11-state marketing region, they spread the word about the beer's taste and quality -- which became known as the \""Coors Mystique.\""\r\n\r\nPrior to its national expansion in the 1980s, Coors' limited distribution left consumers in the eastern U.S. wanting a taste of the Rocky Mountains' finest beer. President Gerald Ford was known to take several cases of Coors on his Air Force One during return trips to the White House.\r\n\r\nIn September 1893, Coors competed for the first time at the Chicago World's Fair and won awards for brilliancy, flavor, chemical analysis and commercial flavor.  The award-winning legacy of the brew continues and in recent years Coors beer has won a number of honors at beer festivals."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,27,1
+burgerbrau_wolnzach,0,0,244482310146,"{""name"":""Bürgerbräu Wolnzach"",""city"":""Wolnzach"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8442-/-955514"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Am Brunnen 2""]}",1,20,1
+new_jersey_beer_company,0,0,244883193857,"{""name"":""New Jersey Beer Company"",""city"":""North Bergen"",""state"":""NJ"",""code"":""07047"",""country"":""United States"",""phone"":"""",""website"":""http://www.njbeerco.com"",""type"":""brewery"",""updated"":""2010-11-17 14:11:59"",""description"":""New Jersey Beer Co. is dedicated to crafting quality beer for all; from the occasional beer drinker to the beer aficionado. We believe that good products come from good people, and strive to do our very best for our community and our customers. We believe we can provide happiness through doing what we love, and that a good beer can make the good times great."",""address"":[""4201 Tonnelle Avenue""]}",1,63,1
+anheuser_busch,0,0,244365393921,"{""name"":""Anheuser-Busch"",""city"":""Saint Louis"",""state"":""Missouri"",""code"":""63118"",""country"":""United States"",""phone"":""1-800-342-5283"",""website"":""http://www.anheuser-busch.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Anheuser-Busch operates 12 breweries in the United States, 14 in China and one in the United Kingdom. Anheuser-Busch's operations and resources are focused on adding to life's enjoyment not only through the responsible consumption of beer by adults, but through theme park entertainment and packaging.  In the United States, the company holds a 48.5 percent share of U.S. beer sales. Worldwide, Anheuser-Busch's beer sales volume was 128.4 million barrels in 2007.  The St. Louis-based company's subsidiaries include one of the largest U.S. manufacturers of aluminum beverage containers and one of the world's largest recyclers of aluminum beverage cans. Anheuser-Busch also has interests in malt production, rice milling, real estate development, turf farming, metalized and paper label printing, bottle production and transportation services."",""address"":[""One Busch Place""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.5983,""lon"":-90.209}}",1,22,1
+maritime_pacific_brewing-yo_ho_ho_christmas_ale_2001,0,0,244870021123,"{""name"":""Yo Ho Ho Christmas Ale 2001"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+heller_bru_trum-schlenkerla_helles_lagerbier,0,0,244743798784,"{""name"":""Schlenkerla Helles Lagerbier"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heller_bru_trum"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+great_bear_brewing,0,0,244744126464,"{""name"":""Great Bear Brewing"",""city"":""Wasilla"",""state"":""Alaska"",""code"":""99654"",""country"":""United States"",""phone"":""1-907-373-4782"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""238 North Boundary Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":61.5816,""lon"":-149.439}}",1,25,1
+boon_rawd_brewery-singha_gold,0,0,244365000704,"{""name"":""Singha Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boon_rawd_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+512_brewing_company-512_pale,0,0,244365656064,"{""name"":""(512) Pale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""With Organic 2-row malted barley, (512) Pale is a copper colored American Pale Ale that balances earthy hop bitterness and hop flavor with a rich malty body."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+delafield_brewhaus-hopfenteufel_alt_bier,0,0,244617445377,"{""name"":""Hopfenteufel Alt Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+raccoon_lodge_and_brewpub_cascade_brewing-cascade_apricot_ale,0,0,245002797057,"{""name"":""Cascade Apricot Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Features the intense aroma of fresh-picked, slow ripened Northwest apricots warmed by the summer sun. Based on a Belgian Tripel, this beer went through 16 months lactic fermentation and aging in French oak wine barrels."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,53,1
+crane_river_brewpub_and_cafe-weizen,0,0,244485455872,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+central_waters_brewing_company-satin_solstice_imperial_stout,0,0,244482375680,"{""name"":""Satin Solstice Imperial Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This smooth, creamy stout and a crackling fireplace are the perfect answer to a wintery evening in Wisconsin. The rich coffee flavor compliments the \""warm, fuzzy feeling\"" you get from the abundant alcohol. Enjoy in moderation."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,20,1
+nicolet_brewing-winter_fest_beer,0,0,244883259392,"{""name"":""Winter Fest Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nicolet_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,63,1
+appleton_brewing-adler_brau_cherry_creek_cherry_flavored_lager,0,0,244365459456,"{""name"":""Adler Bräu Cherry Creek Cherry Flavored Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+mercury_brewing_company-ipswich_dark_ale,0,0,244870086656,"{""name"":""Ipswich Dark Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich in color and bold in taste, our U.S. style Brown Ale combines roasted malt with two additions of specialty selected hops to produce a well-balanced ale with a satisfying finish."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,32,1
+high_point_wheat_beer_company-ramstein_winter_wheat,0,0,244743798785,"{""name"":""Ramstein Winter Wheat"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_point_wheat_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Also referred to as a Doppelbock, this is the strongest beer made by High Point. Rich creamy head with bouquet of wheat malt, black current, clove, and apple. Deep full flavors of caramel and chocolate malt balance with hops for a smooth warming character. The finish is smooth and malty leading to a subtle alcohol and dark caramel finish. The wonderful balance of this beer provides a complex profile that hides the 9.5% alcohol content. The perfect companion for a cold winter night."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,24,1
+great_divide_brewing-great_divide_dunkel_weiss,0,0,244744192000,"{""name"":""Great Divide Dunkel Weiss"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Think of it as a hefeweizen’s older brother. A hearty mix of wheat and dark German barley malts gives it a medium body and muddy brown hue, while our proprietary yeast strain provides the signature notes of banana and clove. If you like wheat beers, come to the Dunkel side. You won’t be disappointed. Just don’t put any lemon in it.""}",1,25,1
+boon_rawd_brewery,0,0,244365000705,"{""name"":""Boon Rawd Brewery"",""city"":""Bangkok"",""state"":"""",""code"":"""",""country"":""Thailand"",""phone"":""66-(662)-669-2050"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""999 Samsen Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":13.7783,""lon"":100.509}}",1,21,1
+abita_brewing_company-abita_amber,0,0,244365721600,"{""name"":""Abita Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:46:53"",""description"":""Abita Amber is a Munich style lager. It has a smooth, malty, slightly caramel flavor and a rich amber color."",""style"":""Vienna-Style Lager"",""category"":""German Lager""}",1,23,1
+delafield_brewhaus-pewaukee_porter,0,0,244617445378,"{""name"":""Pewaukee Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+raccoon_lodge_and_brewpub_cascade_brewing,0,0,245002862592,"{""name"":""Raccoon Lodge and Brewpub / Cascade Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":""97225"",""country"":""United States"",""phone"":""(503) 296-0110"",""website"":""http://www.raclodge.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7424 SW Beaverton-Hillsdale Hwy""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.4856,""lon"":-122.754}}",1,53,1
+denver_chophouse_and_brewery-oatmeal_stout,0,0,244617904128,"{""name"":""Oatmeal Stout"",""abv"":6.54,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,27,1
+cerveceria_bucanero-fuerte,0,0,244482375681,"{""name"":""Fuerte"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cerveceria_bucanero"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+north_coast_brewing_company-old_stock_ale_2007,0,0,244883259393,"{""name"":""Old Stock Ale 2007"",""abv"":11.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,63,1
+appleton_brewing-adler_brau_weiss,0,0,244365459457,"{""name"":""Adler Bräu Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,22,1
+midnight_sun_brewing_co-cosmic_black_witbier,0,0,244870086657,"{""name"":""Cosmic Black Witbier"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Close your eyes. The delicate aroma, flavor, texture of this beer whisper “witbier”. Now open your eyes. The color is deceiving. You take another sip. Yes, witbier … but black as night. It is something quite peculiar—BuT it is brilliant—something shimmering and [not so] white."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,32,1
+highland_brewing_company-cattail_peak,0,0,244743864320,"{""name"":""Cattail Peak"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""An invigorating wheat beer with 100% organic grains, a hint of rye and the tang and hue of organic hibiscus, this refreshing brew is as cool as the breeze that blows down from Mount Mitchell to Cattail Peak. Enjoy this delicious creation when the hottest summer day demands the best of the Blue Ridge."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,24,1
+green_mill_brewing_saint_paul-big_island_porter,0,0,244744192001,"{""name"":""Big Island Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mill_brewing_saint_paul"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,25,1
+boulder_beer_company-killer_penguin,0,0,244365000706,"{""name"":""Killer Penguin"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,21,1
+aksarben_brewing_bop-brout,0,0,244365721601,"{""name"":""Brout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aksarben_brewing_bop"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+dockside_brewing-johnston_pilsener,0,0,244617510912,"{""name"":""Johnston Pilsener"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dockside_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+ridgeway_brewing-warm_welcome_nut_browned_ale,0,0,245002862593,"{""name"":""Warm Welcome Nut Browned Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,53,1
+deschutes_brewery-cinder_cone_red,0,0,244617969664,"{""name"":""Cinder Cone Red"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Cinder Cone Red's diverse selection of hops and barley captivates thirsty palates with its toffee-like flavor, intense citrus aroma and defined bitterness.\r\n\r\nLocated on the northern slope of Mt. Bachelor, the Cinder Cone was also known as \""Red Hill\"" due to its reddish color that is revealed as the seasons change, the weather warms and the snow melts.  It's spring. Time to get outside."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,27,1
+cervejaria_kaiser_brasil-xingu,0,0,244482375682,"{""name"":""Xingu"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_kaiser_brasil"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,20,1
+oak_creek_brewery-oak_creek_micro_light,0,0,244883259394,"{""name"":""Oak Creek Micro Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,63,1
+barley_s_casino_brewing_company,0,0,244365524992,"{""name"":""Barley's Casino & Brewing Company"",""city"":""Henderson"",""state"":""Nevada"",""code"":""89014"",""country"":""United States"",""phone"":""1-702-458-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4500 East Sunset Road #30""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.0721,""lon"":-115.075}}",1,22,1
+minocqua_brewing_company-pale_ale,0,0,244870152192,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""An amber-colored ale with a pronounced floral aroma and a flavor contributed by Cascade hops. Hop lovers will savor this bold version of an American classic."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,32,1
+hook_ladder_brewing_company-hook_ladder_golden_ale,0,0,244743864321,"{""name"":""Hook & Ladder Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_ladder_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A crisp, clean American Ale. Perfect for extinguishing your fiery thirst or when you crave an ice-cold beer. A great step up in flavor from the macro-produced American and imported beers."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,24,1
+green_mill_brewing_saint_paul-grand_marais_pale_ale,0,0,244744192002,"{""name"":""Grand Marais Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mill_brewing_saint_paul"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+brasserie_brouwerij_cantillon,0,0,244365066240,"{""name"":""Brasserie-Brouwerij Cantillon"",""city"":""Anderlecht"",""state"":""Brussel"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)2-521-49-28"",""website"":""http://www.cantillon.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Gheudestraat 56""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.8416,""lon"":4.3355}}",1,21,1
+allentown_brew_works-steelgaarden_wit,0,0,244365787136,"{""name"":""Steelgaarden Wit"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Unfiltered Belgian Style beer is brewed with special yeast that lends a unique refreshing flavor to the beer. Brewed with Chamomile, Curacao Orange peel and Coriander to create a smooth citrus finish. Usually enjoyed with a slice of lemon."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,23,1
+dogfish_head_craft_brewery-burton_baton,0,0,244617510913,"{""name"":""Burton Baton"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+route_66_brewery-imperial_pale_ale,0,0,245002862594,"{""name"":""Imperial Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,53,1
+endehouse_brewery_and_restaurant-dunkelweiss,0,0,244617969665,"{""name"":""Dunkelweiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""endehouse_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+chama_river_brewing,0,0,244482441216,"{""name"":""Chama River Brewing"",""city"":""Albuquerque"",""state"":""New Mexico"",""code"":""87109"",""country"":""United States"",""phone"":""1-505-342-1800"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4939 Pan American Freeway NE""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.14,""lon"":-106.6}}",1,20,1
+oasis_brewery_annex,0,0,244883324928,"{""name"":""Oasis Brewery Annex"",""city"":""Boulder"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.015,""lon"":-105.271}}",1,63,1
+big_river_brewing-extra_special_bitter,0,0,244365524993,"{""name"":""Extra Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+minocqua_brewing_company-red_ale,0,0,244870217728,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Deserving of its name, this red/amber colored ale is sure to knock you off your feet. Crystal and caramel malts contribute to a balance of sweetness and smoothness."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,32,1
+hook_norton_brewery-old_hooky,0,0,244743864322,"{""name"":""Old Hooky"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_norton_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+gulpener_bierbrouwerij-dort,0,0,244744257536,"{""name"":""Dort"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gulpener_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,25,1
+brasserie_d_ecaussinnes-ultrabrune,0,0,244365066241,"{""name"":""Ultrabrune"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_ecaussinnes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+amstel_brouwerij,0,0,244365787137,"{""name"":""Amstel Brouwerij"",""city"":""Amsterdam"",""state"":"""",""code"":"""",""country"":""Netherlands"",""phone"":""800-022-9885"",""website"":""http://www.amstel.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Antwoordnummer 7181""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.3738,""lon"":4.8909}}",1,23,1
+eddie_mcstiff_s_brewpub-chestnut_brown_ale,0,0,244617576448,"{""name"":""Chestnut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eddie_mcstiff_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+rush_river_brewing,0,0,245002928128,"{""name"":""Rush River Brewing"",""city"":""River Falls"",""state"":""Wisconsin"",""code"":""54022"",""country"":""United States"",""phone"":""1-715-426-2054"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""990 Antler Court""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.8902,""lon"":-92.6378}}",1,53,1
+f_x_matt_brewing-saranac_lager,0,0,244618035200,"{""name"":""Saranac Lager"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A simple well-made Classic American Lager brewed with only choice ingredients. It is extremely mellow refreshingly smooth, glass after glass."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+chicago_brewing,0,0,244482441217,"{""name"":""Chicago Brewing"",""city"":""Las Vegas"",""state"":""Nevada"",""code"":""89117"",""country"":""United States"",""phone"":""1-702-254-3333"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2201 South Fort Apache Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.1476,""lon"":-115.298}}",1,20,1
+orlando_brewing,0,0,244883324929,"{""name"":""Orlando Brewing"",""city"":""Orlando"",""state"":""Florida"",""code"":""32806"",""country"":""United States"",""phone"":""(407) 872-1117"",""website"":""http://www.orlandobrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""They have a wide variety of beers made on premises, with more than a dozen on tap. Bar is is in an industrial area and is kinda bare, but it's got good beer, and good people, and that's what counts. Try the 'Monk-in-the-trunk' stay the hell away from the Winter Park beer.  Bottles, and kegs available as well."",""address"":[""1301 Atlanta Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":28.5265,""lon"":-81.3827}}",1,63,1
+bj_s_restaurant_and_brewery-jeremiah_red,0,0,244365524994,"{""name"":""Jeremiah Red"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,22,1
+mohrenbrauerei_august_huber-spezial,0,0,244870217729,"{""name"":""Spezial"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mohrenbrauerei_august_huber"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+hops_haven_brew_haus-triple_h,0,0,244743929856,"{""name"":""Triple \""H\"""",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_haven_brew_haus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,24,1
+hacker_pschorr_bru,0,0,244744257537,"{""name"":""Hacker-Pschorr Bru"",""city"":""Mnchen"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":48.1391,""lon"":11.5802}}",1,25,1
+brasserie_de_brunehaut-abbaye_de_saint_martin_brune,0,0,244365066242,"{""name"":""Abbaye de Saint-Martin Brune"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""Abbaye Saint-Martin Brune was named World's Best Abbey (Dark) Beer @ the 2009 World Beer Awards (London). Aroma of caramel and liquorice.  Less sweet than most traditional Dark Abbey Ales. Many people prefer this double at room temperature. It is especially popular when paired with dessert.\r\nAbbye St. Martin Ales are pure Belgium."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,21,1
+atlanta_brewing_company-red_brick_double_chocolate_oatmeal_porter,0,0,244365852672,"{""name"":""Red Brick Double Chocolate Oatmeal Porter"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atlanta_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust porter brewed with lots of chocolate malt and roasted barley. This gives the beer its nearly black color and coffee and dark chocolate flavors. These flavors are then tempered with the use of flaked oats which provide an almost creamy texture to the beer. The 7.7% abv is deceptive but is not completely unnoticed."",""style"":""Porter"",""category"":""Irish Ale""}",1,23,1
+egan_brewing-cinco_de_mayo_cerveza_jalapeno,0,0,244617576449,"{""name"":""Cinco de Mayo Cerveza Jalapeño"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+s_a_damm-estrella_levante_especial,0,0,245002928129,"{""name"":""Estrella Levante Especial"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""s_a_damm"",""updated"":""2011-07-14 08:53:33"",""description"":"""",""style"":""Baltic-Style Porter"",""category"":""Other Lager""}",1,53,1
+faultline_brewing_1-pilsner,0,0,244618035201,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+cooper_s_cave_ale_company-pathfinder_s_porter,0,0,244482441218,"{""name"":""Pathfinder's Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooper_s_cave_ale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Pathfinder's Porter is a robust, dark and hoppy ale originally brewed for street urchins of London. Our version does the job for the Glens Falls urchins of today."",""style"":""Porter"",""category"":""Irish Ale""}",1,20,1
+oskar_blues_grill_and_brew-dale_s_pale_ale,0,0,244883324930,"{""name"":""Dale's Pale Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Dale's Pale Ale is our flagship beer and America's first hand-canned craft beer. It's an assertive but deftly balanced beer (somewhere between an American pale ale and an India Pale Ale) brewed with hefty amounts of European malts and American hops.\r\n\r\nIt features a merengue-like head, a copper color, and a hoppy nose, thanks to a big post-boil addition of Centennial hops. To complement its hoppy first impression, Dale's also sports a rich middle of malts and hops, and a bracing finish. Dale's is 6.5% alcohol by volume, and features 65 International Bittering Units.\r\n\r\nWe think of it as the perfect, everyday beer for hopheads like us. Dale's Pale Ale's rich flavor has helped us make many new fans, and its numerous honors have helped us kick huge holes in the misconceptions regarding cans."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,63,1
+boston_beer_company-samuel_adams_old_fezziwig_ale,0,0,244365590528,"{""name"":""Samuel Adams Old Fezziwig Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Spicy and Bold, a big Christmas cookie of a beer.\r\nSamuel Adams® Old Fezziwig® Ale is the Christmas cookie of beer. Bursting with spices of the season and a remarkably full body, it helps those long winter nights pass much quicker. The full body hits the palate first with a depth of malt character ranging from sweeter toffee and caramel notes to the more dark, roasty chocolate notes. Then come the spices in full force. Cinnamon, ginger and orange peel dance on the tongue bringing with them the celebratory spirit that goes hand in hand with the season.""}",1,22,1
+moosejaw_pizza_dells_brewing_company-light_ale,0,0,244870217730,"{""name"":""Light Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+ithaca_beer_company-partly_sunny,0,0,244743929857,"{""name"":""Partly Sunny"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Partly Sunny is hazy-straw colored wheat beer with coriander, and generous amounts of lemon zest. It's a light refreshing beer with a subtle spicy start and a smooth citrus finish."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,24,1
+half_moon_bay_brewing,0,0,244744257538,"{""name"":""Half Moon Bay Brewing"",""city"":""Princeton by the Sea"",""state"":""California"",""code"":""94019"",""country"":""United States"",""phone"":""1-650-728-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""390 Capistrano Road""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.4903,""lon"":-122.435}}",1,25,1
+brasserie_de_l_abbaye_val_dieu-grand_cru,0,0,244365131776,"{""name"":""Grand Cru"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_val_dieu"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+atwater_block_brewing-hell,0,0,244365852673,"{""name"":""Hell"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Atwater Block beers are brewed using traditional German methods to create a distinctly fresh and flavorful character. Our classic Helles (German for Pale) is a crisp lager that is sure to please."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,23,1
+einbecker_brauhaus_ag-ur_bock_hell,0,0,244617576450,"{""name"":""Ur-Bock Hell"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""einbecker_brauhaus_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,26,1
+saint_louis_brewery_schlafy_tap_room-schlafly_esb,0,0,245002928130,"{""name"":""Schlafly ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+512_brewing_company-512_whiskey_barrel_aged_double_pecan_porter,0,0,244375617536,"{""name"":""(512) Whiskey Barrel Aged Double Pecan Porter"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our first barrel project is in kegs and on it’s way to beer bars around Austin. This is a bigger, bolder version of our mainstay Pecan Porter, with a richer finish. Two months on recently emptied Jack Daniels select barrels imparted a wonderful vanilla character from the oak and a pleasant amount of whiskey nose and flavor. All in all, I’m really proud of the hard work and effort put into this beer. Our first attempt at brewing it and our first attempt at managing barrels has paid off for everyone! Seek out this beer, but don’t put it off. There is a very limited number of kegs available and it might go fast…"",""style"":""Porter"",""category"":""Irish Ale""}",1,46,1
+firehouse_brewery_restaurant,0,0,244618100736,"{""name"":""Firehouse Brewery & Restaurant"",""city"":""Red Oak"",""state"":""Iowa"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.0117,""lon"":-95.2272}}",1,27,1
+coors_brewing_golden_brewery-rising_moon_spring_ale,0,0,244482506752,"{""name"":""Rising Moon Spring Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed only in spring. Has a crisp taste, thanks to the kieffer lime leaves and lime added in. Has a light amber color and absolutely delicious!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,20,1
+pelican_pub_brewery,0,0,245006401536,"{""name"":""Pelican Pub & Brewery"",""city"":""Pacific City"",""state"":""Oregon"",""code"":""97135"",""country"":""United States"",""phone"":""1-503-965-7007"",""website"":""http://www.pelicanbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""33180 Cape Kiwanda Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.2152,""lon"":-123.97}}",1,63,1
+brasserie_brouwerij_cantillon-kriek_lambic,0,0,244365590529,"{""name"":""Kriek-Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,22,1
+moylan_s_brewery_restaurant-old_blarney_barleywine,0,0,244870283264,"{""name"":""Old Blarney Barleywine"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+jennings_brewery-sneck_lifter,0,0,244743929858,"{""name"":""Sneck Lifter"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jennings_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark beer with a reddish tinge derived from the use of coloured malts, full of complex flavours, which create an intriguing beer of great character.\r\n\r\nIn Northern English dialect sneck means door latch and a sneck lifter was a man’s last sixpence which enabled him to lift the latch of a pub door and buy himself a pint, hoping to meet friends there who might treat him to one or two more."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,24,1
+heavenly_daze_brewery_and_grill-backpacker_ipa,0,0,244744323072,"{""name"":""Backpacker IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,25,1
+breckenridge_brewery-trademark_english_pale,0,0,244482637824,"{""name"":""Trademark English Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,21,1
+back_road_brewery-back_road_ale,0,0,244365852674,"{""name"":""Back Road Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Back Road Brewery's flagship beer, and first original recipe of 1997, is also our house beer.  This mildly hopped copper colored brew has a rich smooth taste.  Hop varieties such as Styrian Goldings and English Fuggles are used to balance the beers maltiness.  A technique called dry hopping is used after fermentation to add fresh herbal aroma.  It is a great session beer and was made to satisfy a wide variety of palates.  Drink and enjoy LaPorte County's first production craft beer."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+ellersick_brewing_big_e_ales,0,0,244617641984,"{""name"":""Ellersick Brewing Big E Ales"",""city"":""Lynnwood"",""state"":""Washington"",""code"":""98036"",""country"":""United States"",""phone"":""425-672-7051"",""website"":""http://www.ellersickbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Mission Statement: Dedicated to serving our clients on a personal level. We specialize in unusually cool dispensing methods.   To make sure your quality brew takes on an impressive experience.  Please view our product page for innovate systems and amazing Ales. Call today for a personal evaluation of your beer enhanced production, home remedy, or beer emergency!"",""address"":[""5030 208th ST SW Ste. A""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.8099,""lon"":-122.302}}",1,26,1
+scuttlebutt_brewing-homeport_blonde,0,0,245002928131,"{""name"":""Homeport Blonde"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+abbaye_notre_dame_du_st_remy-rochefort_10,0,0,244375617537,"{""name"":""Rochefort 10"",""abv"":11.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_notre_dame_du_st_remy"",""updated"":""2010-07-22 20:00:20"",""description"":""Reddish-brown colour, with a very compact head and an aroma of figs, feels like honey in the mouth. The alcohol profile is a major component in the flavour of this rich ale. It is very similar to 6 and 8, but has much more of everything. Some may find the high alcohol content to be disagreeable."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,46,1
+flatlander_s_restaurant_brewery-bockbier,0,0,244618100737,"{""name"":""Bockbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,27,1
+coronado_brewing_company-idiot_ipa,0,0,244482506753,"{""name"":""Idiot IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The CBC Idiot IPA is an all natural India Pale Ale. A big beer with an 8.5% ABV and brewed with over 3 lbs of hops per barrell. Watch out, this unfiltered \""San Diego IPA\"" has been known to reduce even the most intelligent to a blithering \""idiot\""."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,20,1
+pete_s_brewing-wicked_springfest,0,0,245006401537,"{""name"":""Wicked Springfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,63,1
+brasserie_dubuisson-scaldis_noel_bush_noel,0,0,244365656064,"{""name"":""Scaldis Noël / Bush Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dubuisson"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+moylan_s_brewery_restaurant,0,0,244870283265,"{""name"":""Moylan's Brewery & Restaurant"",""city"":""Novato"",""state"":""California"",""code"":""94945"",""country"":""United States"",""phone"":""1-415-898-4677"",""website"":""http://www.moylans.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""15 Rowland Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.0941,""lon"":-122.557}}",1,32,1
+john_harvard_s_brewhouse_wilmington-winterfest_lager,0,0,244743995392,"{""name"":""Winterfest Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brewhouse_wilmington"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,24,1
+hereford_hops_restaurant_and_brewpub_1,0,0,244744323073,"{""name"":""Hereford & Hops Restaurant and Brewpub #1"",""city"":""Escanaba"",""state"":""Michigan"",""code"":""49829"",""country"":""United States"",""phone"":""1-906-789-1945"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""624 Ludington Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.7458,""lon"":-87.056}}",1,25,1
+brewery_creek_brewing-belgian_wheat,0,0,244482703360,"{""name"":""Belgian Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+back_road_brewery-english_mild,0,0,244365918208,"{""name"":""English Mild"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,23,1
+elysian_brewery_public_house-bete_blanche,0,0,244617641985,"{""name"":""Bête Blanche"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+skagit_river_brewing-trumpeter,0,0,245002993664,"{""name"":""Trumpeter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,53,1
+aldaris-luksusa,0,0,244375617538,"{""name"":""Luksusa"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aldaris"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+flying_bison_brewing-buffalo_lager,0,0,244618100738,"{""name"":""Buffalo Lager"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Light bodied golden beer, very balanced flavor with soft, clean finish. Available bottles at your favorite store and at an increasing # of bars."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+crabby_larry_s_brewpub_steak_crab_house-pale_ale,0,0,244482572288,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,20,1
+pike_pub_and_brewery-auld_acquaintance_spiced_ale,0,0,245006467072,"{""name"":""Auld Acquaintance Spiced Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+brouwerij_abdij_der_trappisten_van_westmalle-westmalle_trappist_tripel,0,0,244482965504,"{""name"":""Westmalle Trappist Tripel"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_abdij_der_trappisten_van_westmalle"",""updated"":""2010-07-22 20:00:20"",""description"":""Was first brewed in 1934 and the recipe has not changed since 1956. It is made with pale candy sugar and has a very pale color produced from a mash of light pilsener malts. Styrian Goldings hops are used along with some German varieties and the classic Saaz pilsener hop. After a long secondary fermentation, the Tripel Westmalle is bottled with a dose of sugar and yeast. This beer holds up well in the bottle over time and seems to soften with age."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,22,1
+northwoods_brewpub_grill,0,0,244870283266,"{""name"":""Northwoods Brewpub Grill"",""city"":""Eau Claire"",""state"":""Wisconsin"",""code"":""54701"",""country"":""United States"",""phone"":""1-715-552-0510"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3560 Oakwood Mall Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.7776,""lon"":-91.4433}}",1,32,1
+jolly_pumpkin_artisan_ales-bam_biere,0,0,244743995393,"{""name"":""Bam Bière"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An artisan farmhouse ale that is golden, naturally cloudy, bottle conditioned and dry hopped for a perfectly refreshing balance of spicy malts, hops and yeast."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,24,1
+hereford_hops_steakhouse_and_brewpub_3-christmas_ale,0,0,244744323074,"{""name"":""Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+brewery_creek_brewing-dunkel_doppel_weizen_bock,0,0,244482703361,"{""name"":""Dunkel Doppel Weizen Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,21,1
+barley_island_brewing-blind_tiger_pale_ale,0,0,244365983744,"{""name"":""Blind Tiger Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+engine_house_9-belgian_white,0,0,244617707520,"{""name"":""Belgian White"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+skol_breweries,0,0,245002993665,"{""name"":""Skol Breweries"",""city"":""Maharashtra"",""state"":"""",""code"":"""",""country"":""India"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Uran""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":18.88,""lon"":72.94}}",1,53,1
+alesmith_brewing-lil_devil,0,0,244375683072,"{""name"":""Lil Devil"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+golden_valley_brewery_and_pub,0,0,244618100739,"{""name"":""Golden Valley Brewery and Pub"",""city"":""McMinnville"",""state"":""Oregon"",""code"":""97128"",""country"":""United States"",""phone"":""1-503-472-2739"",""website"":""http://www.goldenvalleybrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""980 NE Fourth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.2104,""lon"":-123.189}}",1,27,1
+de_halve_maan-brugse_zot,0,0,244614889472,"{""name"":""Brugse Zot"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_halve_maan"",""updated"":""2010-07-22 20:00:20"",""description"":""Brugse Zot is a goldenblond beer with a rich froth and a fruity flavouring. The beer is brewed with four different kinds of malt and two aromatic varieties of hop which give the beer its unique taste.\r\nWith an alcochol degrees proof of 6 % Vol it is a well balanced, easy drinking beer with character.\r\nBrugse Zot is a natural beer born out of a selection of only the best ingredients. Thanks to the refermentation in the bottle, the beer has a longer natural life."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,20,1
+pinehurst_village_brewery-double_eagle_brown_ale,0,0,245006467073,"{""name"":""Double Eagle Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pinehurst_village_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+brouwerij_artois,0,0,244483031040,"{""name"":""Brouwerij Artois"",""city"":""Leuven"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-016-24-71-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Vaartstraat 94""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8853,""lon"":4.7008}}",1,22,1
+o_hara_s_brewpub_and_restaurant-quarry_rock_red,0,0,244870283267,"{""name"":""Quarry Rock Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_hara_s_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,32,1
+jw_lees_and_co_brewers_ltd-harvest_ale_1998,0,0,244744060928,"{""name"":""Harvest Ale 1998"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,24,1
+highland_brewing_company-st_terese_s_pale_ale,0,0,244744323075,"{""name"":""St.Terese's Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A golden pale having a slightly malty body balanced by an assertive American hop flavor. This pale ale displays a delicate hop nose due to the process of dry hopping. A crisp and refreshing beer perfect for any occasion.\r\n\r\nIBU: 24\r\nAlcohol content: 5.2% by volume\r\nHops: Chinook and Cascade\r\n\r\nCalories per 12 oz. 170.1\r\nCarbs per 12 oz. 15.65"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+brooklyn_brewery-saison_de_brooklyn,0,0,244482768896,"{""name"":""Saison De Brooklyn"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The second beer of the Brewmaster's reserve line, Saison de Brooklyn is brewed in the style produced by old farmhouse breweries in Belgium and France. Well-hopped and fermented to a crisp dryness, Saisons were brewed in the spring to sustain farmers through the summer. Saison de Brooklyn is boldly hoppy, dry and flinty, with a bright spicy, citric aroma and pillowy white head. This beer has remarkable versatility with food, complementing spicy dishes particularly well."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,21,1
+bayern_brewing-hefeweizen,0,0,244365983745,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayern_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,23,1
+f_x_matt_brewing-saranac_single_malt,0,0,244617707521,"{""name"":""Saranac Single Malt"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""We use 100% Scottish Maris Otter Malt. Traditionally used in the distilling industry. The combination of the Scottish Malt and slow aging process produces a unique brew as distinctive as single malt whiskey with a flavor than any other beer."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,26,1
+spring_house_brewing_company-goofy_foot_summer_wheat,0,0,245120368640,"{""name"":""Goofy Foot Summer Wheat"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is lighter style and dry to the palate and with the distinct flavor of wheat makes for a perfect thirst-quenching beer. It is the ideal drink for beer drinker who appreciates tradition and personality in their beer, but also seeks a lighter, refreshing style, perfect for the summer months."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,53,1
+amherst_brewing_company-amherst_esb,0,0,244375683073,"{""name"":""Amherst ESB"",""abv"":5.35,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Amber in color, medium body with very hoppy aroma and bitter finish. Dry hopped with Oregon Goldings"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,46,1
+granite_city_food_brewery_omaha-broad_axe_stout,0,0,244744978432,"{""name"":""Broad Axe Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,27,1
+dock_street_beer-bubbly_wit,0,0,244615020544,"{""name"":""Bubbly Wit"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dock_street_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""A swanky interpretation of a double strength wheat beer, fermented solely by champagne yeast. Notes of tart citrus and white grape soothe the pallet in this sparkling ale."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,20,1
+pleasanton_main_street_brewery,0,0,245006532608,"{""name"":""Pleasanton Main Street Brewery"",""city"":""Pleasanton"",""state"":""California"",""code"":""94566"",""country"":""United States"",""phone"":""1-925-462-8218"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""830 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.6645,""lon"":-121.873}}",1,63,1
+brouwerij_de_keersmaeker-mort_subite_gueuze_lambic,0,0,244483031041,"{""name"":""Mort Subite Gueuze Lambic"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_keersmaeker"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,22,1
+olde_main_brewing-off_kil_ter_scottish_ale,0,0,244870348800,"{""name"":""Off KIL Ter Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_main_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_japanese_classic_ale,0,0,244744060929,"{""name"":""Hitachino Nest Japanese Classic Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,24,1
+hops_haven_brew_haus-port_washington_old_port_porter,0,0,244744388608,"{""name"":""Port Washington Old Port Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_haven_brew_haus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,25,1
+brouwerij_lindemans-peche_pecheresse,0,0,244482768897,"{""name"":""Pêche / Pecheresse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_lindemans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,21,1
+beamish_crawford,0,0,244365983746,"{""name"":""Beamish & Crawford"",""city"":""Cork"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":""353-21-911100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""South Main Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.897,""lon"":-8.4769}}",1,23,1
+fitger_s_brewhouse_brewery_and_grill-big_boat_oatmeal_stout,0,0,244617773056,"{""name"":""Big Boat Oatmeal Stout"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,26,1
+st_john_brewers,0,0,245120434176,"{""name"":""St John Brewers"",""city"":""St. John"",""state"":""Virgin Islands"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.stjohnbrewers.com/index.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":18.3368,""lon"":-64.7281}}",1,53,1
+anacortes_brewing,0,0,244375748608,"{""name"":""Anacortes Brewing"",""city"":""Anacortes"",""state"":""Washington"",""code"":""98221"",""country"":""United States"",""phone"":""360-588-1720"",""website"":""http://www.anacortesrockfish.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our brewers focus on high quality ingredients, a carefully controlled process and delicate handling to provide one of the best beers you will find in the industry. We operate a seven barrel brewery designed and installed by Sound Brewing Systems of Seattle with vessels fabricated by Ripley Stainless in British Columbia. Our brewery features a cold room specially designed for lagering to provide our beers with a traditional character and complexity."",""address"":[""320 Commercial Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.5193,""lon"":-122.613}}",1,46,1
+gray_brewing-bower_city_pale_ale,0,0,244744978433,"{""name"":""Bower City Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+dogfish_head_craft_brewery-punkin_ale,0,0,244615020545,"{""name"":""Punkin Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A full-bodied brown ale with smooth hints of pumpkin and brown sugar. Perfect to warm-up with, as the season cools."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,20,1
+raccoon_river_brewing-barnstormer_pale_ale,0,0,245006532609,"{""name"":""Barnstormer Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,63,1
+brouwerij_liefmans-lucifer,0,0,244483096576,"{""name"":""Lucifer"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_liefmans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+onopa_brewing-oatmeal_stout,0,0,244870348801,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""onopa_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+klosterbru_bamberg-bockbier,0,0,244744060930,"{""name"":""Bockbier"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbru_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,24,1
+icobes_b_v_b_a,0,0,244744454144,"{""name"":""ICOBES b.v.b.a."",""city"":""Evergem"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)9-/-253-61-82"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Durmakker 23""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1007,""lon"":3.6934}}",1,25,1
+capital_brewery-capital_maibock,0,0,244482768898,"{""name"":""Capital Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,21,1
+bibiana_brewing-hop_stuffed_pale_ale,0,0,244366049280,"{""name"":""Hop-Stuffed Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bibiana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+flossmoor_station_brewery-panama_limited_red_ale,0,0,244617773057,"{""name"":""Panama Limited Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+staatliches_hofbrauhaus_in_munchen,0,0,245120499712,"{""name"":""Staatliches Hofbräuhaus in München"",""city"":""München"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-92105-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hofbräuallee 1""]}",1,53,1
+angelic_brewing-london_porter,0,0,244375748609,"{""name"":""London Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""angelic_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,46,1
+great_dane_pub_and_brewing_2-coffee_ale,0,0,244745043968,"{""name"":""Coffee Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+dortmunder_actien_brauerei_dab-hansa_pils,0,0,244615086080,"{""name"":""Hansa Pils"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dortmunder_actien_brauerei_dab"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,20,1
+rahr_sons_brewing_company-iron_thistle,0,0,245006532610,"{""name"":""Iron Thistle"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Break out the bagpipes with your lederhosen! We’re proud to present our Iron Thistle Scotch Ale – Rahr’s first National Grand Champion winner. This dark, Scottish ale has a bold taste dominated by a smooth, sweet maltiness balanced with a low, hoppy bitterness. So don your kilts and enjoy. Here’s to your health – Slàinte! Prosit!"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,63,1
+brouwerij_van_steenberge-head_trip,0,0,244483096577,"{""name"":""Head Trip"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""Sweet with some\r\ntropical flavors, some banana, a hint of clove."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,22,1
+oskar_blues_grill_and_brew-mama_s_little_yella_pils,0,0,244870348802,"{""name"":""Mama's Little Yella Pils"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Mama’s Little Yella Pils - Our upcoming new canned good is a small-batch version of the beer that made Pilsen, Czechoslovakia famous. Mama’s is made with hearty amounts of pale malt, German specialty malts, and a blend of traditional (Saaz) and 21st century Bavarian hops. Our first canned lager, it’s also fermented at cool temperatures with a German yeast.\r\n\r\nThis tasteful reality Czech is the perfect antidote for the watered-down versions of pilsner clogging America’s shelves. And Mama’s gentle hopping (about 35 IBUs) and low ABV (just 5.3%) mean we’re finally honoring consumer requests for a delicious but less-challenging beer. (Hey, we like a good low-dose session beer, too.) Look for our Gold Metal Winner on US shelves in March.\r\n\r\nSadly, the Feds rejected our “Take Two and Call Us in the Morning” line on the can."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,32,1
+labatt_ontario_breweries-genuine_lager,0,0,244744060931,"{""name"":""Genuine Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Originally introduced in 1992, Genuine Lager has evolved into a truly definitive Canadian Lager. Balancing a blend of quality aromatic and bittering hops with its medium body, Genuine Lager is a smooth, refreshing and easy-drinking beer with a subtle hop aroma and a hint of malty sweetness."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,24,1
+industrias_la_constancia_ilc-premier,0,0,244744454145,"{""name"":""Premier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""industrias_la_constancia_ilc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+carlsberg_sverige_ab-falcon_lagrad_gammelbrygd,0,0,244482834432,"{""name"":""Falcon Lagrad Gammelbrygd"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlsberg_sverige_ab"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,21,1
+big_boss_brewing_company-angry_angel,0,0,244366049281,"{""name"":""Angry Angel"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_boss_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Kölsch is a refreshingly pale German style Ale. It is cold fermented and cold conditioned to achieve a beautiful balance between biscuit malt flavors and floral hop notes. It is light bodied and finishes somewhat dry to enhance it's easy drinking nature.""}",1,23,1
+frederic_robinson_ltd-double_hop_premium_ale,0,0,244617773058,"{""name"":""Double Hop Premium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""frederic_robinson_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+standing_stone_brewing_company-standing_stone_amber_ale,0,0,245120565248,"{""name"":""Standing Stone Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A light copper-colored ale with moderate hoppiness which exhibits a spicy hint of fruit, notable maltiness and a medium body."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,53,1
+australian_brewing_corporation,0,0,244375748610,"{""name"":""Australian Brewing Corporation"",""city"":""Little River"",""state"":""Victoria"",""code"":""3211"",""country"":""Australia"",""phone"":""+61 (03) 5283 1161"",""website"":""http://www.australianbrewingcorporation.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""229-255 Old Melbourne Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-37.968,""lon"":144.525}}",1,46,1
+heavenly_daze_brewery_and_grill-daze_scottish_ale,0,0,244745043969,"{""name"":""Daze Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+dubuque_brewing_and_bottling-champions_clubhouse_classic,0,0,244615086081,"{""name"":""Champions Clubhouse Classic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dubuque_brewing_and_bottling"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,20,1
+red_lodge_ales-bent_nail_ipa,0,0,245006532611,"{""name"":""Bent Nail IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_lodge_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,63,1
+budjovick_budvar,0,0,244483096578,"{""name"":""Budjovick Budvar"",""city"":""esk Budjovice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-387-705-111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Karoliny Svtl 4""]}",1,22,1
+penn_brewery,0,0,244993556480,"{""name"":""Penn Brewery"",""city"":""Pittsburgh"",""state"":""Pennsylvania"",""code"":""15212"",""country"":""United States"",""phone"":""412-237-9400"",""website"":""http://www.pennbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Pennsylvania Brewing Company, founded in 1986 by Tom Pastorius to brew authentic German beers, was the first craft brewer in Pennsylvania and a pioneer in the microbrewery movement. The brewery and its restaurant are located in the former Eberhardt and Ober Brewery in the historic Deutschtown section of Pittsburgh's North Side, where beer has been made since 1848. The buildings are listed on the National Register of Historic Sites. Penn Brewery is an authentic German brewery in every detail; from its solid copper brewhouse imported from Germany, fermentation and aging tanks, filtration equipment, kegging and bottling equipment to its imported ingredients, recipes, methods and German brewmaster. All beers are made in accordance with the German beer purity law called the Reinheitsgebot which means that only the four classic ingredients are used in our beer: malted barley (and/or wheat), hops, water and yeast. Adjuncts such as corn and rice are never used. Preservatives and stabilizers are never used. High gravity brewing is never done. Just real, honest, all natural beer made the way it's made in Germany!"",""address"":[""800 Vinial St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.4569,""lon"":-79.9915}}",1,32,1
+alaskan_brewing,0,0,244376076288,"{""name"":""Alaskan Brewing"",""city"":""Juneau"",""state"":""Alaska"",""code"":""99801"",""country"":""United States"",""phone"":""1-907-780-5866"",""website"":""http://www.alaskanbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The popularity of our beers has led to heroic efforts to keep up with the demand. We claim the unofficial record for production on a 10 barrel brewing system, with a whopping 42 batches in a single week. The addition of a new, 100-barrel brewhouse in 1995, and a Sankey-type keg system installed the following year, finally made it possible for us to serve the entire Pacific Northwest and later the Desert Southwest.  Brewing beer in Alaska isn't easy. In the coastal community of Juneau, without road connections to the lower 48 states, everything arrives and leaves by water or air, and the weather always has the last word.  We have learned to coordinate shipments for barges that couldn't dock in high winds, ferries that broke down, airplanes that overheaded, and trucks delayed by spring thaws that turned the roads to mush. We learned which suppliers were willing to airlift supplies and spare parts on short notice (at $1 per pound). We mastered wiring, plumbing, waste disposal and air quality control. We discovered that, if you had to, you could pour concrete in January by thawing the ground with heaters. Ah, but it all seems worthwhile if you can go home to a dinner of king crab or fresh halibut."",""address"":[""5429 Shaune Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":58.3573,""lon"":-134.49}}",1,47,1
+lancaster_brewing_co-shoo_fly_porter,0,0,244744126464,"{""name"":""Shoo-Fly Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Lancaster Brewing Company’s newest release is their limited series of Shoo-Fly Porter. From the heart of Pennsylvania Dutch Country comes a delicious porter made with Lancaster County molasses, eight different malts and grains, and four different styles of hops. This beer has a deep, rich, brown color, medium to full body, and finishes with a smooth mouth feel."",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+ithaca_beer_company-cascazilla,0,0,244744454146,"{""name"":""Cascazilla"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The name CascaZilla is a play on both the name of our local Cascadilla Gorge and the monster amounts of Cascade hops in this beer. This red ale gets its distinctive color from a healthy portion of caramel malt, which also lends some body and sweetness to the beer. The predominant flavor and aroma of this beer, however, is brought to you by the fresh American hops. If you haven't done so yet, treat yourself to Ithaca Beer's new monstrously hoppy Red Ale."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,25,1
+cervejaria_sudbrack-eisenbahn_dourada,0,0,244482834433,"{""name"":""Eisenbahn Dourada"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_sudbrack"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+big_horn_brewing_the_ram_2,0,0,244366114816,"{""name"":""Big Horn Brewing @ The RAM 2"",""city"":""Wheeling"",""state"":""Illinois"",""code"":""60090"",""country"":""United States"",""phone"":""1-847-520-1222"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""700 North Milwaukee Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1511,""lon"":-87.9144}}",1,23,1
+front_street_brewery-cherry_ale,0,0,244617838592,"{""name"":""Cherry Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""front_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,26,1
+standing_stone_brewing_company-standing_stone_hefeweizen,0,0,245120565249,"{""name"":""Standing Stone Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This unfiltered wheat ale has very low bitterness.  A Bavarian hefeweizen yeast is used which imparts a banana and clove aroma."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,53,1
+ballast_point_brewing-big_eye_ipa,0,0,244375814144,"{""name"":""Big Eye IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""ndia Pale Ale is a style of beer that was developed in England during the period of the British Empire. It is derived from bitter ales but contains even more alcohol and hops. This helped preserve the beer on its long sea journey around Cape Hope to India.\r\n\r\nBritish troops returning from India brought their love of this beer back with them so breweries began brewing it for the home market as well. Sadly, the style had mostly died out in England by the late twentieth century.\r\n\r\nAmerican home brewers began to brew I.P.A. because of their love for the intense hoppiness of the style. In time American I.P.A.s became much more aggressively bitter and hoppy than their historical predecessors.\r\n\r\nBig Eye I.P.A. is our version of this wonderful style.  American Centennial hops are  used exclusively to bitter, flavor, finish, and dry hop the Big Eye. Its full hop flavor is guaranteed to please the palate of the true hop head."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,46,1
+heineken_switzerland-original_ittinger_klosterbrau,0,0,244745043970,"{""name"":""Original Ittinger Klosterbräu"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heineken_switzerland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+dunedin_brewery,0,0,244615151616,"{""name"":""Dunedin Brewery"",""city"":""Dunedin"",""state"":"""",""code"":""34698"",""country"":""United States"",""phone"":""727 736 0606"",""website"":""http://www.dunedinbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""From their webpage - Fermenting since 1996 and still going strong, we handcraft all of our ales for your enjoyment from our Piper's Pale Ale to our Apricot Wheat. Located on the west coast of Florida in the Scottish heritage town of Dunedin, Florida we work hard to produce quality ales for our thirsty friends all over Florida. With 9 ales brewed year round and 5 or more seasonal offerings throughout the year there is sure to be be an ale to fit your taste!"",""address"":[""937 Douglas Ave""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":28.014,""lon"":-82.7876}}",1,20,1
+redhook_ale_brewery-blonde_ale,0,0,245006598144,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+caledonian_brewing-golden_promise_traditional_scottish_ale,0,0,244483162112,"{""name"":""Golden Promise Traditional Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caledonian_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+port_brewing_company,0,0,244993556481,"{""name"":""Port Brewing Company"",""city"":""San Marcos"",""state"":""California"",""code"":""92069"",""country"":""United States"",""phone"":""(760) 891-0272"",""website"":""http://www.portbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We officially opened on May 5th 2006. Now we will be able to make up to 5000 barrels of beer enabling you more chances to drink your favorite Port Brewed beers at home and around town. More impressive is our oak barrel room where we age our barrel aged specialty beers. Come check out our tasting bar on Fridays and Saturdays where you can get bottles, jugs & merchandise to go while you sample what we've been brewing!"",""address"":[""155 Mata Way Suite 104""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.1406,""lon"":-117.15}}",1,32,1
+ali_i_brewing-pau_hana_porter,0,0,244376076289,"{""name"":""Pau Hana Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ali_i_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,47,1
+little_creatures_brewery,0,0,244867072000,"{""name"":""Little Creatures Brewery"",""city"":""Fremantle"",""state"":""WA"",""code"":""6160"",""country"":""Australia"",""phone"":""+61 8 9430 5155"",""website"":""http://www.littlecreatures.com.au/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""40 Mews Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-32.0597,""lon"":115.745}}",1,24,1
+ithaca_beer_company-pale_ale,0,0,244744519680,"{""name"":""Pale Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Made with generous amounts of west coast hops, our Pale Ale boasts a fragrant aroma and a pleasant hop bite. It has a deep golden color, and nicely balances the bitterness of the hops with the sweetness of the malt. Whether you know hops or not, our Pale Ale will appeal to all those looking for a refreshing, well balanced ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+charles_wells_ltd,0,0,244482834434,"{""name"":""Charles Wells Ltd."",""city"":""Bedford"",""state"":""Bedford"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01234)-272766"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Havelock Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":52.1321,""lon"":-0.4815}}",1,21,1
+brasserie_d_ecaussinnes-ultra_ambree,0,0,244366114817,"{""name"":""Ultra Ambrée"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_ecaussinnes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+goose_island_beer_company_clybourn-smooth_india_pale_ale,0,0,244617838593,"{""name"":""Smooth India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+standing_stone_brewing_company-standing_stone_saison,0,0,245120565250,"{""name"":""Standing Stone Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian \""seasonal\"" ale brewed during winter for the spring and summer months.  This is a crisp, refreshing beer with hints of spice and fruit."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,53,1
+bass_brewers-ale,0,0,244375814145,"{""name"":""Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bass_brewers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+highland_brewing_company-gaelic_ale,0,0,244745109504,"{""name"":""Gaelic Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A deep amber colored American ale, featuring a rich malty body. Cascade and Willamette hops add a complex hop flavor and aroma. This ale is exceptionally balanced between malty sweetness and delicate hop bitterness.\r\n\r\nIBU: 32\r\nAlcohol content: 5.8% by volume\r\nHops: Chinook, Willamette and Cascade\r\n\r\nCalories per 12 oz. 172.5\r\nCarbs per 12 oz. 17.86"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,27,1
+egan_brewing-rye_i_oughta,0,0,244615151617,"{""name"":""Rye I Oughta...!"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+ridgeway_brewing-seriously_bad_elf,0,0,245006598145,"{""name"":""Seriously Bad Elf"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+capital_brewery-capital_rustic_ale,0,0,244483162113,"{""name"":""Capital Rustic Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+port_washington_brewing-pier_96_lager,0,0,244993622016,"{""name"":""Pier 96 Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_washington_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,32,1
+america_s_brewing-hemp_ale,0,0,244376141824,"{""name"":""Hemp Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+long_trail_brewing_co-belgian_white,0,0,244867137536,"{""name"":""Belgian White"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Belgian White Ale is modeled after the original Belgian Witbiers brewed in monasteries during the early 14th century. The soft notes of citrus and spice are topped with a light, fluffy head that finishes clean and crisp. This all natural ale is our latest seasonal brew, perfect for lounging lake-side or celebrating at trail's end."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,24,1
+jack_russell_brewing,0,0,244744519681,"{""name"":""Jack Russell Brewing"",""city"":""Camino"",""state"":""California"",""code"":""95709"",""country"":""United States"",""phone"":""1-877-457-2725"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2380 Larsen Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.7563,""lon"":-120.679}}",1,25,1
+coach_s_norman,0,0,244482899968,"{""name"":""Coach's Norman"",""city"":""Norman"",""state"":""Oklahoma"",""code"":""73069"",""country"":""United States"",""phone"":""1-405-360-5726"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""102 West Main""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.2205,""lon"":-97.4439}}",1,21,1
+brauerei_aying_franz_inselkammer_kg-oktober_fest_marzen,0,0,244483293184,"{""name"":""Oktober Fest - Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_aying_franz_inselkammer_kg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,23,1
+goose_island_beer_company_fulton_street-oktoberfest,0,0,244617838594,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,26,1
+steamworks-heroica_oatmeal_stout,0,0,245120565251,"{""name"":""Heroica Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""There are some things in life that require a certain sense of bravado: these might include ordering a quadruple espresso, deciding to sleep without a nightlight, or choosing to live in a region of the continent that is gradually sinking into the Pacific Ocean. If you're no longer scared of the dark, then there's no reason to be afraid of our stout. A generous portion of rolled oats and lots of black roasted barley give this beer a warm, roasted nose, and a distinct dryness that succumbs to waves of lingering satisfaction."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,53,1
+bbc_brewing_co_llc-hoppy_hefe,0,0,244375814146,"{""name"":""Hoppy Hefe"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bbc_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""It is a nice example of a Hefeweizen."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,46,1
+hoppin_frog_brewery-frog_s_hollow_double_pumpkin_ale,0,0,244745109505,"{""name"":""Frog's Hollow Double Pumpkin Ale"",""abv"":8.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""There's a Place just south they call Frog's Hollow, with cauldrons afire in Fall, and they only speak in whispers of the name. There's a brewery they say who has the secret, of spices picked just right. With a crying shout, they'll knock it out, and hand you this Frog's delight."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,27,1
+elysian_brewery_public_house-bifrost_winter_ale,0,0,244615151618,"{""name"":""BiFröst Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,20,1
+rock_bottom_restaurant_brewery_denver,0,0,245006598146,"{""name"":""Rock Bottom Restaurant & Brewery - Denver"",""city"":""Denver"",""state"":""Colorado"",""code"":""80202"",""country"":""United States"",""phone"":""1-303-534-7616"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1001 16th Street #A-100""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.7472,""lon"":-104.995}}",1,63,1
+celis_brewery-pale_rider,0,0,244483227648,"{""name"":""Pale Rider"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""celis_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-weisse_hefe_weizen,0,0,244993622017,"{""name"":""Weisse Hefe-Weizen"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,32,1
+anchor_brewing-old_foghorn_2006,0,0,244376141825,"{""name"":""Old Foghorn 2006"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+magic_hat-odd_notion_summer_08,0,0,244867203072,"{""name"":""Odd Notion Summer 08"",""abv"":3.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""A stupendous Midland Mild Ale whose epic malt infused acts of sweet caramel sensations leave all who pour it speechless.  Its roasted notes of sun soaked grain are appearing in the Summer Variety Show in a not to be missed engagement.  Brewed with Belgian Candi Sugar.""}",1,24,1
+jolly_pumpkin_artisan_ales-bam_noire,0,0,244744519682,"{""name"":""Bam Noire"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark, smooth, delicious.  Aromas of worn leather and cool autumn nights. Notes of sweet plum and toasted raisin, hints of coffee and cacao. Lingering tart and refreshing finish.  Only available for a few short months.  Not to be missed."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,25,1
+cold_spring_brewing,0,0,244482899969,"{""name"":""Cold Spring Brewing"",""city"":""Cold Spring"",""state"":""Minnesota"",""code"":""56320"",""country"":""United States"",""phone"":""1-320-685-8686"",""website"":""http://www.coldspringbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Cold Spring Brewery in Cold Spring is on the original Red River trail. Used by the pioneering trail blazers, trappers and settlers to replenish water supplies from the pure cold spring which the town is named today. The spring is one of the purest sources of water in North America.  The spring comes from an underground prehistoric glacial lake filtered through granite over hundreds of years. There are certain pure elements in the water that are absolutely perfect for brewing world class beers.  The brewery has been modernized and rebuilt over the past several years, and is now a state-of-the-art brewery and beverage product development and production facility."",""address"":[""219 Red River Avenue North""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.4582,""lon"":-94.4291}}",1,21,1
+brauerei_schwelm-pils,0,0,244483358720,"{""name"":""Pils"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_schwelm"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+gordon_biersch_brewing-blonde_bock,0,0,244617904128,"{""name"":""Blonde Bock"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,26,1
+steamworks-pilsner,0,0,245120565252,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Pilsner is a true beer drinker's beer inspired by the first golden lagers brewed in the Czech town of Pilsn. This full-bodied lager is hopped with copious amounts of Sterling hops, lending it a refreshing, citrusy finish."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,53,1
+bell_s_brewery_inc-special_double_cream_stout,0,0,244375879680,"{""name"":""Special Double Cream Stout"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""Sweeter and smoother than Kalamazoo Stout. A beer for special winter occasions. Great with chocolate desserts."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,46,1
+issaquah_brewhouse-farm_frog,0,0,244745109506,"{""name"":""Farm Frog"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""issaquah_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+emery_pub-amber,0,0,244615217152,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""emery_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,20,1
+rock_bottom_restaurant_brewery_minneapolis-st_paul_pilsner,0,0,245006663680,"{""name"":""St. Paul Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+city_brewing_company_llc-lager_beer,0,0,244483227649,"{""name"":""Lager Beer"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""city_brewing_company_llc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,22,1
+reaperale-mortality_stout,0,0,244993687552,"{""name"":""Mortality Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""reaperale"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+appalachian_brewing_company-dom_blonde_kolsch,0,0,244376141826,"{""name"":""Dom Blonde Kölsch"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The first in a series of two new specialty beers coming this year! This Kölsch-styled ale is clean, crisp, and delicately balanced. It has very subtle pear flavors and aromas. The subdued maltiness leads to a pleasantly refreshing finish. A fantastic summer brew!\r\n\r\nThe Kölner Dom (Cologne Cathedral), is one of the best-known architectural monuments in Germany and has been Cologne's most famous landmark since its completion in the late 19th century. True Kölsch can only be brewed if the brewery has a view of this famous cathedral, thus its’ appearance on our tap markers.""}",1,47,1
+marin_brewing-point_reyes_porter,0,0,244867203073,"{""name"":""Point Reyes Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+jt_whitney_s_brewpub_and_eatery-raspy_raspberry_weiss,0,0,244744519683,"{""name"":""Raspy Raspberry Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,25,1
+courage_brewery,0,0,244482899970,"{""name"":""Courage Brewery"",""city"":""Tadcaster"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01937)-832091"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Tadcaster LS24 9SA""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.8846,""lon"":-1.2652}}",1,21,1
+brouwerij_bavik_de_brabandere-petrus_oud_bruin,0,0,244483358721,"{""name"":""Petrus Oud Bruin"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+grupo_modelo-corona_extra,0,0,244744585216,"{""name"":""Corona Extra"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grupo_modelo"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+sturgeon_bay_brewing-last_stop_stout,0,0,245120630784,"{""name"":""Last Stop Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sturgeon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,53,1
+bierbrouwerij_de_koningshoeven-tilburg_s_dutch_brown_ale,0,0,244375879681,"{""name"":""Tilburg's Dutch Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,46,1
+jacob_leinenkugel_brewing_company-leinenkugel_s_berry_weiss,0,0,244745175040,"{""name"":""Leinenkugel's Berry Weiss"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,27,1
+f_x_matt_brewing-saranac_bock,0,0,244615217153,"{""name"":""Saranac Bock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Bock is not from the bottom of the barrel! It is a rich malty beer brewed with traditional German ingredients and aged for months to give it a smooth malty character. Look for a rich full-bodied beer."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,20,1
+rogue_ales-kells_irish_style_lager,0,0,245006663681,"{""name"":""Kells Irish Style Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""In 1998 the McAleese Brothers, owners of Kells Irish Pubs in Portland, OR, Seattle, WA, and San Francisco, CA, wanted to make an American beer that would float Guinness. \r\n\r\nGerard and Patrick McAleese asked John Maier to create a beer with a green apple bite flavor profile. It took four batches to get it just right. John used acidulated malts imported from Europe to get the crisp, lemony/apple flavor the McAleese Brothers wanted. The bottle label reflects the McAleese family heritage, puctures the Kells Irish Pub logo, and a traditional Irish flutist. \r\n\r\nThe first Kells Irish Pub opened in Seattle in October 1983 in Post Alley, above the historic Pike Place Market. The restaurant will remind you of the Old Country with its warm, cozy atmosphere and traditional surroundings. Theres also a patio outside thats a great place to feel the breeze from the Puget Sound and the buzz from the Market. Kells has Seattles largest selection of Single Malt Scotch. \r\n\r\nThe Kells Irish Pub in Portland is a local landmark and has been named the #1 Irish Entertainment venue in America. Sit by the fire, belly up to the bar, check out the cigar room, and dont miss the St. Patricks Day Festival, the largest Irish Fest in Oregon. \r\n\r\nThe Pub in San Francisco is next to the historic North Beach neighborhood and reflects the Old World charm and hospitality the McAleese family brought with them from Ireland. \r\n\r\nKells Irish Lager has won world-wide acclaim by winning 8 medals from the World Beer Championship and a Gold Medal at the Australian International Beer Awards. \r\n\r\nKells Irish Lager is brewed with 7 ingredients: Great Western Pale, Crystal, Wheat and Acidulated Malts; Sterling Hops; Free Range COastal Water and Czech Pilsner Yeast."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+clner_hofbrau_frh-kolsch,0,0,244483227650,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clner_hofbrau_frh"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+richbrau_brewing_company-old_nick_pale_ale,0,0,244993687553,"{""name"":""Old Nick Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our pale ale is located toward the lighter side of the beer spectrum and we hope it will serve as a stepping stone into the more flavorful world of craft beer. Amber, caramel, fruity, hoppy and bitter."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,32,1
+arcadia_brewing,0,0,244376207360,"{""name"":""Arcadia Brewing"",""city"":""Battle Creek"",""state"":""Michigan"",""code"":""49017"",""country"":""United States"",""phone"":""1-269-963-9690"",""website"":""http://www.arcadiaales.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""103 West Michigan Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.322,""lon"":-85.1851}}",1,47,1
+mckenzie_brew_house-light_lager,0,0,244867203074,"{""name"":""Light Lager"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,24,1
+karl_strauss_brewery_gardens_sorrento_mesa-downtown_after_dark,0,0,244744585216,"{""name"":""Downtown After Dark"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,25,1
+crescent_city_brewhouse-weiss_beer,0,0,244482899971,"{""name"":""Weiss Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crescent_city_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,21,1
+brouwerij_de_landtsheer-malheur_10,0,0,244483424256,"{""name"":""Malheur 10"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_landtsheer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+harpoon_brewery_boston-harpoon_winter_warmer,0,0,244744650752,"{""name"":""Harpoon Winter Warmer"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""Winter Warmer was Harpoon’s first seasonal beer.  It was designed to be enjoyed during the holiday season. \r\n\r\nWhen you bring a glass of this dark copper ale to your lips to take your first sip you will notice the aroma of cinnamon.  There is no aromatic hop added that might overpower the distinct spice scent.  The medium body of this beer is formed from caramel and pale malts.  These create enough body to support the spices without making the beer excessively rich.  Bittering hops are added to counter the sweetness of the malt and spice.  The finish of the beer is a blend of cinnamon and nutmeg.  The combination of these two spices results in a balanced, pumpkin-pie flavor. \r\n\r\nThe overall character is a smooth, medium bodied ale spiced with cinnamon and nutmeg"",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,26,1
+alaskan_brewing-alaskan_smoked_porter,0,0,244375027712,"{""name"":""Alaskan Smoked Porter"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Smoked Beer. Known as \""rauchbier\"" in Germany, smoke-flavored beers were virtually unknown in the U.S. until Alaskan Smoked Porter was developed in 1988.\r\n\r\nThe dark, robust body and pronounced smoky flavor of this limited edition beer make it an adventuresome taste experience. Alaskan Smoked porter is produced in limited \""vintages\"" each year and unlike most beers, may be aged in the bottle much like fine wine.\r\n\r\nWater, five types of malt, 2 varieties of hops and yeast with no adjuncts, no preservatives and no pasteurization. Our glacier-fed water originates in the 1,500 square-mile Juneau Ice Field. Prior to brewing, selected malts are smoked in small batches under carefully controlled conditions in a commercial food smoker using local alder wood."",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+tempo,0,0,245120630785,"{""name"":""Tempo"",""city"":"""",""state"":"""",""code"":"""",""country"":""Israel"",""phone"":"""",""website"":""http://www.tempo.co.il/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,53,1
+bison_brewing-red_oak_ale,0,0,244375879682,"{""name"":""Red Oak Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+jasper_ridge_brewery-red_earth_pale_ale,0,0,244745240576,"{""name"":""Red Earth Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jasper_ridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+flossmoor_station_brewery-imperial_eclipse_stout,0,0,244615217154,"{""name"":""Imperial Eclipse Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,20,1
+roost_brewery-esb,0,0,245006729216,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roost_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+cold_spring_brewing-hefe_weiss,0,0,244483227651,"{""name"":""Hefe Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cold_spring_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,22,1
+ridgeway_brewing-ivanhoe,0,0,244993687554,"{""name"":""Ivanhoe"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,32,1
+avery_brewing_company-dugana_ipa,0,0,244376207361,"{""name"":""DuganA IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Lupulin Rapture Incarnate! As fervent  devotees of hops, we found ourselves on a quest to create a transcendental IPA capable of quenching our voracious lupulin desires. Our mantra became \""unity of bitterness, hop flavor and aroma.\"" Enlightened, duganA IPA was born: A brutally bitter, dank, piney and resinous ale designed for those seeking a divine hop experience."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,47,1
+midnight_sun_brewing_co-arctic_rhino_coffee_porter,0,0,244867268608,"{""name"":""Arctic Rhino Coffee Porter"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Inspired by local artist & roaster Michael Allen's eccentricly-named blend of coffee beans, Midnight Sun's brewers designed a beer recipe and infusion process that perfectly captures the alluring aroma, satisfying flavor and curious legend of Allen's Arctic Rhino Coffee. \r\n\r\nArctic Rhino Coffee Porter combines two quintessential Pacific Northwest favorites: coffee and ale. The result is wonderfully romantic and robust--a duel-fueled porter that melds charismatic dark malt with freshly roasted coffee beans. The (un)rest is up to you."",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+lakefront_brewery-riverwest_stein_beer,0,0,244744585217,"{""name"":""Riverwest Stein Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Delicious"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+dick_s_brewing-barley_wine_ale,0,0,244615282688,"{""name"":""Barley Wine Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+brouwerij_duvel_moortgat,0,0,244483424257,"{""name"":""Brouwerij Duvel Moortgat"",""city"":""Breendonk"",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""oday, the Duvel Moortgat group, founded in 1871, is an independent producer of authentic speciality beers and premium brands. Around the world, the group is considered to be the leading producer of blond, bottle conditioned, high fermentation beers, a dominant position owed largely to the success of its best-selling product Duvel. A niche player, Duvel Moortgat occupies a leading position in the strategic segments of speciality beers and premium brands like Duvel, Maredsous, Bel Pils and Vedett. The group markets Steendonk white beer in a joint venture with the Palm brewery. Duvel Moortgat has also entered the market of natural fruit juices with a 70% participation in the quality juice producer Freya. Today, the group's beers are exported to over 40 countries. Duvel Moortgat has also taken a firm foothold in Central Europe, thanks to a 50% participation in the Czech Bernard brewery, renowned for its premium Pilsners. The group has launched itself into the market of artisan premium beers through the acquisition of the American Ommegang brewery. Duvel Moortgat has also been listed on the Brussels Euronext stock exchange since 1999."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.2206,""lon"":4.3997}}",1,23,1
+hida_takayama_brewing_agricultural_company,0,0,244744650753,"{""name"":""Hida Takayama Brewing Agricultural Company"",""city"":""Takayama"",""state"":""Chubu"",""code"":"""",""country"":""Japan"",""phone"":""81-0577-35-0365"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""999 Matsumoto-cho""]}",1,26,1
+allagash_brewing-double_ale,0,0,244375093248,"{""name"":""Double Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+titletown_brewing-toasted_oats_molasses_brown_ale,0,0,245120630786,"{""name"":""Toasted Oats & Molasses Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,53,1
+boston_beer_company-samuel_adams_coastal_wheat,0,0,244375945216,"{""name"":""Samuel Adams Coastal Wheat"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""For our take on the classic hefeweizen style our search for unique ingredients led us to the Eureka and Lisbon varieties of lemon grown in three different regions of California.  These particular lemons added the perfect balance of citrus tartness and sweetness to accent the taste of the beer.  The spiciness of the Hallertau Mittelfruh and Spalt Spalter hops balance out the slightly sweet character of our brewery’s own signature wheat malt, resulting in a crisp and refreshing wheat beer with a subtle lemon aroma and flavor."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,46,1
+jobber_s_canyon_restaurant_brewery-porter,0,0,244745240577,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jobber_s_canyon_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,27,1
+fuller_smith_turner_pbc-1845_celebration_ale,0,0,244615217155,"{""name"":""1845 Celebration Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+russian_river_brewing-pliny_the_elder,0,0,245006729217,"{""name"":""Pliny the Elder"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A true leader in the hop-wars of the west coast, Pliny the Elder hits you over the head with hoppy bitterness and manages to smooth the rough edges out enough to become an enjoyable brew."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,63,1
+crane_river_brewpub_and_cafe-carhenge_wheat,0,0,244483293184,"{""name"":""Carhenge Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+rio_salado_brewing,0,0,244993687555,"{""name"":""Rio Salado Brewing"",""city"":""Tempe"",""state"":""Arizona"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.4148,""lon"":-111.909}}",1,32,1
+bavarian_barbarian_brewing_company-2x4_india_pale_ale,0,0,244376207362,"{""name"":""2x4 India Pale Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bavarian_barbarian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""2x4 India Pale Ale (7% ABV, 65 IBUs) sports Columbus, Nugget and Amarillo hops for a spicy, citrusy blend in both flavor and aroma.  Backed by golden pale malts and a kick from flaked rye, the hops are pleasantly robust with just the right touch of bitterness at the end."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,47,1
+miller_brewing-milwaukees_best,0,0,244867268609,"{""name"":""Milwaukees Best"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,24,1
+marin_brewing-triple_dipsea_belgian,0,0,244867530752,"{""name"":""Triple Dipsea Belgian"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+dick_s_brewing-ipa,0,0,244615348224,"{""name"":""IPA"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,21,1
+brouwerij_st_bernardus-grotten_flemish_ale,0,0,244483489792,"{""name"":""Grotten Flemish Ale"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,23,1
+highland_brewing_company-black_mountain_bitter,0,0,244744716288,"{""name"":""Black Mountain Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A style of Pale Ale, Black Mountain Bitter will be lightly hopped with traditional British hop varieties to balance the malt sweetness yet encourage it to tend toward the dry side. We recently received our organic certification from Clemson University after undergoing a rigid inspection and two-month compliance process. Although this represents a big step for Highland, the idea of an all organic product is consistent with our corporate ethos and embrace of natural traditional brewing methods."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,26,1
+amherst_brewing_company-two_sisters_imperial_stout,0,0,244375158784,"{""name"":""Two Sisters Imperial Stout"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark, rich, hearty, smooth and chocolaty. The two siloettes on the logo are Marina and Kshusha adopted from Russia by Amherst Brewing Company's owners, John and Terrie."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,44,1
+traquair_house_brewery-jacobite_ale,0,0,245120630787,"{""name"":""Jacobite Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""traquair_house_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+boston_beer_company-samuel_adams_octoberfest,0,0,244375945217,"{""name"":""Samuel Adams OctoberFest"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The first thing you notice when pouring a glass of this seasonal beer is the color. Samuel Adams® Octoberfest has a rich, deep golden amber hue which itself is reflective of the season. Samuel Adams® Octoberfest is a malt lover's dream, masterfully blending together five roasts of barley to create a delicious harmony of sweet flavors including caramel and toffee. The beer is kept from being overly sweet by the elegant bitterness imparted by the German Noble hops. Samuel Adams® Octoberfest provides a wonderful transition from the lighter beers of summer to the winter's heartier brews."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,46,1
+kross_brewing-brueghel_blonde,0,0,244745240578,"{""name"":""Brueghel Blonde"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kross_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,27,1
+goose_island_beer_company_clybourn-barleywine,0,0,244615282688,"{""name"":""Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+smuttynose_brewing_co-old_brown_dog_ale,0,0,245123973120,"{""name"":""Old Brown Dog Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Old Brown Dog has been cited as a classic example of the “American Brown Ale” style of beer. Compared to a typical English Brown Ale, Old Brown Dog is fuller-bodied and more strongly hopped.\r\n\r\nOld Brown Dog has been around for many years. It was first brewed in 1988 at the Northampton Brewery. In 1989 it won a silver medal in its category (American Brown Ale) at the Great American Beer Festival in Denver."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,63,1
+amicas_pizza_microbrews_and_more-loyal_duke_scotch_ale,0,0,244376272896,"{""name"":""Loyal Duke Scotch Ale"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amicas_pizza_microbrews_and_more"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,48,1
+de_proef_brouwerij-flemish_primitive_wild_ale_demon_fish,0,0,244615741440,"{""name"":""Flemish Primitive Wild Ale (Demon Fish)"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+salopian_brewery-entire_butt_english_porter,0,0,244993753088,"{""name"":""Entire Butt English Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""salopian_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,32,1
+beermann_s_beerwerks_brewpub,0,0,244376207363,"{""name"":""Beermann's Beerwerks BrewPub"",""city"":""Lincoln"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.8916,""lon"":-121.293}}",1,47,1
+milwaukee_ale_house-session_ale,0,0,244867268610,"{""name"":""Session Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,24,1
+marzoni_s_brick_oven_brewing_co-highway_22_wheat,0,0,244867596288,"{""name"":""Highway 22 Wheat"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marzoni_s_brick_oven_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Light-Bodied, Pleasantly Tart, American-Style Wheat"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,25,1
+el_ahram_company-stella,0,0,244615348225,"{""name"":""stella"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""el_ahram_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Stella is the most famous brand of beer in Egypt. It has been manufactured in Egypt since the 19th century and so many Egyptian, and actually many experienced travelers, prefer it to any other kind of beer. One will not find a single bar in Egypt that doesn’t sell Stella or even have the Stella logo on the bar or shop. Stella can even be found in many bars in Europe""}",1,21,1
+cambridge_brewing-wheaten_ale,0,0,244483489793,"{""name"":""Wheaten Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cambridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,23,1
+iron_hill_brewery_newark-pig_iron_porter,0,0,244744781824,"{""name"":""Pig Iron Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_newark"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+appleton_brewing-adler_brau_fox_classic_river_ale,0,0,244375158785,"{""name"":""Adler Bräu Fox Classic River Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+victory_brewing-sunrise_weissbier,0,0,245751480320,"{""name"":""Sunrise Weissbier"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""As invigorating as the morning rays of the summer sun, Sunrise Weissbier satisfies when the heat is on, too. This unfiltered, Bavarian style ale is true to its origins with all ingredients except for the water having been imported from Germany. It remains unfiltered to feature the tangy, fruity flavors of its unique yeast. The imported German malt contributes greatly to add a crisp, citric snap that makes this beer a superb summertime refresher."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,53,1
+boston_beer_works-fenway_american_pale_ale,0,0,244376010752,"{""name"":""Fenway American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+kulmbacher_brauerei_ag-reichelbrau_eisbock,0,0,244745240579,"{""name"":""Reichelbräu Eisbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,27,1
+govnor_s_public_house-shamrock_stout,0,0,244741963776,"{""name"":""Shamrock Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,20,1
+spaten_franziskaner_brau-franziskaner_hefe_weissbier_hell_franziskaner_club_weiss,0,0,245124038656,"{""name"":""Franziskaner Hefe-Weissbier Hell  / Franziskaner Club-Weiss"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,63,1
+appalachian_brewing_company-celtic_knot_irish_red,0,0,244376338432,"{""name"":""Celtic Knot Irish Red"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This wonderful red ale has a perfect balance of hops and malt.  The clean finish will leave your palate begging for more."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+deschutes_brewery-inversion_ipa,0,0,244615806976,"{""name"":""Inversion IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""After several months of experimentation, energy and obsession, Deschutes Brewery’s brewers have triumphed once again.  Inversion I.P.A.'s trio of American hops delivers an over-the-top nose with hints of orange and grapefruit.  Inversion is then dry-hopped for seven days resulting in an added hoppy kick.  To balance the hop character, Deschutes’ brewers used crystal and caraston malts that weave throughout the beer providing soft, complex caramel flavors. \r\n\r\nJust like clear days up on the mountain, Inversion I.P.A. will deliver a path to higher ground.  Inversion I.P.A. is a phenomenal NW-style I.P.A., beckoning all beer drinkers and enticing I.P.A. lovers to invert their world and find clarity above the routine of the everyday."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,22,1
+sandlot_brewery_at_coors_field-barleywine,0,0,244993818624,"{""name"":""Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sandlot_brewery_at_coors_field"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+black_toad_brewing_company,0,0,244376207364,"{""name"":""Black Toad Brewing Company"",""city"":""Chicago"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Chicago IL 60612""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.8817,""lon"":-87.6926}}",1,47,1
+mogollon_brewing_company,0,0,244867334144,"{""name"":""Mogollon Brewing Company"",""city"":""Flagstaff"",""state"":""Arizona"",""code"":""86001"",""country"":""United States"",""phone"":"""",""website"":""http://www.mogbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Mogollon Brewing Company, LLC, and High Spirits Distillery is a small, 20 bbl micro brewery and distillery. Our beers and spirits are hand crafted from the finest ingredients available and we use pure mountain water.  The artwork found on our labels is the embodiment of, and is inspired by, Northern Arizona wildlife.  Mogollon Brewing takes its name from the Mogollon Plateau which sits at 7000 feet above sea level.   We are now located at 4366 Huntington Drive in Flagstaff, AZ.  This is a brand new 4500 square foot building designed and built specifically for brewing beer and distilling spirits."",""address"":[""4366 Huntington Dr""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":35.2156,""lon"":-111.59}}",1,24,1
+mckenzie_brew_house-abbey_8,0,0,244867596289,"{""name"":""Abbey 8"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+elk_creek_cafe_and_aleworks-brookie_brown_ale,0,0,244615348226,"{""name"":""Brookie Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_creek_cafe_and_aleworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Proof that all dark beers, like trout, are not created equal. Chocolate and caramel malt flavors are at the heart of this very accessible and drinkable brown ale."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,21,1
+catamount_brewing,0,0,244483489794,"{""name"":""Catamount Brewing"",""city"":""White River Junction"",""state"":""Vermont"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.649,""lon"":-72.3193}}",1,23,1
+iron_springs_pub_brewery-casey_jones_imperial_ipa,0,0,244744781825,"{""name"":""Casey Jones Imperial IPA"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,26,1
+atlanta_brewing_company,0,0,244375158786,"{""name"":""Atlanta Brewing Company"",""city"":""Atlanta"",""state"":""Georgia"",""code"":""30318"",""country"":""United States"",""phone"":""404-355-5558"",""website"":""http://www.atlantabrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2323 Defoor Hills Rd NW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.818,""lon"":-84.4353}}",1,44,1
+water_street_lake_country,0,0,245751480321,"{""name"":""Water Street Lake Country"",""city"":""Delafield"",""state"":""Wisconsin"",""code"":""53018"",""country"":""United States"",""phone"":""1-262-646-7878"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3191 Golf Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0525,""lon"":-88.3663}}",1,53,1
+brasserie_de_blaugies-moneuse_speciale_noel,0,0,244376010753,"{""name"":""Moneuse Speciale Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_blaugies"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+la_jolla_brew_house-wheat,0,0,244745306112,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,27,1
+granville_island_brewing_company-hefeweizen,0,0,244742029312,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granville_island_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,20,1
+st_francis_abbey_brewery-smithwick_s,0,0,245124038657,"{""name"":""Smithwick's"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_francis_abbey_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,63,1
+arcadia_brewing-arcadia_esb,0,0,244376338433,"{""name"":""Arcadia ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+diamond_bear_brewing_co-southern_blonde,0,0,244615872512,"{""name"":""Southern Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_bear_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+schlossbru-weizen,0,0,244993818625,"{""name"":""Weizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlossbru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,32,1
+brasserie_brouwerij_cantillon-vigneronne,0,0,244376207365,"{""name"":""Vigneronne"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":""The name Vigneronne Cantillon was given in 1987. This name reminds us that, while it belongs to the beer patrimony, the spontaneous fermentation, the ageing in the barrels for several years and the addition of grapes make it a distant cousin of certain white wines.\r\n\r\nIn spite of its success, the Vigneronne represents less than 5% of the total production of the Cantillon brewery. In order to obtain grapes which are as mature as possible, we buy them at the end of the season. Every year, 1000 kilos of white italian grapes are delivered at the Cantillon brewery in the beginning of October."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,47,1
+moon_river_brewing_company-wild_wacky_wit,0,0,244867334145,"{""name"":""Wild Wacky Wit"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Wit (white) beer is an old style Belgian wheat-ale, spiced with Curacao bitter orange peel and corriander. Light and exotic... A party in your mouth!"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,24,1
+michigan_brewing-celis_white,0,0,244867661824,"{""name"":""Celis White"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This traditional Belgian Whitbierre is the multiple gold medal winning Pierre Celis original. White and cloudy in appearance, brewed with wheat and seasoned with orange peel and coriander. A refreshing unfiltered ale that is both sweet and tart."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,25,1
+f_x_matt_brewing-saranac_scotch_ale,0,0,244615413760,"{""name"":""Saranac Scotch Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Scotch Ale is a full-bodied, malty sweet ale. True to Scottish brewing tradition, this malty flavor and deep copper brown color are a result of Scottish two row malt and roasted barley."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,21,1
+cherryland_brewing-apple_bach,0,0,244483555328,"{""name"":""Apple Bach"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cherryland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,23,1
+iron_springs_pub_brewery-chazz_cat_rye,0,0,244744847360,"{""name"":""Chazz Cat Rye"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+barfer_das_kleine_brauhaus,0,0,244375224320,"{""name"":""Barfer - das kleine Brauhaus"",""city"":""Ulm"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)731-/-6021110"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lautenberg 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.3979,""lon"":9.9899}}",1,44,1
+wdi_bru_huus-ur_pils,0,0,245751480322,"{""name"":""Ur-Pils"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,53,1
+brasserie_grain_d_orge-belzebuth,0,0,244493123584,"{""name"":""Belzebuth"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_grain_d_orge"",""updated"":""2010-07-22 20:00:20"",""description"":""Beer of top fermentation, Belzebuth represents the achievement of a more than one hundred year-old know-how, the one of the Brewery Grain d'Orge. Under its copper colour, it hides a strong character for the lovers of sensations. It owes its strength to the subtle mixture of pure malts, hops and yeasts especially selected by our Master-Brewer.\r\n\r\nAt one time this beer was 15%. After the name change it was lowered to 13%."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,46,1
+lancaster_brewing_co-rare_rooster_summer_rye_ale,0,0,244745306113,"{""name"":""Rare Rooster Summer Rye Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Extra Pale Ale with a subtle Rye flavor, this beer Pours a light orange-amber color with a thin light beige head. A refreshing summer beer.\r\n\r\nAvailable at the Brewery from April - September"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+green_bay_brewing-hinterland_weizen_bier,0,0,244742094848,"{""name"":""Hinterland Weizen Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,20,1
+stieglbrauerei_zu_salzburg_gmbh-stiegl_goldbrau,0,0,245124038658,"{""name"":""Stiegl Goldbräu"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""This wonderfully refreshing beer specialty from Stiegl, Austria’s largest privately owned brewery is brewed in strict adherence with the 1516 purity law of only using water, malt and hops. Stiegl-Goldbräu is an Austrian styled beer with its own distinctive Salzburg lager flavor. The 12o original gravity is unparalleled in its even taste and ability to refresh. It is mildly hopped is golden in color has a great head with a superb finish. Stiegl-Goldbräu is considered by many connoisseurs to be the world’s finest beer."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,63,1
+arthur_guinness_son-harp_lager,0,0,244376403968,"{""name"":""Harp Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arthur_guinness_son"",""updated"":""2010-07-22 20:00:20"",""description"":""The best selling premium irish import lager in the world today.  This rich, golden pilsner style lager, with a smooth, refreshing hoppy taste, is brewed the irish way, using only the finest barley and pure spring water from the Cooley Mountains of Dundalk, Ireland."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+diebels_privatbrauerei,0,0,244615872513,"{""name"":""Diebels Privatbrauerei"",""city"":""Issum"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)2835-/-30-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brauerei-Diebels-Strae 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.5331,""lon"":6.4213}}",1,22,1
+sherlock_s_home-gold_crown_lager,0,0,244993818626,"{""name"":""Gold Crown Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sherlock_s_home"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brasserie_de_silly-la_divine_tripel_amber,0,0,244376272896,"{""name"":""La Divine Tripel Amber"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silly"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+new_belgium_brewing-new_belgium_trippel_belgian_style_ale,0,0,244867334146,"{""name"":""New Belgium Trippel Belgian Style Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Trippel Belgian Style Ale (pronounced triple) opens with a bold blast of hops that slowly gives way to the fruity esters implied by our Belgian yeast strain. The Three Graces hand-painted on the label are Zeus’s daughters Aglaia (splendor), Euphrosyne (mirth) and Thalia (good cheer). In the Belgian tradition of brewing singles, doubles and triples, Trippel is the strongest with the longest fermentation. Remarkably smooth and complex, our bottle-conditioned Trippel is spiced with a trace of coriander."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,24,1
+mudshark_brewing-full_moon_belgian_white_ale,0,0,244867661825,"{""name"":""Full Moon Belgian White Ale"",""abv"":7.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mudshark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgium Wheat Ale, Spiced With Orange Reel & Coriander, Strong & Smooth"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,25,1
+fish_brewing_company_fish_tail_brewpub-whistling_pig_hefeweizen,0,0,244615413761,"{""name"":""Whistling Pig Hefeweizen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+coast_range_brewing,0,0,244483555329,"{""name"":""Coast Range Brewing"",""city"":""Gilroy"",""state"":""California"",""code"":""95020"",""country"":""United States"",""phone"":""1-408-842-1000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7050 Monterey Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.0013,""lon"":-121.566}}",1,23,1
+klosterbrauerei_weltenburg-barock_dunkel,0,0,244744847361,"{""name"":""Barock-Dunkel"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_weltenburg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+barley_john_s_brewpub-dark_knight,0,0,244375224321,"{""name"":""Dark Knight"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+widmer_brothers_brewing,0,0,245751545856,"{""name"":""Widmer Brothers Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":""97227"",""country"":""United States"",""phone"":""1-503-281-2437"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""929 North Russell Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.5408,""lon"":-122.676}}",1,53,1
+brauerei_spezial-rauchbier_weissbier,0,0,244493123585,"{""name"":""Rauchbier Weissbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_spezial"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+left_coast_brewing-pale,0,0,244745371648,"{""name"":""Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+hansa_bryggeri-fatol,0,0,244742094849,"{""name"":""Fatøl"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hansa_bryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+stone_brewing_co-ruination_ipa,0,0,245124038659,"{""name"":""Ruination IPA"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,63,1
+barley_island_brewing-whose_ear_red_ale,0,0,244376403969,"{""name"":""Whose Ear? Red Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+dix_barbecue_brewery-tropical_lager,0,0,244615872514,"{""name"":""Tropical Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dix_barbecue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,22,1
+sierra_nevada_brewing_co-celebration_ale,0,0,244993884160,"{""name"":""Celebration Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nThe long, cold nights of winter are a little brighter with Celebration® Ale. Wonderfully robust and rich, Celebration® Ale is dry-hopped for a lively, intense aroma. Brewed especially for the holidays, it is perfect for a festive gathering or for a quiet evening at home. \r\n\r\n"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,32,1
+amherst_brewing_company-massatucky_brown,0,0,244374306816,"{""name"":""Massatucky Brown"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Light brown medium bodied ale. Smooth, malty and slightly roasted flavor."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,42,1
+brewery_at_martha_s_vineyard-extra_stout,0,0,244493647872,"{""name"":""Extra Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_at_martha_s_vineyard"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,47,1
+new_holland_brewing_company-sundog,0,0,244867399680,"{""name"":""Sundog"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Sundog is an amber ale as deep as the copper glow of a Lake Michigan sunset. Its biscuit malt give Sundog a toasty character and a subtle malty sweetness. Sundog brings out the best in grilled foods, caramelized onions, nutty cheese, barbecue, or your favorite pizza."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,24,1
+new_belgium_brewing-frambozen,0,0,244867727360,"{""name"":""Frambozen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,25,1
+flyers_restraunt_and_brewery-afterburner_ipa,0,0,244615413762,"{""name"":""Afterburner IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A hop lover's delight!  Our I.P.A. is loaded with Ahtanum, Tohmahawk, Palisade, East Kent, Goldings and finished with the ever popular Cascades, balanced with generous amounts of floor malted crisp Maris Otter barley."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,21,1
+coniston_brewing,0,0,244483555330,"{""name"":""Coniston Brewing"",""city"":""Coniston"",""state"":""Cumbria"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01539)-441133"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Coppermines Road""]}",1,23,1
+kona_brewing-lilikoi_wheat_ale,0,0,244744912896,"{""name"":""Lilikoi Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,26,1
+bbc_brewing_co_llc-american_pale_ale,0,0,244375224322,"{""name"":""American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bbc_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+abita_brewing_company-fall_fest,0,0,244374765568,"{""name"":""Fall Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Abita Fall Fest is an Octoberfest lager available September-November. It is brewed with German Hersbrucker hops and pale, crystal and chocolate malts.\r\n\r\nThe result is a full-bodied, malty beer with a strong hop character and a beautiful amber color.\r\n\r\nCelebrate the season with Abita Fall Fest and your favorite German food"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,43,1
+wye_valley_brewery,0,0,245751611392,"{""name"":""Wye Valley Brewery"",""city"":""Stoke Lacy"",""state"":""Hereford and Worcester"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01885)-490505"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Stoke Lacy HR7 4HG""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.1496,""lon"":-2.5507}}",1,53,1
+breckenridge_bbq_of_omaha-avalanche_amber,0,0,244493189120,"{""name"":""Avalanche Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_bbq_of_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,46,1
+liberty_steakhouse_and_brewery-liberty_pale_ale,0,0,244745371649,"{""name"":""Liberty Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This copper-colored ale has an intense bitterness and a floral hop aroma. Hops added during aging contribute to its distinct dryness."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+hereford_hops_steakhouse_and_brewpub_3-esb,0,0,244742094850,"{""name"":""ESB"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+stout_brothers_public_house,0,0,245124104192,"{""name"":""Stout Brothers Public House"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0389,""lon"":-87.9065}}",1,63,1
+barley_s_casino_brewing_company-sublimator_doppelbock,0,0,244376403970,"{""name"":""Sublimator Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_s_casino_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,48,1
+dogfish_head_craft_brewery-festina_peche,0,0,244615938048,"{""name"":""Festina Pêche"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing neo-BerlinerWeisse fermented with honest-to-goodness peaches to (get this!) 4.5% abv! Because extreme beers don't have to be extremely boozy! Available in 4-pack and draft during the sweaty months.""}",1,22,1
+sierra_nevada_brewing_co-celebration_ale_1992,0,0,244993884161,"{""name"":""Celebration Ale 1992"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,32,1
+anderson_valley_brewing-barney_flats_oatmeal_stout,0,0,244374372352,"{""name"":""Barney Flats Oatmeal Stout"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""With its deep, dark brown-black color, thick, full-bodied, velvety-smooth mouth feel, mocha character, and, strong yet subtle hop bite,  Barney Flats Oatmeal Stout  is one of the thickest, richest, and most complex stouts on the market today. In 1990, it became our first gold medal winner, at the Great American Beer Festival.  Barney Flats  was judged so superior to the other stouts that no other medals were even awarded in its catagory. Try it and see why Stewart Kallen described it as, \""Slippery, creamy, dark, and sweet as a Pacific May morning,\"" in his book,  The 50 Greatest Beers in the World\r\n\r\nBarney Flats Oatmeal Stout Most recently won the Silver Medal at the 2004 World Beer Cup® and the Bronze Medal at the 2004 GABF , as well as several other medals . Click the blue ribbon to see the entire list.\r\n\r\nAs with all of our products, Barney Flats Oatmeal Stout is never sterile filtered nor heat pasteurized, and should be stored in refrigeration. However, to fully enjoy its rich and complex flavor, it should be served between 40° and 45°F"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+brewery_corsendonk,0,0,244493713408,"{""name"":""Brewery Corsendonk"",""city"":""Oud-Turnhout"",""state"":""Antwerpen"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Steenweg op Mol 118""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.3144,""lon"":4.989}}",1,47,1
+new_holland_brewing_company-zoomer,0,0,244867399681,"{""name"":""Zoomer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing wheat ale, Zoomer is brewed to quench your summer thirst. American-grown wheat provides Zoomer's straw color and its soft, clean body. With subtle, yet flavorful hints of citrus fruit in its finish, Zoomer is the perfect companion to all things summer. Food pairings include artisan cheeses, fresh greens, fish and chicken."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,24,1
+new_river_brewing-pale_ale,0,0,244867727361,"{""name"":""Pale Ale"",""abv"":5.52,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+four_peaks_brewing-alt_ball_and_chain,0,0,244615479296,"{""name"":""Alt Ball and Chain"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer was brewed in honor of our brewer Melissa's wedding to fellow brewer Derek Osbourne of B.J.'s in Chandler. The Alt Ball and Chain is a German Altbier. These beers are generally full-bodied with sweet malt flavor. The crispness, dry finish, and moderate hop aroma make an alt a great beer for summertime enjoyment. Our Alt has been lagering in our cellar for two weeks and contains 5.2% abv."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,21,1
+coopers_brewery-coopers_original_pale_ale,0,0,244483620864,"{""name"":""Coopers Original Pale Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Guaranteed to turn heads, this is the beer that inspired a new generation of ale drinkers. With its fruity character, and robust flavour, Coopers Pale Ale is perfect for every occasion. \r\n\r\nNaturally fermented in the 'Burton-on-Trent' style, a secondary fermentation creates the trademark sediment that gives 'Pale' its fine cloudy appearance. This cloudy residue can be stirred through the beer by tipping or rolling the bottle before drinking. \r\n\r\nPale Ale has no additives or preservatives."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,23,1
+liberty_steakhouse_and_brewery-miss_liberty_lager,0,0,244744912897,"{""name"":""Miss Liberty Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is an all-malt lager, brewed with a subtle blend of German hops. Cool fermentation, followed by extended aging, produces a delicate and mild flavor."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+belize_brewing-belikin_stout,0,0,244375289856,"{""name"":""Belikin Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belize_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,44,1
+adnams_co-adnams_fisherman,0,0,244374831104,"{""name"":""Adnams Fisherman"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""adnams_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The Winter seasonal from Adnams, Fisherman is described as an old ale. If your local pub has the good sense to serve cask beer, look for Fisherman on draught from January through March.\r\n\r\nClean and refreshing yet dark and mysterious, Fisherman is a deep coppery red, conjuring roasted nuts and dark chocolate, with a lingering taste of liquorice and dried fruits."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+broad_ripple_brewing-red,0,0,244493189121,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,46,1
+long_trail_brewing_co-long_trail_hefeweizen,0,0,244868251648,"{""name"":""Long Trail Hefeweizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Here is our \""Wheat Beer with Yeast\"", or Hefeweizen. Beers brewed with a high proportion of wheat yield a crisp and refreshing flavor profile, while the addition of our special yeast adds a blend of complex citrus and spice flavors."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,27,1
+hoepfner_privatbrauerei,0,0,244742160384,"{""name"":""Hoepfner Privatbrauerei"",""city"":""Karlsruhe"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)721-/-6183-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Haid-und-Neu-Strae 18""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.0125,""lon"":8.4264}}",1,20,1
+strangford_lough_brewing_company_ltd-st_patrick_s_ale,0,0,245124104193,"{""name"":""St Patrick's Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""strangford_lough_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""A deep copper coloured traditional Irish Ale with highly developed and complex flavours. St Patrick’s Ale/Dark is brewed with four malts and two hops, carefully married together to complement eachother producing a satisfying full flavour, ending with a Styrian late hop for a truly brilliant finish."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,63,1
+bayerische_staatsbrauerei_weihenstephan-hefe_weissbier,0,0,244376469504,"{""name"":""Hefe Weissbier"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayerische_staatsbrauerei_weihenstephan"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,48,1
+dogfish_head_craft_brewery-red_white,0,0,244615938049,"{""name"":""Red & White"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A big, belgian-style Wit brewed with coriander and orange peel and fermented with Pinot Noir juice. After fermentation a fraction of the batch is aged in Oregon Pinot Noir barrels, and another fraction is aged on oak staves. The beer is blended together before packaging.\r\n\r\nThis has been one of our most popular Limited Edition beers at both our Rehoboth Beach, DE brewpub and at festivals. It successfully marries the refreshing citrusy qualities of a Belgian-style white beer with the robust complexity of a bold red wine."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,22,1
+skagit_river_brewing-dutch_girl_lager,0,0,244993949696,"{""name"":""Dutch Girl Lager"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+appalachian_brewing_company-peregrine_pilsner,0,0,244374372353,"{""name"":""Peregrine Pilsner"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Czechoslovakian style Pilsner is golden in color and hopped with a bunch of genuine Czechoslovakian Saaz hops. These hops provide a special floral aroma and a delightfully hoppy finish.\r\nPeregrine Falcons were recently reintroduced to the Harrisburg area as well as other large cities in Pennsylvania. This Falcon is one of the fastest birds, reaching speeds in excess of 200 miles per hour. Its unique ability to rid urban areas of its nemesis, the pigeon, has cities throughout the region clamoring for the Peregrine as a permanent resident."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,42,1
+brewery_ommegang,0,0,244493713409,"{""name"":""Brewery Ommegang"",""city"":""Cooperstown"",""state"":""New York"",""code"":""13326"",""country"":""United States"",""phone"":""1-800-544-1809"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""656 County Highway 33""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.6818,""lon"":-74.9255}}",1,47,1
+northwoods_brewpub_grill-bandit_brown,0,0,244867399682,"{""name"":""Bandit Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,24,1
+new_road_brewhouse-peckiomen_pils,0,0,244867792896,"{""name"":""Peckiomen Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_road_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+fratellos_restaurant_and_brewery-what_the_helles_bock,0,0,244615544832,"{""name"":""What the Helles Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,21,1
+copper_eagle_brewing-copper_wheat,0,0,244483620865,"{""name"":""Copper Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_eagle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+long_trail_brewing_co-hibernator,0,0,244867858432,"{""name"":""Hibernator"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This robust and malty brew will take the bite from a cold winter night."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,26,1
+big_ridge_brewing,0,0,244375289857,"{""name"":""Big Ridge Brewing"",""city"":""Surrey"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-574-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""15133 Highway 10""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.1049,""lon"":-122.69}}",1,44,1
+alameda_brewhouse-irvington_porter,0,0,244374896640,"{""name"":""Irvington Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alameda_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+brouwerij_de_landtsheer,0,0,244493189122,"{""name"":""Brouwerij De Landtsheer"",""city"":""Buggenhout"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-052-33-39-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Mandekenstraat 179""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.0228,""lon"":4.1572}}",1,46,1
+meantime_brewing_company_limited,0,0,244868317184,"{""name"":""Meantime Brewing Company Limited"",""city"":""Greenwich"",""state"":""London"",""code"":""SE7 8RX"",""country"":""United Kingdom"",""phone"":""44-(020)-8293-1111"",""website"":""http://www.meantimebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2 Penhall Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.4899,""lon"":0.038}}",1,27,1
+hofbru_kaltenhausen_salzachtal-edelweiss_hefetrub,0,0,244742160385,"{""name"":""Edelweiss Hefetrüb"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hofbru_kaltenhausen_salzachtal"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,20,1
+summit_brewing,0,0,245124104194,"{""name"":""Summit Brewing"",""city"":""Saint Paul"",""state"":""Minnesota"",""code"":""55102"",""country"":""United States"",""phone"":""1-651-265-7800"",""website"":""http://www.summitbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""910 Montreal Circle""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.9139,""lon"":-93.1396}}",1,63,1
+bell_s_brewery_inc-amber_ale,0,0,244376469505,"{""name"":""Amber Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship beer is made from mostly pale malt with some Munich and caramel malts. This gives it a slightly sweet flavor that is balanced by a melange of American hops. The result is a deep copper color and rich flavor."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+drake_s_brewing,0,0,244616003584,"{""name"":""Drake's Brewing"",""city"":""San Leandro"",""state"":""California"",""code"":""94577"",""country"":""United States"",""phone"":""1-510-562-0866"",""website"":""http://drinkdrakes.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1933 Davis Street #177""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.7176,""lon"":-122.182}}",1,22,1
+skagit_river_brewing,0,0,244994015232,"{""name"":""Skagit River Brewing"",""city"":""Mount Vernon"",""state"":""Washington"",""code"":""98273"",""country"":""United States"",""phone"":""1-360-336-2884"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""404 South Third Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.4192,""lon"":-122.335}}",1,32,1
+appleton_brewing-adler_brau_marquette_pilsner,0,0,244374437888,"{""name"":""Adler Bräu Marquette Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+bridgeport_brewing-bridgeport_india_pale_ale,0,0,244493778944,"{""name"":""Bridgeport India Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our award-winning IPA sparkles with effervescence, the result of natural-conditioning, a process where the beer is double-fermented in each bottle, keg or cask. Brewed with a blend of five hop varieties, BridgePort IPA presents a floral, citrusy aroma and full hop flavor, while downplaying the bitterness.  The beer pours smooth in the glass, emitting its signature golden glow."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+orchard_street_brewery,0,0,244867465216,"{""name"":""Orchard Street Brewery"",""city"":""Bellingham"",""state"":""Washington"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":48.7596,""lon"":-122.488}}",1,24,1
+olde_peninsula_brewpub_and_restaurant,0,0,244867792897,"{""name"":""Olde Peninsula Brewpub and Restaurant"",""city"":""Kalamazoo"",""state"":""Michigan"",""code"":""49007"",""country"":""United States"",""phone"":""1-269-343-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 East Michigan Avenue""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":42.2936,""lon"":-85.5778}}",1,25,1
+frstliche_brauerei_thurn_und_taxis_regensburg-schierlinger_roggen,0,0,244615544833,"{""name"":""Schierlinger Roggen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""frstliche_brauerei_thurn_und_taxis_regensburg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+duclaw-hellrazer,0,0,244616331264,"{""name"":""Hellrazer"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duclaw"",""updated"":""2010-07-22 20:00:20"",""description"":""From the first sip this American-style India Pale Ale gets in your face with an unruly hop bitterness, big floral flavors and aroma, and just enough malt character to keep you from giving in and acting up."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+mad_river_brewing-steelhead_extra_stout,0,0,244867923968,"{""name"":""Steelhead Extra Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,26,1
+birra_moretti-birra_moretti_la_rossa,0,0,244375289858,"{""name"":""Birra Moretti La Rossa"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birra_moretti"",""updated"":""2010-07-22 20:00:20"",""description"":""Birra Moretti La Rossa is a double boch beer produced using high quality 100% malted barley, giving it a rich sweet taste and an intense fragrance of roasted malt. The amber color that characterizes the beer, comes from the kind of malt used in the recipe (malt is dried, roasted barley). Another key ingredient is hops, the variety used is particularly aromatic, giving a characteristic bitter aftertaste and a delicate fragrance to the beer. The Master Brewers advise a service temperature between 10° and 12° C."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,44,1
+allguer_brauhaus_ag_kempten-winterfestival,0,0,244374896641,"{""name"":""Winterfestival"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allguer_brauhaus_ag_kempten"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,43,1
+brouwerij_der_sint_benedictusabdij_de_achelse_kluis-achel_blond_5,0,0,244493254656,"{""name"":""Achel Blond 5°"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_der_sint_benedictusabdij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,46,1
+middle_ages_brewing-dragonslayer,0,0,244868317185,"{""name"":""Dragonslayer"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the style of a Russian Imperial Stout. Strong, chocolatety and aggressively hopped with finest English hops."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,27,1
+hoffbrau_steaks_brewery_1-windmill_wheat_ale,0,0,244742160386,"{""name"":""Windmill Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,20,1
+the_narragansett_brewing_company,0,0,245124169728,"{""name"":""The Narragansett Brewing Company"",""city"":""Providence"",""state"":""Rhode Island"",""code"":""2903"",""country"":""United States"",""phone"":""401.437.8970"",""website"":""http://www.narragansettbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Famous New England Brand, went defunct in the 1980's but has been revived in 2005, with a tasty lager. Locally available in New England"",""address"":[""60 Ship Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.819,""lon"":-71.4097}}",1,63,1
+big_boss_brewing_company,0,0,244376469506,"{""name"":""Big Boss Brewing Company"",""city"":""Raleigh"",""state"":""North Carolina"",""code"":""27604"",""country"":""United States"",""phone"":""919-834-0045"",""website"":""http://www.bigbossbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1249-A Wicker Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.8104,""lon"":-78.6179}}",1,48,1
+east_end_brewing_company,0,0,244616003585,"{""name"":""East End Brewing Company"",""city"":""Pittsburgh"",""state"":""Pennsylvania"",""code"":""15208"",""country"":""United States"",""phone"":""412-537-2337"",""website"":""http://www.eastendbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6923 Susquehanna St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.4553,""lon"":-79.9043}}",1,22,1
+stoudt_s_brewery-abbey_triple,0,0,245111848960,"{""name"":""Abbey Triple"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Triple is a strong, full-bodied Belgian abbey-style ale. The authentic Belgian yeast strain used in fermentation contributes to a rich array of spicy, phenolic, and fruit-like flavors and noticeable alcoholic warmth. This unfiltered ale has an irresistible pale orange-colored hazy glow."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,32,1
+augustiner_brau_munchen-edelstoff,0,0,244374437889,"{""name"":""Edelstoff"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""augustiner_brau_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+brouwerij_de_dolle_brouwers-dulle_teve_mad_bitch,0,0,244493778945,"{""name"":""Dulle Teve / Mad Bitch"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_dolle_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+oskar_blues_grill_and_brew-ten_fidy,0,0,244867465217,"{""name"":""Ten Fidy"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Ten FIDY Imperial Stout - Now (11-21-07) available in cans, our winter seasonal beer is immensely viscous and loaded with neck-deep flavors of chocolate, malt, coffee, cocoa and oats.\r\n\r\nIt's the beer equivalent of decadently rich milkshake made with malted-milk balls and Heaven’s best chocolate ice cream. Ten FIDY is about 10% ABV and is made with enormous amounts of two-row malts, chocolate malts, roasted barley, flaked oats and hops. Its huge-but-comforting flavors hide a whopping 98 IBUs that are deftly tucked underneath the beer’s mountains of malty goodness.\r\n\r\nTen FIDY is the ultimate Rocky Mountain winter warmer, and further proof of the creative muscle of our beloved brewing staff. Look for fourpacks of Ten FIDY in select beer stores in Colorado. Out of state? We hope to send a few cases to a few of our other states in early '08."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,24,1
+on_tap_bistro_brewery-golden_triangle_triple,0,0,244867792898,"{""name"":""Golden Triangle Triple"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+full_sail_brewing_1-session_premium_lager,0,0,244615544834,"{""name"":""Session Premium Lager"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+elk_creek_cafe_and_aleworks,0,0,244616331265,"{""name"":""Elk Creek Cafe and Aleworks"",""city"":""Millheim"",""state"":""Pennsylvania"",""code"":""16854"",""country"":""United States"",""phone"":""(814) 349-8850"",""website"":""http://www.elkcreekcafe.net/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Head Brewer Tim Yarrington makes beers that people want to drink.  With over 12 years brewing experience under his belt, founding the brewery operations at Long Valley Pub & Brewery in New Jersey and resurrecting Time Square Brewery in Manhatten, Brewer Tim brings a good sense of what beers people enjoy drinking to Elk Creek Aleworks.  Winning Gold and Bronze medals for his Porter and Bitter at the prestigous Great American Beer Festival attests to the fact that his peers also think he makes great beer. Drawing inspiration primarily from traditional English ale brewing, Tim makes balanced beers, giving both malt and hops prominence in every pint.  In addition to our rotating selection of seasonal brews, we offer six outstanding House Standards year 'round.  Without doubt, there's a pint for you!"",""address"":[""100 West Main Street PO Box 432""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.8911,""lon"":-77.477}}",1,23,1
+marquette_harbor_brewery_and_restaurant-canadian_blonde_ale,0,0,244867923969,"{""name"":""Canadian Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marquette_harbor_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+birrificia_le_baladin-noel,0,0,244375289859,"{""name"":""Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birrificia_le_baladin"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,44,1
+anheuser_busch-michelob_pale_ale,0,0,244374896642,"{""name"":""Michelob Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+brouwerij_duysters,0,0,244493254657,"{""name"":""Brouwerij Duysters"",""city"":""Diest"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-013-77-10-07"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Michel Theysstraat 58A""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9882,""lon"":5.0554}}",1,46,1
+middle_ages_brewing-im_paled_ale,0,0,244868382720,"{""name"":""Im Paled Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A complex and artistically balanced multi-layered IPA (India Pale Ale) with an intense finish of cascade hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,27,1
+abita_brewing_company-andygator,0,0,244373454848,"{""name"":""Andygator"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Andygator is a fearsome beast...much too big for any little bottle. Don't let his toothy grin, slightly sweet flavor and subtle fruit aroma fool you: this cold-blooded creature is a Helles Doppelbock that can sneak up on you. Sip, don't gulp and taste the wild of Abita Andygator"",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,40,1
+hoppin_frog_brewery-outta_kilter_wee_heavy_scotch_red_ale,0,0,244742225920,"{""name"":""Outta Kilter Wee-Heavy Scotch Red Ale"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich, malty flavors of caramelized and toasted grains dominate this strong Scotch ale. A hint of rye adds a crisp, Scotch-like, old-world beer character, reminiscent of a simpler life from centuries ago. “It is a wee bit heavy”"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,20,1
+thirsty_dog_brewing,0,0,245124169729,"{""name"":""Thirsty Dog Brewing"",""city"":""Akron"",""state"":""Ohio"",""code"":""44311"",""country"":""United States"",""phone"":""330-252-2739"",""website"":""http://www.thirstydog.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Here at the Thirsty Dog Brewing Company, full flavor, delicate balance, texture & aroma combine to make beer an infinitely complex experience, and one that can be thoroughly enjoyable. Each of our beers are meticulously hand crafted in small batches using the finest ingredients. High quality malted barley is the source of the beer's sweetness & body. Select American & European hops are used to balance the malt sweetness, and , at times, add special flavors & aromas to the beer. Our careful selection of ingredients, along with specially designed recipes & brewing processes, give Thirsty Dog beers their unique flavor profiles that can be hard to find in today's mass market. one size fits all society. Our microbrewed beers are far more diverse in range and character then the small spectrum of mass-marketed beers offered to the American public by the large national breweries. Enjoy the diversity, Unleash the flavor today., Welcome to Thirsty Dog Brewing Company, and welcome to great beer!"",""address"":[""529 Grant St. Suite B""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.0689,""lon"":-81.5172}}",1,63,1
+big_hole_brewing,0,0,244376469507,"{""name"":""Big Hole Brewing"",""city"":""Belgrade"",""state"":""Montana"",""code"":""59714"",""country"":""United States"",""phone"":""1-800-793-6656"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""401 East Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.7736,""lon"":-111.172}}",1,48,1
+edelweissbrauerei_farny-hofgutsbier,0,0,244616134656,"{""name"":""Hofgutsbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""edelweissbrauerei_farny"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+sudwerk_privatbrauerei_hbsch,0,0,245111848961,"{""name"":""Sudwerk Privatbrauerei Hbsch"",""city"":""Davis"",""state"":""California"",""code"":""95616"",""country"":""United States"",""phone"":""1-530-756-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2001 Second Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.5472,""lon"":-121.726}}",1,32,1
+augustiner_brau_munchen-maximator,0,0,244374503424,"{""name"":""Maximator"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""augustiner_brau_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,42,1
+cape_ann_brewing,0,0,244493844480,"{""name"":""Cape Ann Brewing"",""city"":""Gloucester"",""state"":""Massachusetts"",""code"":""1930"",""country"":""United States"",""phone"":""1-866-233-7636"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""27 Commercial Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.6102,""lon"":-70.6664}}",1,47,1
+oskar_blues_grill_and_brew,0,0,244867465218,"{""name"":""Oskar Blues Grill and Brew"",""city"":""Lyons"",""state"":""Colorado"",""code"":""80540"",""country"":""United States"",""phone"":""1-303-823-6685"",""website"":""http://www.oskarblues.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""303 Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.2246,""lon"":-105.268}}",1,24,1
+orkney_brewery-dark_island,0,0,244867858432,"{""name"":""Dark Island"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orkney_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark Island is an iconic beer: a standard-bearer for traditional Scottish ales. In cask, this beer has twice won CAMRA’s Champion Beer of Scotland.\r\nOn the nose, this dark beer offers bitter chocolate, figs, toffee and hints of fruit.\r\n\r\nOn the palate, this resolves into beautiful, silky-smooth, coffee-and-chocolate flavours, followed by figs, dates and dried fruits, with a very appealing, lingering aftertaste of fruits and hop bitterness."",""style"":""Scottish-Style Light Ale"",""category"":""British Ale""}",1,25,1
+goose_island_beer_company_clybourn-blonde_ale,0,0,244615610368,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+ettaler_klosterbetriebe_abteilung_brauerei_destillerie-kloster_edel_hell,0,0,244616396800,"{""name"":""Kloster Edel-Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ettaler_klosterbetriebe_abteilung_brauerei_destillerie"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+marzoni_s_brick_oven_brewing_co,0,0,244867923970,"{""name"":""Marzoni's Brick Oven & Brewing Co"",""city"":""Duncansville"",""state"":""Pennsylvania"",""code"":""16635"",""country"":""United States"",""phone"":""814-695-2931"",""website"":""http://www.marzonis.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Marzoni's beers are brewed on premise, utilizing the finest ingredients available. Beers brewed at Marzoni's are dispensed directly from our chilled serving tanks to the tap stations on the bar for the freshest beer around! On any given day, there are at least 8 beers on tap, not to mention house-brewed root beer. Brewery tours are available!"",""address"":[""165 Patchway Road""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.4234,""lon"":-78.4339}}",1,26,1
+blue_cat_brew_pub-big_bad_dog_old_english_ale,0,0,244375289860,"{""name"":""Big Bad Dog Old English Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_cat_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,44,1
+appalachian_brewing_company-water_gap_wheat,0,0,244374896643,"{""name"":""Water Gap Wheat"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This light refreshing wheat beer is sure to delight. Our special yeast and blend of malted and unmalted wheat provide the haze in our unfiltered style ale. This beer is traditionally served with a lemon slice on the side. \r\nThere are many water gaps along the Appalachian Trail. These water gaps were established where large rivers cut through the Appalachian Mountain Range. The Susquehanna River creates one of the more visually appealing water gaps just north of Harrisburg in the area at the Dauphin Narrows."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,43,1
+brouwerij_het_anker-grand_cru_of_the_emperor,0,0,244493320192,"{""name"":""Grand Cru of the Emperor"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_het_anker"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+midnight_sun_brewing_co-greed,0,0,244868382721,"{""name"":""Greed"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With a summer release in mind, GREED Belgian-style Single was created miserly—relatively speaking—with one type of malt and two varieties of hops. At 5% ABV and 30 IBUs, Greed is the lightest in our series of 2007 Deadly Sin Beers. However, the Belgian yeast used in fermentation and conditioning contributes an earthy, somewhat spicy flavor and a crisp finish. We invite you to be greedy before it’s gone. \r\n\r\nGREED...Less [for you] is More [for me]."",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,27,1
+alaskan_brewing-alaskan_stout,0,0,244373520384,"{""name"":""Alaskan Stout"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Oatmeal Stout. The origins of Oatmeal Stout go back hundreds of years when oats were added to Stouts to promote a healthier image than other beers available during that time period.\r\n\r\nThe unique blend of the oats and malts in Alaskan Stout produce a balanced, smooth beer with hints of coffee and caramel.\r\n\r\nAlaskan Stout is made from glacier-fed water and a generous belnd of European and Pacific Northwest hop varieties and premium two-row and specialty malts. Our water originates in the 1,500 square-mile Juneau Ice Field and the from the more than 90 inches of rainfall Juneau receives each year."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,40,1
+inbev-jupiler,0,0,244742225921,"{""name"":""Jupiler"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""inbev"",""updated"":""2010-07-22 20:00:20"",""description"":""Jupiler is the most famous and most popular beer in Belgium. This delicious lager is brewed with the finest ingredients (malt, maize, water, hop, yeast), using undisputed craftsmanship, ensuring an outstanding beer quality. Jupiler offers refreshment on a wide variety of occasions, thanks to its digestibility and accessible taste. Jupiler (5,2 % ABV) is ideally served at a temperature of 3°C. The low-alcoholic variant Jupiler N.A. (0.5%) should be served at 1-2°C.\r\n\r\nJupiler has an outspoken image of masculinity, courage and adventure. Furthermore, Jupiler understands men like no other brand and shares their best moments. This combination of male bonding, self-confidence and self-relativation, speaks to all men and makes Jupiler an ally on their road through life.\r\n\r\nJupiler is the official sponsor of the highest Belgian football division, the Jupiler League, and also supports the Belgian national football team. Just like football, Jupiler is all about competence and ruggedness, effort and effort reward, team spirit and... festivity!"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,20,1
+three_floyds_brewing-behemoth_barley_wine,0,0,245124235264,"{""name"":""Behemoth Barley Wine"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,63,1
+big_time_brewing-scarlet_fire_ipa,0,0,244376535040,"{""name"":""Scarlet Fire IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+efes_moscow_brewery,0,0,244616134657,"{""name"":""Efes Moscow Brewery"",""city"":""Moskva"",""state"":""Moskva"",""code"":"""",""country"":""Russia"",""phone"":""7-(095)-797-98-00"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""ul. Podolskikh Kursantov, 15 B""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":55.7558,""lon"":37.6176}}",1,22,1
+t_bonz_gill_grill_and_brewery-cooper_river_red,0,0,245111914496,"{""name"":""Cooper River Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_bonz_gill_grill_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,32,1
+bierbrouwerij_de_koningshoeven-la_trappe_enkel_la_trappe_blond,0,0,244374503425,"{""name"":""La Trappe Enkel / La Trappe Blond"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,42,1
+21st_amendment_brewery_cafe,0,0,244373782528,"{""name"":""21st Amendment Brewery Cafe"",""city"":""San Francisco"",""state"":""California"",""code"":""94107"",""country"":""United States"",""phone"":""1-415-369-0900"",""website"":""http://www.21st-amendment.com/"",""type"":""brewery"",""updated"":""2010-10-24 13:54:07"",""description"":""The 21st Amendment Brewery offers a variety of award winning house made brews and American grilled cuisine in a comfortable loft like setting. Join us before and after Giants baseball games in our outdoor beer garden. A great location for functions and parties in our semi-private Brewers Loft. See you soon at the 21A!"",""address"":[""563 Second Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.7825,""lon"":-122.393}}",1,41,1
+carlton_and_united_breweries,0,0,244493844481,"{""name"":""Carlton and United Breweries"",""city"":""Melbourne"",""state"":""Victoria"",""code"":"""",""country"":""Australia"",""phone"":""61-(03)-9342-5511"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""77 Southbank Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-37.8231,""lon"":144.967}}",1,47,1
+oy_sinebrychoff_ab-porter_iv,0,0,244867530752,"{""name"":""Porter IV"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oy_sinebrychoff_ab"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,24,1
+pacific_rim_brewing-rat_city_ipa,0,0,244990803968,"{""name"":""Rat City IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,25,1
+gottberg_brew_pub-fire_in_the_hole,0,0,244615610369,"{""name"":""Fire in the Hole!"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+faultline_brewing_2,0,0,244616462336,"{""name"":""Faultline Brewing #2"",""city"":""Walnut Creek"",""state"":""California"",""code"":""94596"",""country"":""United States"",""phone"":""1-925-938-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.8855,""lon"":-122.033}}",1,23,1
+mendocino_brewing_hopland-frolic_shipwreck_1850_ale,0,0,244867989504,"{""name"":""Frolic Shipwreck 1850 Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,26,1
+boulder_beer_company-mojo_risin_double_ipa,0,0,244375355392,"{""name"":""Mojo Risin' Double IPA"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,44,1
+arcobrau_grafliches_brauhaus-bavarian_dark_wheat_beer,0,0,244374962176,"{""name"":""Bavarian Dark Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcobrau_grafliches_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+brouwerij_rodenbach-grand_cru,0,0,244493385728,"{""name"":""Grand Cru"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_rodenbach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+midnight_sun_brewing_co-saturn_belgian_style_fresh_hop_ipa,0,0,244868382722,"{""name"":""Saturn - Belgian-style Fresh Hop IPA"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""In tribute to its namesake god of agriculture, SATURN celebrates a bountiful Pacific Northwest hop harvest. Ample malt sets the stage for this end-of-season party. Fresh Cascade and Centennial hops from Yakima Valley mingle with Belgian yeasts to impart abundant spice and earthiness."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,27,1
+alpirsbacher_klosterbru-spezial,0,0,244373520385,"{""name"":""Spezial"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alpirsbacher_klosterbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+iron_hill_brewery_wilmingon-iron_hill_belgian_tripel,0,0,244742225922,"{""name"":""Iron Hill Belgian Tripel"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditional Belgian-style golden ale, complex aroma and flavor of plums, spice and bananas with a refreshing balanced bitterness.""}",1,20,1
+timmermans-timmermans_forest_fruit,0,0,245124235265,"{""name"":""Timmermans Forest Fruit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,63,1
+bj_s_restaurant_and_brewery-nit_wit,0,0,244376535041,"{""name"":""Nit Wit"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,48,1
+elysian_brewery_public_house-whoville_weizenbock,0,0,244616134658,"{""name"":""Whoville Weizenbock"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,22,1
+tailgate_beer,0,0,245111980032,"{""name"":""Tailgate Beer"",""city"":""San Diego"",""state"":""California"",""code"":""92155"",""country"":""United States"",""phone"":""619.466.2337"",""website"":""http://www.tailgatebeer.com/indexmain.php"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6648 Reservoir Ln""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.7732,""lon"":-117.055}}",1,32,1
+bierbrouwerij_de_koningshoeven-la_trappe_tripel,0,0,244374503426,"{""name"":""La Trappe Tripel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,42,1
+adnams_co-adnams_explorer,0,0,244373848064,"{""name"":""Adnams Explorer"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""adnams_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A golden bitter suffused with the aromas of a grapefruit grove. The massive citrus attack will burst on your palate allowing all the flavours of the imported New World hops to deliver their fruity bitterness."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,41,1
+cervecera_cuauhtmoc_moctezuma-carta_blanca,0,0,244493910016,"{""name"":""Carta Blanca"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+penn_brewery-penn_dark,0,0,244990476288,"{""name"":""Penn Dark"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Munich and various roasted malts give it a very malty, rich flavor with a hint of burnt flavor. 100% imported Hallertau hops, moderate bitterness and aroma.""}",1,24,1
+port_brewing_company-old_viscosity,0,0,244990869504,"{""name"":""Old Viscosity"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Not your Dad's Wimpy 30 Weight is how our original label used to describe this massive chewy and thick beer. Code named by our brewers-\""The Big Black Nasty,\"" this is monstrous dark ale is brewed to no particular style. Thick and sludgy like oil from the crankcase of a wheat threshing combine, Old Viscosity blurs the boundaries of Porter, Stout, Old Ale and Barleywines.\r\n\r\nA blended beer that mixes old and new brewing traditions into one finished beer, Old Viscosity starts out with 80% of the packaged beer produced from a stainless steel fermentation. It then joins another 20% Barrel Aged Old Viscosity (from a previous batch) that has been aging in bourbon barrels. The blend of the two beers yields an incredibly rich and luscious ale that reveals chocolate and cocoa notes melded to silky body of burnt wood, vanilla and ash.\r\n\r\nMalts- Two Row, Wheat, Domestic and English Crystal, Carafa III and Chocolate Malts\r\nHops- German Magnum \r\nYeast- White Labs California Ale and Proprietary Yeast Strains\r\n\r\nOriginal Gravity- 1.092\r\nTerminal Gravity- 1.014\r\n10.5 % ABV\r\n\r\nDraft- Available in Southern California and Arizona 22 Oz Bottles and Cases- At Port Brewing San Marcos and Pizza Port Carlsbad, San Clemente and Solana Beach and wherever better beers are sold."",""style"":""Old Ale"",""category"":""British Ale""}",1,25,1
+gottberg_brew_pub-irish_porter_discontinued,0,0,244615610370,"{""name"":""Irish Porter (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+firehouse_brewery_restaurant-lemon_wheat,0,0,244616462337,"{""name"":""Lemon Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,23,1
+mercury_brewing_company-ipswich_porter,0,0,244867989505,"{""name"":""Ipswich Porter"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Named due to it's popularity with London railroad porters, it's known for its dark, rich, and roasty notes."",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+brasserie_d_achouffe-houblon,0,0,244375355393,"{""name"":""Houblon"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_achouffe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+ateck_pivovar,0,0,244374962177,"{""name"":""ateck Pivovar"",""city"":""atec"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-415-710-781"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""ikovo nmst 81""]}",1,43,1
+brouwerij_st_bernardus-st_bernardus_tripel,0,0,244493385729,"{""name"":""St. Bernardus Tripel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer, with high fermentation, has a pale amber colour and a flowery, fruity taste with a harmonious balance between sweet and sour (8% alcohol content). \r\nThis beer has a thick and vivid froth and strikes by its balanced taste with a delicate bitterness."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,46,1
+millrose_brewing,0,0,244868448256,"{""name"":""Millrose Brewing"",""city"":""South Barrington"",""state"":""Illinois"",""code"":""60010"",""country"":""United States"",""phone"":""1-847-382-7673"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""45 South Barrington Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.0855,""lon"":-88.1411}}",1,27,1
+anheuser_busch-shock_top,0,0,244373585920,"{""name"":""Shock Top"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Shock Top is an unfiltered Belgian-style wheat ale (also known as a “White” or “Wit” beer due to its appearance) that is naturally cloudy with a billowy white foam head, light golden hue and slight taste of orange citrus peel and coriander."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,40,1
+ithaca_beer_company,0,0,244742291456,"{""name"":""Ithaca Beer Company"",""city"":""Ithaca"",""state"":""New York"",""code"":""14850"",""country"":""United States"",""phone"":""1-607-273-0766"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""600 Elmira Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.4145,""lon"":-76.5315}}",1,20,1
+titletown_brewing-princess_of_darkness_porter,0,0,245124235266,"{""name"":""Princess of Darkness Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,63,1
+boston_beer_company-hard_core_crisp_apple_cider,0,0,244376535042,"{""name"":""Hard Core Crisp Apple Cider"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+fifty_fifty_brewing_co-manifesto_pale_ale,0,0,244616200192,"{""name"":""Manifesto Pale Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""We at FiftyFifty believe that beer is good. Especially this beer. Manifesto is one of FiftyFifty's flagship beers. This beer is a delight for those who take pleasure in craft beers and are looking for something that they can enjoy a few pints of. Manifesto has a restrained malt backbone of flavor with mild biscuit and caramel notes, and the hop character is light to moderate with mild earthiness evolving to a slightly more moderate citrus/piney finish. This is a beer of principle."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+the_blind_bat_brewery_llc-old_walt_smoked_wit,0,0,245111980033,"{""name"":""Old Walt Smoked Wit"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_blind_bat_brewery_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""A smoked wit, you say? \r\nYup. \r\n\r\nResearching smoked beers led me to a world of smoked wheat beers, particularly a smoked wheat beer popular in Poland about 100 years ago. (I'll list that one as one of the Blind Bat beers when I'm happy with the test batches and am ready to offer it to the public.) I didn't find anything about smoked wit beers, but decided to experiment a bit (a wit is a wheat beer). I like it, and hope you will too. \r\n\r\nPictured on the label is Long Island's old Walt Whitman, enjoying a smoke and a book in what is purported to be his favorite spot in his native West Hills. Long Island's springtime is awakening all around him."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,32,1
+bierbrouwerij_de_koningshoeven-quadrupel,0,0,244374503427,"{""name"":""Quadrupel"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+aksarben_brewing_bop-bourbon_imperial_stout,0,0,244373913600,"{""name"":""Bourbon Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aksarben_brewing_bop"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+coopers_brewery-dark_ale,0,0,244493910017,"{""name"":""Dark Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark brew full of promise. Coopers Dark Ale is a journey in taste, starting fresh and creamy, and finishing with a lingering coffee flavour. \r\n\r\nConditioned and naturally brewed using the top fermentation method, Coopers 'Dark' is made using roasted and chocolate malts, giving it a rich dark colour and unique flavour. \r\n\r\nCoopers Dark Ale has no additives and no preservatives."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,47,1
+pete_s_brewing-pete_s_wicked_wanderlust_cream_ale,0,0,244990541824,"{""name"":""Pete's Wicked Wanderlust Cream Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pete’s winter seasonal Wanderlust Cream Ale, is a velvety smooth brew offering endless fascination. Pete’s Wicked Wanderlust Cream Ale is a light amber brew with a rhapsody of Cluster hops and select Munich and wheat malts. The rich, creamy taste invites you on a journey of wonderment and intrigue. Sit back. Enjoy the ride."",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,24,1
+raccoon_lodge_and_brewpub_cascade_brewing-cascade_cuvee_du_jongleur,0,0,244990869505,"{""name"":""Cascade Cuvée Du Jongleur"",""abv"":8.41,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A careful blending of select barrels of Flanders Reds and soured Belgian Triples aged in oak for up to 18 months. Then blended with fresh 25° Plato Blond Quadruppel. Hand-bottled, corked and then aged allowing lactic fermentation.""}",1,25,1
+gottberg_brew_pub-model_a_tor_doppelbock,0,0,244615675904,"{""name"":""Model-A-Tor Doppelbock"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,21,1
+firestone_walker_brewing_company-double_barrel_ale,0,0,244616527872,"{""name"":""Double Barrel Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firestone_walker_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A British Pale Ale never tasted so fresh. We challenge our good friends across the pond to match this one. Can’t be done. We’ve honored the traditions of the great British Pale brewers of Burton-on-Trent using our patented Firestone Union oak barrels. You’re left with a mild blend of vanilla and toasted oak flavor touched with an elegant hint of English noble hops. DBA is the flagship of our company and wildly popular."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,23,1
+mickey_finn_s_brewery-porter,0,0,244867989506,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+brasserie_d_achouffe,0,0,244375355394,"{""name"":""Brasserie D'Achouffe"",""city"":""Houffalize-Achouffe"",""state"":""Luxembourg"",""code"":"""",""country"":""Belgium"",""phone"":""32-061-28-81-47"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue du Village 32""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.1507,""lon"":5.7442}}",1,44,1
+backcountry_brewery-old_smoky,0,0,244374962178,"{""name"":""Old Smoky"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""backcountry_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,43,1
+brouwerij_st_feuillien-triple,0,0,244493385730,"{""name"":""Triple"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_feuillien"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+milwaukee_ale_house-rye_i_oughta,0,0,244868448257,"{""name"":""Rye I Oughta"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+avery_brewing_company-maharaja_the,0,0,244373585921,"{""name"":""Maharaja, The"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""From Website:\r\nMaharaja is derived from the sanskrit words mahat, - \""great\"" and rajan - \""king\"". Much like its namesake, this imperial IPA is regal, intense and mighty. With hops and malts as his servants, he rules both with a heavy hand. The Maharaja flaunts his authority over a deranged amount of hops: tangy, vibrant and pungent along with an insane amount of malted barley - fashioning a dark amber hue and exquisite malt essence.\r\n\r\nThis newest Avery Dictator completes the \""Dictator Series\"" joining the likes of The Kaiser & The Czar. Be aware that The Maharaja is a limited release only available for the summer. Welcome to his kingdom!\r\n\r\nAvailability:\r\n    * 22 oz. bottles\r\n    * 5.17 gallon keg\r\n    * 15.5 gallon keg\r\n    * Available March through August\r\n\r\nABV:\r\n    * 10.5% (2008)\r\n    * 9.78% (2007)"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,40,1
+jobber_s_canyon_restaurant_brewery,0,0,244742291457,"{""name"":""Jobber's Canyon Restaurant & Brewery"",""city"":""Omaha"",""state"":""Nebraska"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.254,""lon"":-95.9993}}",1,20,1
+trailhead_brewing_company-missouri_brown_dark_ale,0,0,245124235267,"{""name"":""Missouri Brown Dark Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trailhead_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,63,1
+brauerei_aying_franz_inselkammer_kg-ur_weisse,0,0,244493975552,"{""name"":""Ur-Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_aying_franz_inselkammer_kg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,48,1
+flossmoor_station_brewery-roundhouse_raspberry_wheat_ale,0,0,244616200193,"{""name"":""Roundhouse Raspberry Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,22,1
+the_church_brew_works-blast_furnace_oatmeal_stout,0,0,245111980034,"{""name"":""Blast Furnace Oatmeal Stout"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Stouts have typically been a staple beverage in the UK.  There are many variations of stouts available. You can find dry stouts, milk stouts, Imperial stouts, American stouts, and even stouts made with oats.\r\n\r\nAt the Church Brew Works we have crafted delicious Toasted Oatmeal Stout.  The oats were blended with the best barley malt we have – and we didn’t stop there.  To give this beer a wonderful roasted flavor, we added unmalted, very darkly roasted barley.  The roasted barley is mixed with a generous portion of chocolate colored malt giving the Blast Furnace Stout a beautiful ruby hue.\r\n\r\nWe used our finest hops unsparingly to create a delicately balanced bitterness with a rich roastiness and fresh hop aroma. The Fuggles and East Kent Goldings hops were added with heavy hands at two different times.  This unbridled addition grants a full hop flavor to our heavenly drink.\r\n\r\nA typical oatmeal stout is a bit lower in alcohol than most other stouts as does the Blast Furnace Stout.  Ours, though not typical, does have a welcome medium body.  As you drink this beer, notice the rich, creamy brown head.  Drink it slowly and savor the flavors.  We don’t think you will be disappointed.  Beer is not just for breakfast anymore."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,32,1
+big_bang_brewery_closed,0,0,244374568960,"{""name"":""Big Bang Brewery (Closed)"",""city"":""San Francisco"",""state"":""California"",""code"":""94107"",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""650 Fifth Street #403""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.7756,""lon"":-122.398}}",1,42,1
+alpine_beer_company-pure_hoppiness,0,0,244373979136,"{""name"":""Pure Hoppiness"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alpine_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A West Coast Double IPA\r\nSo mega-hopped it will take you to hop heaven. We’ve used hops in the boil, more hops in the giant hopback, and added to that, an incredible amount of dry-hopping for that cutting-edge “hop bite.” Once you’ve tasted this unique beer, all others pale in comparison. 1.072 OG Classified IBU 8%ABV"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,41,1
+coors_brewing_golden_brewery,0,0,244493910018,"{""name"":""Coors Brewing - Golden Brewery"",""city"":""Golden"",""state"":""Colorado"",""code"":""80401"",""country"":""United States"",""phone"":""1-866-812-2337"",""website"":""http://www.coors.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""In 1873, as the United States approached its centennial year, its people were busy building a new kind of nation. It was thirsty work. And that's where Coors Brewing Company came in. When we began in that same year, we were a small, family-owned brewery, located at the foot of the Rocky Mountains. We were busy creating the same kind of crisp, refreshing beer we're known for today. While hundreds of such family-owned breweries have come and gone in the years since, we believe the reasons for our success are simple. We've never compromised on quality in producing our award-winning brews and we've never lost sight of our rich Rocky Mountain heritage. Just as important, we've always believed in doing well by doing good. We treat our employees with respect, we support the local communities where we do business, and we strive to protect the environment. That's just how we do business."",""address"":[""311 Tenth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7599,""lon"":-105.219}}",1,47,1
+port_brewing_company-amigo_lager,0,0,244990541825,"{""name"":""Amigo Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Because everyone needs a friend.  It seems only natural that with San Diego being one of the closest cities to the Mexican Border that you would find a beer like Amigo.  Brewed in the San Diego Lager style, this all malt lager is a refreshing way to start or finish a drinking session.  The product of a true lager fermentation, this beer is crisp and lighter in body than most ales of similar strength making it a friendly choice for any occasion.\r\n\r\nMalts- Pilsner and Two Row\r\nHops- German Magnum and Czech Saaz\r\nYeast- White Labs German Lager \r\n\r\nOriginal Gravity- 1.048\r\nTerminal Gravity- 1.010\r\n5.0% ABV\r\n\r\nDraft- Available in Southern California and Arizona"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,24,1
+raccoon_lodge_and_brewpub_cascade_brewing-cascade_sang_royal,0,0,244990869506,"{""name"":""Cascade Sang Royal"",""abv"":8.87,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Northwest style sour red is a bottled version of our popular Mouton Rouge. This blend of barrels, with up to 16 months of oak barrel lactic fermentation and oak barrel aging, features dark fruit, sour, oak and funk flavors that sweep over your taste buds like an incoming tide.""}",1,25,1
+great_divide_brewing-denver_pale_ale_dpa,0,0,244742356992,"{""name"":""Denver Pale Ale / DPA"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Historically Great Divide’s flagship beer, DPA’s record speaks for itself. By continually garnering national and international recognition, DPA has risen to become one of the most award-winning English-style pale ales in the world.\r\n\r\nSporting a brilliant copper hue and an assertive floral hop aroma, DPA is known for its smooth, malty middle, which is expertly complemented with hearty and complex hop flavor. DPA’s extraordinary hop finish is marked by crisp yet moderate hop bitterness. Its well-balanced profile makes DPA the perfect beer to accompany a hearty mountain picnic or a night on the town. For those who seek beers characterized by excitement, flavor and distinction, Denver Pale Ale is the natural choice."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,21,1
+flyers_restraunt_and_brewery-humbles_blond_ale,0,0,244616527873,"{""name"":""Humbles Blond Ale"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest beer in body and color, Humbles has proven to be our most popular offering."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,23,1
+middle_ages_brewing-syracuse_pale_ale,0,0,244868055040,"{""name"":""Syracuse Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Sparkling golden ale with a complexity of malt and hop flavor brewed in a similar style to a turn of the century Canadian ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+brasserie_de_silenrieux-joseph_spelt_ale,0,0,244375355395,"{""name"":""Joseph Spelt Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silenrieux"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+barley_john_s_brewpub-little_barley_bitter,0,0,244374962179,"{""name"":""Little Barley Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+brouwerij_van_steenberge,0,0,244493451264,"{""name"":""Brouwerij Van Steenberge"",""city"":""Ertvelde"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-09-344-50-71"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lindenlaan 25""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1766,""lon"":3.7462}}",1,46,1
+mishawaka_brewing-lake_effect_pale_ale,0,0,244868448258,"{""name"":""Lake Effect Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mishawaka_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+avery_brewing_company-salvation,0,0,244373585922,"{""name"":""Salvation"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,40,1
+kaiserdom_privatbrauerei_bamberg-kellerbier,0,0,244742291458,"{""name"":""Kellerbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kaiserdom_privatbrauerei_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+unibroue-16,0,0,245124300800,"{""name"":""16"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,63,1
+brauhaus_am_waldschlosschen-waldschlosschen_dunkel,0,0,244494041088,"{""name"":""Waldschlösschen Dunkel"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_am_waldschlosschen"",""updated"":""2010-07-22 20:00:20"",""description"":""dark, bottom-fermented, more on the sweet side, made of 100% barley malt  according to ther description, very good to meat"",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,48,1
+four_peaks_brewing,0,0,244616200194,"{""name"":""Four Peaks Brewing"",""city"":""Tempe"",""state"":""Arizona"",""code"":""85281"",""country"":""United States"",""phone"":""1-480-303-9967"",""website"":""http://www.fourpeaks.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1340 East Eighth Street #103""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.4194,""lon"":-111.916}}",1,22,1
+thirsty_dog_brewing-hoppus_maximus,0,0,245112045568,"{""name"":""Hoppus Maximus"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The complex charactor of American hops and amber colored caramel malts make it crisp & refreshing."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,32,1
+black_toad_brewing_company-dark_ale,0,0,244374568961,"{""name"":""Dark Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""black_toad_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,42,1
+anchor_brewing-wheat,0,0,244373979137,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+copper_dragon_brewing-saison,0,0,244493975552,"{""name"":""Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_dragon_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+rail_house_restaurant_and_brewpub-scottish_ale,0,0,244990607360,"{""name"":""Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+raccoon_river_brewing-stonecutter_stout,0,0,244990869507,"{""name"":""Stonecutter Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,25,1
+great_lakes_brewing-barrel_select_pils,0,0,244742422528,"{""name"":""Barrel Select Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+golden_valley_brewery_and_pub-dundee_porter,0,0,244616527874,"{""name"":""Dundee Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_valley_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,23,1
+midnight_sun_brewing_co-fahrwasser_fairway_pilsner,0,0,244868055041,"{""name"":""Fahrwasser Fairway Pilsner"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Reid is our onsite go-to beer guy who handles the bulk of our to-go beer sales. Reid is a full-time UAA student who manages to sell beer at MSBC, run a side welding business, keep the golf discs flying all year-round & create music with his band, Bushwood. He wrote and performed his song \""No 9 to 5\"", which resonates his idea of a fairway to heaven.\r\n\r\nFAHRWASSER means \""fair water\"" or \""fairway\"". This inspired pilsner breaks par with every sip.\r\n\r\nAvailability:\r\nAK - draft and 22-oz bottles (limited release begins 05/15/2009)"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,26,1
+brasserie_de_silly,0,0,244375355396,"{""name"":""Brasserie de Silly"",""city"":""Silly"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-068-55-16-95"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Ville Basse 141""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.6493,""lon"":3.9242}}",1,44,1
+bell_s_brewery_inc-consecrator_doppelbock_beer,0,0,244374962180,"{""name"":""Consecrator Doppelbock Beer"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional dopplebock fermented with a Bohemian lager yeast. Reddish brown in color, with a mild hop profile, Consecrator is a well balanced, full bodied beer with hints of caramel and molasses in its smooth, malty finish."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,43,1
+adnams_co-broadside_ale,0,0,244357988352,"{""name"":""Broadside Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""adnams_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich fruitcake aromas – almonds, zest and conserved fruit. A wonderful balance of malt and hop flavours. A beer to savour and rich in flavour."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,1,1
+budjovick_mansk_pivovar,0,0,244493451265,"{""name"":""Budjovick Mansk Pivovar"",""city"":""esk Budjovice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-038-866-201"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lidick  51""]}",1,46,1
+molson_breweries_of_canada-red_jack,0,0,244868513792,"{""name"":""Red Jack"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,27,1
+barley_john_s_brewpub-stockyard_ipa,0,0,244373585923,"{""name"":""Stockyard IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,40,1
+laconner_brewing-pseudo_lambic_framboise,0,0,244742356992,"{""name"":""Pseudo Lambic Framboise"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""laconner_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,20,1
+unibroue,0,0,245124300801,"{""name"":""Unibroue"",""city"":""Chambly"",""state"":""Quebec"",""code"":"""",""country"":""Canada"",""phone"":""1-450-658-7658"",""website"":""http://www.unibroue.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""There is more to certain beers than simple refreshment. Unibroue has raised the standards of conventional beer in by brewing craftsman beers for savouring.  Of incomparable quality and a taste, the beers at Unibroue are entirely natural, contain no chemical additives or preservatives, and are made with first quality ingredients.  Rediscover beer with Unibroue. You will never taste beer the same way again!"",""address"":[""80 Des Carrires""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.4416,""lon"":-73.2595}}",1,63,1
+brausttte_der_steirerbrau_aktiengesellschaft-gosser,0,0,244494041089,"{""name"":""Gösser"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brausttte_der_steirerbrau_aktiengesellschaft"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+fuller_smith_turner_pbc-india_pale_ale,0,0,244616265728,"{""name"":""India Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+thirsty_dog_brewing-spiced_pumpkin_ale,0,0,245112045569,"{""name"":""Spiced Pumpkin Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with summer's harvest of pumpkin, squash, honey, ginger, and love of great beers."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,32,1
+blucreek_brewing_company-altbier,0,0,244374634496,"{""name"":""Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blucreek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,42,1
+anheuser_busch-beach_bum_blonde_ale,0,0,244374044672,"{""name"":""Beach Bum Blonde Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Beach Bum Blonde Ale is a traditional American \r\nblonde ale with a slightly spicy hop note and balanced malty flavor."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,41,1
+dark_horse_brewing_co-crooked_tree_ipa,0,0,244493975553,"{""name"":""Crooked Tree IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Inspired by West Coast I.P.A.'s, but brewed with Michigan style. The Crooked Tree is heavily dry hopped to give it a big aroma of pine and citrus. The flavors are big, yet very balanced between fresh hops and malt. Often described as \""grapefruit\"" our hops give this beer an excellent fruit flavor that finishes dry, crisp, and clean. It will pour a nice deep copper color with a bit of haziness. Because of our almost patented \""Intense Transfer Methods\"" our Crooked Tree has won several medals in the India Pale Ale category."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+randy_s_fun_hunters_brewery_restaurant_and_banquet_center-amber_lager,0,0,244990607361,"{""name"":""Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""randy_s_fun_hunters_brewery_restaurant_and_banquet_center"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,24,1
+real_ale_brewing_company-firemans_4,0,0,244990935040,"{""name"":""Firemans #4"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""real_ale_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Smooth blend of malt, citrus and fruit"",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,25,1
+great_waters_brewing_company-old_bastard,0,0,244742422529,"{""name"":""Old Bastard"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,21,1
+gordon_biersch_brewing,0,0,244616527875,"{""name"":""Gordon Biersch Brewing"",""city"":""San Jose"",""state"":""California"",""code"":""95112"",""country"":""United States"",""phone"":""1-408-278-1008"",""website"":""http://www.gordonbiersch.com/brewery"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""357 East Taylor Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.3526,""lon"":-121.893}}",1,23,1
+new_holland_brewing_company-blue_goat,0,0,244868055042,"{""name"":""Blue Goat"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Chestnut in color with a nutty malt profile from its signature Munich malt. A muted hop presence and smooth caramelized body culminate in a clean, dry finish. Excellent choice for hearty meals with dark flavors and sauces. Grilled meats, musty cheeses or pecan pie.""}",1,26,1
+brasserie_lefebvre,0,0,244492140544,"{""name"":""Brasserie Lefebvre"",""city"":""Quenast"",""state"":""Brabant Wallon"",""code"":"""",""country"":""Belgium"",""phone"":""32-067-67-07-66"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Chemin du Croly 52""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.6746,""lon"":4.1509}}",1,44,1
+bierbrouwerij_st_christoffel,0,0,244375027712,"{""name"":""Bierbrouwerij St.Christoffel"",""city"":""Roermond"",""state"":"""",""code"":"""",""country"":""Netherlands"",""phone"":""31-71.51.56.085"",""website"":""http://www.christoffelbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Beerbrewery St. Christoffel is a relatively young brewery, founded in 1986. Our brewery is situated in the former coalmining-town Roermond in Dutch Limburg and named after the patronsaint of Roermond: Saint Christoffel. The brewery started very small and was at first situated behind a house. In 1995 the brewery moved to her present facility. With moving there, the brewingcapacity greatly enhanced due to new brewing-, fermenting- and lagerfacilities. Christoffel brews according to the German Reinheitsgebot von 1516: which means the brewingprocess takes place in a completely natural way. Around the year 1990, Christoffel Blond was awarded 3 years in a row with the Dutch title: Best Beer from the Netherlands."",""address"":[""Metaalweg 10""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1684,""lon"":6.0515}}",1,43,1
+aktienbrauerei_kaufbeuren,0,0,244358053888,"{""name"":""Aktienbrauerei Kaufbeuren"",""city"":""Kaufbeuren"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8341-/-430430"",""website"":""http://www.aktien-brauerei.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hohe Buchleuthe 3""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.8781,""lon"":10.6161}}",1,1,1
+caldera_brewing-dark_lager,0,0,244493451266,"{""name"":""Dark Lager"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A German-style Munich Duenkle.  Dark and smooth.  Release date:  February 1."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+moose_s_tooth_pub_and_pizzeria-wild_country_raspberry_wheat,0,0,244868513793,"{""name"":""Wild Country Raspberry Wheat"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moose_s_tooth_pub_and_pizzeria"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with wheat and barley malts and flavored with pureed raspberries, this pink-hued, slightly tart ale gives a clean sip."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,27,1
+bayerische_staatsbrauerei_weihenstephan-korbinian,0,0,244373651456,"{""name"":""Korbinian"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayerische_staatsbrauerei_weihenstephan"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,40,1
+lewis_clark_brewing_company,0,0,244742356993,"{""name"":""Lewis & Clark Brewing Company"",""city"":""Helena"",""state"":""Montana"",""code"":""59601"",""country"":""United States"",""phone"":""(406) 442-5960"",""website"":""http://lewisandclarkbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""939 Getchell Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":46.5977,""lon"":-112.037}}",1,20,1
+union_barrel_works-round_boy_stout,0,0,245124300802,"{""name"":""Round Boy Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_barrel_works"",""updated"":""2010-07-22 20:00:20"",""description"":""A nutritious st our that has a distinct, smooth and firm body. Specialty malts create a hint of nuttiness, coffee, chocolate, and roasted flavors."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,63,1
+breckenridge_brewery-hefe_proper_ale,0,0,244494106624,"{""name"":""Hefe Proper Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+gilde_brauerei-lindener_spezial,0,0,244616265729,"{""name"":""Lindener Spezial"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gilde_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+thunderhead_brewery_2-grand_cru,0,0,245112111104,"{""name"":""Grand Cru"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+boston_beer_company-samuel_adams_boston_ale,0,0,244374634497,"{""name"":""Samuel Adams Boston Ale"",""abv"":4.94,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth, refined version of a classic ale.\r\nSamuel Adams® Boston Ale was first brewed to celebrate the opening of our Boston Brewery. Like Samuel Adams Boston Lager®, it was an old family recipe that was rescued by Jim Koch from his father's attic. Samuel Adams® Boston Ale, a Stock Ale, has a complex, caramel malt character balanced with distinct spicy and herbal hop notes. Our proprietary ale yeast imparts a variety of fruit and ester notes in both the nose and flavor which are indicative of the style."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,42,1
+anheuser_busch-green_valley_wild_hop_lager,0,0,244374044673,"{""name"":""Green Valley Wild Hop Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+de_proef_brouwerij-slaapmutske_triple_nightcap,0,0,244626620416,"{""name"":""Slaapmutske Triple Nightcap"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+redfish_new_orleans_brewhouse-angry_monk,0,0,244990607362,"{""name"":""Angry Monk"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redfish_new_orleans_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+richbrau_brewing_company-richbrau_abbey_style_ale,0,0,244990935041,"{""name"":""Richbrau Abbey-Style Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This recipe is meant to replicate a Belgian Abbey-style ale. Tart from the Belgian yeast but malty and sweet from the addition of rock candy sugar. Reddish brown in color."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,25,1
+hereford_hops_steakhouse_and_brewpub_3-hefeweizen,0,0,244742422530,"{""name"":""Hefeweizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+granville_island_brewing_company-english_bay_pale_ale,0,0,244743208960,"{""name"":""English Bay Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granville_island_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+north_coast_brewing_company,0,0,244868120576,"{""name"":""North Coast Brewing Company"",""city"":""Fort Bragg"",""state"":""California"",""code"":""95437"",""country"":""United States"",""phone"":""1-707-964-2739"",""website"":""http://www.northcoastbrewing.com/home.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""455 North Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.4466,""lon"":-123.806}}",1,26,1
+brauerei_gss,0,0,244492140545,"{""name"":""Brauerei Gss"",""city"":""Leoben-Gss"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0-38-42/20-90-58-"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brauhausgasse 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.3625,""lon"":15.0947}}",1,44,1
+big_buck_brewery-buck_naked,0,0,244375027713,"{""name"":""Buck Naked"",""abv"":3.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_buck_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An American-style \""light beer\"".  Formulated to appeal to those who prefer a lighter tasting brew."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,43,1
+alvinne_picobrouwerij-podge_belgian_imperial_stout,0,0,244358053889,"{""name"":""Podge Belgian Imperial Stout"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alvinne_picobrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,1,1
+canadian_brewery,0,0,244493516800,"{""name"":""Canadian Brewery"",""city"":""Saskatoon"",""state"":""Saskatchewan"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.1344,""lon"":-106.648}}",1,46,1
+pabst_brewing_company-st_ides,0,0,244868513794,"{""name"":""St Ides"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""St. Ides High Gravity Premium Malt Liquor is the brand of choice with the new generation of malt liquor drinkers. With its high quality, high strength flavor, St. Ides compliments the lifestyle of the fast paced, urban, edgy malt liquor drinker of today.""}",1,27,1
+big_time_brewing-old_rip_oatmeal_stout,0,0,244373651457,"{""name"":""Old Rip Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,40,1
+long_valley_pub_brewery-oatmeal_stout,0,0,244865171456,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_valley_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,20,1
+victory_brewing-victory_lager,0,0,245752528896,"{""name"":""Victory Lager"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Perfectly balanced, this authentic version of a German helles-style lager satisfies gloriously. Lean, German malts and fine European hops offer subtle harmony."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+brewmasters_restaurant_and_brewery_south-oatmeal_stout,0,0,244494106625,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+alaskan_brewing-alaskan_summer_ale,0,0,244357660672,"{""name"":""Alaskan Summer Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Based on the traditional style of Kölsch beer brewed in Cologne, Germany.\r\n\r\nAlaskan Summer Ale balances a softly malted palate with the clean freshness of Hallertauer hops. In the tradition of the style, neither overpowers the other. Both hops and malt come together to refresh and renew the palate. The straw-gold color and easy drinkability are an enjoyable way to celebrate summer.\r\n\r\nAlaskan Summer Ale is made from glacier-fed water and a generous blend of European and Pacific Northwest hop varieties and premium two-row and specialty malts. Our water originates in the 1,500 square-mile Juneau Ice Field and from the more than 90 inches of rainfall Juneau receives each year.""}",1,0,1
+gordon_biersch_brewing-gordon_biersch_schwarzbier,0,0,244616265730,"{""name"":""Gordon Biersch Schwarzbier"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,22,1
+tied_house_cafe_brewery_san_jose-amber_light,0,0,245112111105,"{""name"":""Amber Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,32,1
+brasserie_de_blaugies,0,0,244374634498,"{""name"":""Brasserie de Blaugies"",""city"":""Blaugies"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-065-65-03-60"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue de la Frontire, 435""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.3693,""lon"":3.827}}",1,42,1
+appalachian_brewing_company-wildflower_honey_wheat,0,0,244374044674,"{""name"":""Wildflower Honey Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This American wheat beer is infused with 20% wildflower honey resulting in a light, semi-sweet refreshing beverage.  This beer represents the next evolution of Sophie’s Sparkling Ale as we have added the wheat base, essentially combining two of our most popular beers. This will be brewed in Camp Hill and distributed in limited quantity to Harrisburg and Gettysburg."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,41,1
+delafield_brewhaus-oats_and_barley_stout,0,0,244626620417,"{""name"":""Oats and Barley Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,47,1
+rogue_ales-dead_guy_ale,0,0,244990607363,"{""name"":""Dead Guy Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Gratefully dedicated to the Rogue in each of us. In the early 1990s Dead Guy Ale was created as a private tap sticker to celebrate the Mayan Day of the Dead (November 1st, All Souls Day) for Casa U Betcha in Portland, Oregon. The Dead Guy design proved popular and was incorporated into a bottled product a few years later with Maierbock as the elixir. Strangely, the association with the Grateful Dead is pure coincidence.\r\n\r\nDead Guy is a German-style Maibock made with Rogues proprietary \""PacMan\"" ale yeast. It is deep honey in color with a malty aroma, rich hearty flavor and a well balanced finish. Dead Guy is created from Northwest Harrington, Klages, Maier Munich and Carastan malts, along with Perle and Saaz Hops. Dead Guy Ale is available in 22-ounce bottles, 12-ounce 6-pack, and on draft."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,24,1
+ridgeway_brewing-very_bad_elf_special_reserve_ale,0,0,244991000576,"{""name"":""Very Bad Elf Special Reserve Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+hoffbrau_steaks_brewery_1-yellow_rose_cream_ale,0,0,244742488064,"{""name"":""Yellow Rose Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+great_dane_pub_and_brewing_2-old_glory_american_pale_ale,0,0,244743274496,"{""name"":""Old Glory American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+o_gara_s_bar_grill-cork_brown_ale,0,0,244868120577,"{""name"":""Cork Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_gara_s_bar_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+brauerei_schtzengarten-st_galler_landbier,0,0,244492140546,"{""name"":""St. Galler Landbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_schtzengarten"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+brauhaus_am_waldschlosschen,0,0,244491812864,"{""name"":""Brauhaus am Waldschlösschen"",""city"":""Dresden"",""state"":""Sachsen"",""code"":""1099"",""country"":""Germany"",""phone"":""+49 351 - 652 39 00"",""website"":""http://www.waldschloesschen.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""traditional brew house, founded 1836, make their beer and just sell it in house"",""address"":[""Am Brauhaus 8b""]}",1,43,1
+angelic_brewing-shakedown_nut_brown,0,0,244358053890,"{""name"":""Shakedown Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""angelic_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,1,1
+capital_brewery-capital_dark_doppelbock,0,0,244493516801,"{""name"":""Capital Dark Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,46,1
+palm_breweries,0,0,244991590400,"{""name"":""Palm Breweries"",""city"":""Steenhuffel"",""state"":""Brabant"",""code"":""1840"",""country"":""Belgium"",""phone"":""+32 (0)52 31 74 11"",""website"":""http://www.palmbreweries.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brouwerij Palm is the brewery of the top-fermented beers from Brabant; in the rural settings of Steenhuffel between Antwerp and Brussels. The duchy of Brabant has a tradition of using all the best ingredients nature has to offer. The Brabant draught horse once was Belgium's most important export product. To emphasise how proud they are of their region of Brabant, Brouwerij Palm uses the Brabant draught horse as a logo for its top-fermented beer Special Palm."",""address"":[""Steenhuffeldorp 3""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9953,""lon"":4.2835}}",1,27,1
+birrificia_le_baladin,0,0,244373651458,"{""name"":""Birrificia Le Baladin"",""city"":""Piozzo"",""state"":"""",""code"":""0"",""country"":""Italy"",""phone"":""39-0173-795431"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Piazza V Luglio, 15""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.5153,""lon"":7.8922}}",1,40,1
+maritime_pacific_brewing-firkin_ipa,0,0,244865236992,"{""name"":""Firkin IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,20,1
+wachusetts_brewing_company-green_monsta_ale,0,0,245752594432,"{""name"":""Green Monsta Ale"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wachusetts_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A BIG PALE ALE with an awsome balance of Belgian malts with Fuggles and East Kent Golding hops."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,63,1
+breznak,0,0,244494172160,"{""name"":""Breznak"",""city"":"""",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":"""",""website"":""http://drinksunion.qbizm.cz/de/pages/vyrobky_p_breznak.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,48,1
+allentown_brew_works-pumpkin_ale,0,0,244357726208,"{""name"":""Pumpkin Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Holiday beer is made with real pumpkins, cloves, ginger, all-spice, nutmeg and cinnamon. This light copper colored winter ale will tantalize your taste buds. Pumkin pie in a glass!"",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,0,1
+grand_teton_brewing_2-old_faithful_ale,0,0,244742750208,"{""name"":""Old Faithful Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grand_teton_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""ur Old Faithful Ale is a Pale Golden Ale with a crisp body and light malt sweetness. We cold condition this ale to give it a pleasantly smooth character and dry palate. The Willamette and imported UK Goldings hops give this beer a light floral hop aroma, making it exceptionally easy to drink."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+traquair_house_brewery-bear_ale,0,0,245112111106,"{""name"":""Bear Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""traquair_house_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+brasserie_de_l_abbaye_des_rocs-brune,0,0,244374700032,"{""name"":""Brune"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+appleton_brewing-adler_brau_tailgate_amber,0,0,244374110208,"{""name"":""Adler Bräu Tailgate Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,41,1
+dix_barbecue_brewery-game_day,0,0,244626685952,"{""name"":""Game Day"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dix_barbecue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+roy_pitz_brewing_company,0,0,244990672896,"{""name"":""Roy Pitz Brewing Company"",""city"":""Chambersburg"",""state"":""Pennsylvania"",""code"":""17201"",""country"":""United States"",""phone"":""717-496-8753"",""website"":""http://roypitz.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""140 North Third Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.939,""lon"":-77.6566}}",1,24,1
+rogue_ales-honey_cream_ale,0,0,244991000577,"{""name"":""Honey Cream Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Honey Cream Ale is fermented warm like traditional cream ales but features an added twist--wildflower honey from Oregon. Honey imparts a dry, refreshing character to the beer because it ferments almost completely. The honey comes from a beekeeper in Blodgett, a tiny town 20 miles east of Newport.\r\n\r\nRogues Honey Cream Ale is a light, smooth, medium bodied ale, with a creamy head, hints of honey and a crisp light finish. Brewed with two-row Harrington, Klages and Munich malts and Crystal hops. Discontined for distribution in late 2005, available on tap only at Rogue Ales Public Houses."",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,25,1
+hoppin_frog_brewery-gulden_fraug_belgian_ale,0,0,244742488065,"{""name"":""Gulden Fraug Belgian Ale"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Smooth malt flavors of this golden Belgian-style abbey ale are complimented by traditional imported ingredients. A slightly spicy and complex flavor makes this European celebration-style beer unique and refreshing"",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,21,1
+great_dane_pub_and_brewing_2-old_scratch_barleywine_1997,0,0,244743340032,"{""name"":""Old Scratch Barleywine 1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+orlio_organic-orlio_common_ale,0,0,244868186112,"{""name"":""Orlio Common Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orlio_organic"",""updated"":""2010-07-22 20:00:20"",""description"":""A light to medium bodied deep golden ale that starts with an elegantly creamy malt complexity and ends with a firm but understated hop finish that balances the initial sweetness with a touch of bitterness.""}",1,26,1
+brauhaus_johann_albrecht_konstanz-herbstbeer,0,0,244492206080,"{""name"":""Herbstbeer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_konstanz"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,44,1
+brewer_s_art-ozzy,0,0,244491812865,"{""name"":""Ozzy"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewer_s_art"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewer's Art's answer to the Belgian \""devil\"" beers (i.e. Lucifer, Duvel, etc.). Both rich and dry, this beer is all too easy to consume in large quantities. Hopped with Styrian Goldings."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,43,1
+arcadia_brewing-london_porter,0,0,244358053891,"{""name"":""London Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+carver_brewing_co-iron_horse_oatmeal_stout,0,0,244493516802,"{""name"":""Iron Horse Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carver_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""One of these beers is available all of the time. Our heartiest beers emphasize roasted malts and the generous use of hops. Creamy, smooth and always nitrogenated, these beers are nearly a meal or a dessert in themselves."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,46,1
+pennichuck_brewing_company-backdraft_chocolate_porter,0,0,244991655936,"{""name"":""BackDraft Chocolate Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,27,1
+blue_ridge_brewing-colonel_paris_pale_ale,0,0,244373716992,"{""name"":""Colonel Paris Pale Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic American pale ale with a taste not unlike fresh citrus follwed by a crisp and spicy bitterness."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+marshall_wharf_brewing_company,0,0,244865302528,"{""name"":""Marshall Wharf Brewing Company"",""city"":""Belfast"",""state"":""Maine"",""code"":""4915"",""country"":""United States"",""phone"":""207-338-1707"",""website"":""http://www.marshallwharf.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2 Pinchy Lane""]}",1,20,1
+weinkeller_brewery_berwyn,0,0,245752659968,"{""name"":""Weinkeller Brewery - Berwyn"",""city"":""Berwyn"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.8506,""lon"":-87.7937}}",1,63,1
+bridgeport_brewing-black_strap_stout,0,0,244494172161,"{""name"":""Black Strap Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+anheuser_busch-bare_knuckle_stout,0,0,244357791744,"{""name"":""Bare Knuckle Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,0,1
+great_northern_tavern_and_brewery,0,0,244742815744,"{""name"":""Great Northern Tavern and Brewery"",""city"":""Keystone"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.6042,""lon"":-105.948}}",1,22,1
+triple_rock_brewery,0,0,245112176640,"{""name"":""Triple Rock Brewery"",""city"":""Berkeley"",""state"":""California"",""code"":""94704"",""country"":""United States"",""phone"":""1-510-843-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1920 Shattuck Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.8734,""lon"":-122.269}}",1,32,1
+brasserie_de_l_abbaye_val_dieu-brune_brown,0,0,244374700033,"{""name"":""Brune / Brown"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_val_dieu"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+atwater_block_brewing-kolsch,0,0,244374110209,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+dix_barbecue_brewery-ipa,0,0,244626685953,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dix_barbecue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+saint_arnold_brewing-elissa_ipa,0,0,244990672897,"{""name"":""Elissa IPA"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional India Pale Ale, the Elissa IPA is very hoppy with a properly balanced malty body. Elissa has huge hop additions in the kettle that give it a wonderful bitterness and is then dry-hopped in the fermenter to create the pleasant floral, hoppy nose. Our reverse osmosis water makes the bitter very soft with no harsh notes to it. The maltiness is derived from British Maris Otter malt. Its rich flavor stands up to the hops that would otherwise dominate this beer. The Elissa is an authentic version of an India Pale Ale (IPA) style."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,24,1
+routh_street_brewery_and_grille-oktoberfest,0,0,244991000578,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,25,1
+hops_grillhouse_brewery_cherry_creek-thoroughbred_red,0,0,244742553600,"{""name"":""Thoroughbred Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_grillhouse_brewery_cherry_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,21,1
+grupo_modelo-modelo_especial,0,0,244743340033,"{""name"":""Modelo especial"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grupo_modelo"",""updated"":""2010-07-22 20:00:20"",""description"":""Handcrafted with all-natural ingredients, Modelo Especial has built a solid reputation as a classic, thirst-quenching beer. The brand represents the can-package of Grupo Modelo's portfolio and is also available in non-returnable bottles.\r\n\r\nModelo Especial is a must for those looking to capture the flavor of Mexico. Modelo Especial has 145 calories per 12 ounce serving."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,23,1
+otto_s_pub_and_brewery-spring_creek_lager,0,0,244868186113,"{""name"":""Spring Creek Lager"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A Vienna-style lager with a smooth malt palate and a dry finish. ABV 5.2%"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+brauhaus_sion,0,0,244492206081,"{""name"":""Brauhaus Sion"",""city"":""Kln"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)221-/-2578540"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Unter Taschenmacher 5-7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.9394,""lon"":6.9594}}",1,44,1
+brewery_creek_brewing-mahogany_ale,0,0,244491878400,"{""name"":""Mahogany Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+anchor_brewing-our_special_ale_1995,0,0,244358381568,"{""name"":""Our Special Ale 1995"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+atlantic_brewing_company-bar_harbor_blueberry_ale,0,0,244358053892,"{""name"":""Bar Harbor Blueberry Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atlantic_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""It does have a nice hint of wheat and blueberries to it.""}",1,1,1
+cerveceria_bucanero,0,0,244493582336,"{""name"":""Cerveceria Bucanero"",""city"":""Holguin"",""state"":"""",""code"":"""",""country"":""Cuba"",""phone"":""53-(5324)-46-8226"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Circunvalacin Sur Km. 3 1/2""]}",1,46,1
+pivovar_nchod-primator_double_24_primator_double_bock_beer,0,0,244991655937,"{""name"":""Primátor Double 24% / Primátor Double Bock Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_nchod"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,27,1
+brasserie_bnifontaine-castelain_blond_biere_de_garde,0,0,244373716993,"{""name"":""Castelain Blond Biere de Garde"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_bnifontaine"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+mcguire_s_irish_pub_and_brewery_pensacola,0,0,244865302529,"{""name"":""McGuire's Irish Pub and Brewery - Pensacola"",""city"":""Pensacola"",""state"":""Florida"",""code"":""32501"",""country"":""United States"",""phone"":""1-850-433-6789"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""600 East Gregory Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":30.4181,""lon"":-87.2024}}",1,20,1
+western_reserve_brewing,0,0,245752659969,"{""name"":""Western Reserve Brewing"",""city"":""Cleveland"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.4995,""lon"":-81.6954}}",1,63,1
+abbaye_notre_dame_du_st_remy-rochefort_8,0,0,244358184960,"{""name"":""Rochefort 8"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_notre_dame_du_st_remy"",""updated"":""2010-07-22 20:00:20"",""description"":""Yellowish-brown colour, with a more pronounced aroma, more fruits and a slight amount of Demi-Sec. This variety constitutes the largest proportion of production.""}",1,2,1
+brouwerij_boon-mariage_parfait_1995,0,0,244494237696,"{""name"":""Mariage Parfait 1995"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_boon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,48,1
+appalachian_brewing_company-pennypacker_porter,0,0,244357791745,"{""name"":""Pennypacker Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This full-bodied dry cousin of the stout has a slight roast flavor and is dark brown in color with a red hue. This is London’s classic beer style named for the baggage carriers that appreciated it so much.\r\nGovernor Pennypacker was one of Pennsylvania’s more notable politicians. He oversaw the construction and held the lavish ceremonies designating the opening of the Commonwealth’s beautiful Capitol Building"",""style"":""Porter"",""category"":""Irish Ale""}",1,0,1
+greenshields_brewery_and_pub-munich_summer_fest,0,0,244742881280,"{""name"":""Munich Summer Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greenshields_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,22,1
+troegs_brewing-scratch_21_2009_artisan_ale,0,0,245112176641,"{""name"":""Scratch #21 2009 - Artisan Ale"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch #21-2009 is an exercise in deconstruction and minimalism. This Belgian Ale has distinct roots in The Mad Elf minus some key components.\r\n \r\nThe cherries? Gone.\r\nThe honey? Gone.\r\nThe chocolate malt? Gone.\r\n\r\nWait, this sounds familiar. It almost sounds like a naked version of The Mad Elf.\r\n \r\nComing in just under 8% ABV, this unfiltered golden beauty shows off the pronounced yeast flavor that made The Mad Elf famous as well as a touch of alcohol and some mellow malt flavors."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,32,1
+brauhaus_brew_hall-scotch_ale,0,0,244491419648,"{""name"":""Scotch Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_brew_hall"",""updated"":""2010-07-22 20:00:20"",""description"":""Originally brewed exclusively for beer shows, this award-winning ale has always been a Brau Brothers favorite! This is not your typical Scotch Ale. Combined with traditional malt\r\nsweetness is a distinct smoke flavor derived from authentic peat-smoked malt. This beer will change your opinion about Scottish ales due to its drinkability. Hop flavor and bitterness are minor, yet balance out this malty beer.\r\n\r\nBrau Scotch Ale is copper to amber in color with an off-white head of tightly laced bubbles. Wide-bowled glassware will allow the sweet and smoky aroma to escape. This ale can be served from 34- 50 degrees Fahrenheit. Lower temps will make it easier to drink while higher temps will enhance both malt and hop flavor. Portion control is important as this beer."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,42,1
+augustiner_brau_munchen-pils,0,0,244374110210,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""augustiner_brau_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+dostal_alley,0,0,244626685954,"{""name"":""Dostal Alley"",""city"":""Central City"",""state"":""Colorado"",""code"":""80427"",""country"":""United States"",""phone"":""1-303-582-1610"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 Dostal Alley""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.8019,""lon"":-105.514}}",1,47,1
+samuel_smith_old_brewery_tadcaster-winter_welcome_1996_1997,0,0,244990672898,"{""name"":""Winter Welcome 1996-1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+rowland_s_calumet_brewery-calumet_wheat,0,0,244991066112,"{""name"":""Calumet Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rowland_s_calumet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+jurupa_valley_brewing-double_chocolate_stout,0,0,244742553601,"{""name"":""Double Chocolate Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jurupa_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+harmon_brewing_company-puget_brown_porter,0,0,244743405568,"{""name"":""Puget Brown Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harmon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our brown porter is brewed with eight different malts to produce a smooth, well balanced, dark beer. A specially roasted barley provides a hint of chocolate. 5.6% ABV"",""style"":""Porter"",""category"":""Irish Ale""}",1,23,1
+pacific_beach_brewhouse-blonde,0,0,244868186114,"{""name"":""Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_beach_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+breckenridge_brewery-471_ipa,0,0,244492206082,"{""name"":""471 IPA"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoppy? Brother, 471 IPA redefines hoppy. 471 is a small batch, limited edition ale that was created by our Brewmaster to separate the weak from the strong. 471 is a double IPA, that combines Pale, Munich, Caramel-30, Carapils and Torrified Wheat malts, with Chinook, Centennial, Simcoe and Fuggles hops. It has a big sweet mouthfeel, followed by more hoppiness than you've ever had at one time. Enjoy."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,44,1
+broad_ripple_brewing-wheat_beer,0,0,244491878401,"{""name"":""Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,43,1
+anderson_valley_brewing-winter_solstice_seasonal_ale_2002,0,0,244358381569,"{""name"":""Winter Solstice Seasonal Ale 2002"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+bar_harbor_brewing_company-thunder_hole_ale,0,0,244358119424,"{""name"":""Thunder Hole Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bar_harbor_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,1,1
+chelsea_brewing_company-blueberry_wheat,0,0,244493582337,"{""name"":""Blueberry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chelsea_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,46,1
+pivovar_velk_popovice-kozel_premium,0,0,244991655938,"{""name"":""Kozel Premium"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_velk_popovice"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+brasserie_de_brunehaut-brasserie_de_brunehaut_bio_biere_blonde_organic,0,0,244373782528,"{""name"":""Brasserie De Brunehaut Bio Bière Blonde (Organic)"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic Belgian blonde ale from the Hainaut region in the southwest Belgium, near the French border. Top-fermented and bottle-conditioned, this is a clean, refreshing regional 'artisan' beer.\r\nThis organic blonde ale presents a nice yeasty nose, long-lasting head and a spicy, earthy note on the palate."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,40,1
+mckenzie_brew_house-irish_red_ale,0,0,244865368064,"{""name"":""Irish Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+weyerbacher_brewing_company-twelve,0,0,245752659970,"{""name"":""Twelve"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our 12th anniversary brew is a Rye Barleywine.  Checking in at 10.2% abv, Twelve is being released in July and through the end of the year.   Made from 50% Rye Malt and 50% Barley Malt, this strong ale is extremely viscous. The rye adds a tantalizing note of flavor on the palate with a hint of tartness you've come to expect from Rye.  Slightly warm when its young, the beer will age very well, perhap 5 years or more.  We're guessing that peak taste will be in the 1 to 2 year old range, with 3 and 4 not far behind.  Be sure to lay some down in your collection."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,63,1
+abita_brewing_company-abita_golden,0,0,244358184961,"{""name"":""Abita Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:49:38"",""description"":""Abita Golden is a crisp, clean continental lager. Just four ingredients are all it takes."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+brouwerij_bosteels,0,0,244494237697,"{""name"":""Brouwerij Bosteels"",""city"":""Buggenhout"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-052-33-22-82"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kerkstraat 92""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.0138,""lon"":4.2018}}",1,48,1
+appalachian_brewing_company-zoigl_star_lager,0,0,244357791746,"{""name"":""Zoigl Star Lager"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Zoigl is a golden, unfiltered lager beer which was originally brewed only in the region of Eastern Bavaria, between Franconia and the Czech Republic. For centuries, Zoigl was brewed in brewhouses owned by the town or an association of small brewers. \r\n\r\nThe Zoigl-Star, a six-angular star similar to the Star of David, was the sign of brewers in the middle ages. The star symbolizes the three elements (water, earth, and fire) and the three ingredients (water, malt, and hops) used for brewing. The importance of the yeast was not yet known in the 1400’s."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+harmon_brewing_company-mt_takhoma_blonde_ale,0,0,244742946816,"{""name"":""Mt. Takhoma Blonde Ale"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harmon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""German Pilsner Malt and a touch of flaked wheat are used to produce this light bodied, straw colored ale. Horizon and Glacier hops provide the balance. This beer finishes crisp and dry. Try this with and orange slice. 3.8% ABV"",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,22,1
+twin_rivers_brewing-imperial_stout,0,0,245112176642,"{""name"":""Imperial Stout"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+brouwerij_bavik_de_brabandere,0,0,244491485184,"{""name"":""Brouwerij Bavik - De Brabandere"",""city"":""Bavikhove"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-56-71-13-79"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rijksweg 33""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8628,""lon"":3.2992}}",1,42,1
+beach_brewing-magic_brew,0,0,244374175744,"{""name"":""Magic Brew"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,41,1
+duneland_brewhouse_pub_and_restaurant,0,0,244626751488,"{""name"":""Duneland Brewhouse Pub and Restaurant"",""city"":""Michigan City"",""state"":""Indiana"",""code"":""46360"",""country"":""United States"",""phone"":""1-219-878-9180"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.7075,""lon"":-86.895}}",1,47,1
+sapporo_breweries_chuo-draft,0,0,244990738432,"{""name"":""Draft"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sapporo_breweries_chuo"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,24,1
+rush_river_brewing-the_unforgiven_amber_ale,0,0,244991131648,"{""name"":""The Unforgiven Amber Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rush_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,25,1
+jw_lees_and_co_brewers_ltd-manchester_star_ale,0,0,244742553602,"{""name"":""Manchester Star Ale"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,21,1
+hoppy_brewing_company-liquid_sunshine_blonde_ale,0,0,244743405569,"{""name"":""Liquid Sunshine Blonde Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppy_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""s a unique, all-natural style of beer that currently falls under the category of a Specialty Ale. In other words, there is no true category for this beer... Characterized by its distinctive Mount Hood hop aroma and beautiful blonde color, Liquid Sunshine™ is brewed at a low temperature to create a nice light dry finish. Using only the finest 2-row malted barley, wheat, rye, and great northwestern grown hops, this combination results in a clean, crisp, and uniquely refreshing beer. As usual, no artificial preservatives have been added to our beer during and/or after the brewing process...\r\nThere’s nothing like it under the sun!!!"",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,23,1
+pacific_rim_brewing-puget_porter,0,0,244991262720,"{""name"":""Puget Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,26,1
+breckenridge_brewery,0,0,244492271616,"{""name"":""Breckenridge Brewery"",""city"":""Denver"",""state"":""Colorado"",""code"":""80204"",""country"":""United States"",""phone"":""303-623-2739"",""website"":""http://www.breckbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""471 Kalamath Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7236,""lon"":-105.001}}",1,44,1
+brouwerij_van_steenberge-gulden_draak,0,0,244491943936,"{""name"":""Gulden Draak"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""Gulden Draak is a beer in a class of its own. It is a beer that is rich and glowing, so full of its very own characteristic flavour, that it reminds some who try it of chocolate and others of coffee. In 1998 Gulden Draak was crowned “best beer in the world” by the American Tasting Institute! This beer has won many other awards too. Gulden Draak is named for the golden statue at the top of the clock tower of the Belgian city of Gent. The statue was originally given to the city of Constantinople by the Norse King Sigrid Magnusson in 1111, during the crusades; hence the form of a Viking ship that the beast was given. During a later crusade, Boudewijn IX (Count of Flanders and Emperor of Constantinople) took it back to Flanders with him because it was so beautiful. In 1382, the cities of Brugge and Gent did battle for the statue. Gent won.""}",1,43,1
+appalachian_brewing_company-abbey_roade_belgian_ale,0,0,244358381570,"{""name"":""Abbey Roade Belgian Ale"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Abbey Roade is brewed in the tradition of the famous Belgian Abbey-style ales.  This wonderful brew is soft and sweet up front.  The complex and spicy middle palate is in most part due to the generous addition of dark Belgian candy sugar.  This semi-dry ale has notes of ripe plum and pear with a peppery finish. \r\nThe origins of the Abbey-style ale date back to the Middle Ages.  Monks residing in monasteries, called Abbeys, brewed beer as a source of nutrition during their frequent and often lengthy fasting periods."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,3,1
+bayerische_staatsbrauerei_weihenstephan-festbier,0,0,244358119425,"{""name"":""Festbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayerische_staatsbrauerei_weihenstephan"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,1,1
+chimay_abbaye_notre_dame_de_scourmont-chimay_premiere_chimay_red,0,0,244493582338,"{""name"":""Chimay Première (Chimay Red)"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chimay_abbaye_notre_dame_de_scourmont"",""updated"":""2010-07-22 20:00:20"",""description"":""First sold in 75 cl (25.4 fl.oz.) bottles, it is noted for its coppery colour which makes it particularly attractive.\r\n\r\nTopped with a creamy head, it gives off a light, fruity apricot aroma produced by the fermentation. The taste perceived in the mouth is a balance confirming the fruity nuances noticed in the fragrance. \r\n\r\nIts taste, which imparts a silky sensation to the tongue, is made refreshing by a light touch of bitterness. To the palate, the taster perceives a pleasant astringency which complements the flavour qualities of this beer very harmoniously.\r\n\r\nThis top fermented Trappist beer, refermented in the bottle, is not pasteurised."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,46,1
+pivovary_staropramen-staropramen,0,0,244991721472,"{""name"":""Staropramen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovary_staropramen"",""updated"":""2010-07-22 20:00:20"",""description"":""Classic famous czech beer from Praha, one of the best beers of the world"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,27,1
+brasserie_duyck-jenlain_st_druon_de_sebourg,0,0,244490633216,"{""name"":""Jenlain St Druon de Sebourg"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_duyck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+mcmenamins_mill_creek-porter,0,0,244865368065,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,20,1
+whitbread_beer_company-mackeson_xxx_stout,0,0,245752725504,"{""name"":""Mackeson XXX Stout"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""whitbread_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Sweet Stout"",""category"":""British Ale""}",1,63,1
+abita_brewing_company-abita_light_beer,0,0,244358184962,"{""name"":""Abita Light Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:50:18"",""description"":""Uniquely hand-crafted using 100% all natural ingredients: The result is the smoothest, most flavorful light beer."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,2,1
+brouwerij_st_bernardus,0,0,244494237698,"{""name"":""Brouwerij St. Bernardus"",""city"":""Watou"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-057/38.80.21"",""website"":""http://www.sintbernardus.be"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Trappistenweg 23""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8425,""lon"":2.6362}}",1,48,1
+august_schell_brewing,0,0,244357857280,"{""name"":""August Schell Brewing"",""city"":""New Ulm"",""state"":""Minnesota"",""code"":""56073"",""country"":""United States"",""phone"":""800-770-5020"",""website"":""http://www.schellsbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The August Schell Brewing Company is a brewing company in New Ulm, Minnesota. It was founded by German immigrants August Schell and Jacob Bernhardt in 1860 and passed into the possession of the Schell family in 1866. It is the second oldest family-owned brewery in America and became the oldest and largest brewery in Minnesota when the company bought the Grain Belt rights in 2002."",""address"":[""1860 Schell Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.2896,""lon"":-94.449}}",1,0,1
+harviestoun_brewery-bitter_and_twisted,0,0,244742946817,"{""name"":""Bitter and Twisted"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harviestoun_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+union_barrel_works,0,0,245112242176,"{""name"":""Union Barrel Works"",""city"":""Reamstown"",""state"":""Pennsylvania"",""code"":""17567"",""country"":""United States"",""phone"":""717-335-7837"",""website"":""http://www.unionbarrelworks.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Union Barrel Works is a restaurant and brew pub located in Reamstown, Pennsylvania in an historic building which originally functioned as a hardware store. It later became Reamstown Garment and was a sewing factory. The building itself was built in 1911 and still has the original hardwood maple floors and authentic tin ceiling. Come visit us for a great atmosphere, better food and excellent beer!"",""address"":[""6 N. Reamstown Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.2118,""lon"":-76.1232}}",1,32,1
+brouwerij_de_block-satan_gold,0,0,244491485185,"{""name"":""Satan Gold"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_block"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+beamish_crawford-genuine_irish_stout,0,0,244374175745,"{""name"":""Genuine Irish Stout"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beamish_crawford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+elysian_brewing_tangletown-foster_child_australian_lager,0,0,244626751489,"{""name"":""Foster Child Australian Lager"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewing_tangletown"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+simmerberg_brusttt_und_taferne-weizen,0,0,244990738433,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""simmerberg_brusttt_und_taferne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,24,1
+scuttlebutt_brewing-sequoia_red,0,0,244991131649,"{""name"":""Sequoia Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,25,1
+kleinbrouwerij_de_glazen_toren-ondineke_oilsjtersen_tripel,0,0,244742619136,"{""name"":""Ondineke Oilsjtersen Tripel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kleinbrouwerij_de_glazen_toren"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+humboldt_brewing-redwood_amber,0,0,244743471104,"{""name"":""Redwood Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,23,1
+pinnacle_peak_patio_steakhouse_microbrewery,0,0,244991262721,"{""name"":""Pinnacle Peak Patio Steakhouse & Microbrewery"",""city"":""Scottsdale"",""state"":""Arizona"",""code"":""85255"",""country"":""United States"",""phone"":""1-480-563-5133"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10426 East Jomax Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.7268,""lon"":-111.853}}",1,26,1
+broad_ripple_brewing-stout,0,0,244492271617,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,44,1
+bulldog_brewing-aztec_amaranth_ale,0,0,244492009472,"{""name"":""Aztec Amaranth Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bulldog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+atwater_block_brewing-alt,0,0,244358381571,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,3,1
+bayern_brewing,0,0,244358119426,"{""name"":""Bayern Brewing"",""city"":""Missoula"",""state"":""Montana"",""code"":""59801"",""country"":""United States"",""phone"":""1-406-721-1482"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1507 Montana Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":46.8726,""lon"":-114.02}}",1,1,1
+courthouse_pub,0,0,244493647872,"{""name"":""Courthouse Pub"",""city"":""Manitowoc"",""state"":""Wisconsin"",""code"":""54220"",""country"":""United States"",""phone"":""1-920-686-1166"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1001 South Eighth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.0886,""lon"":-87.6576}}",1,46,1
+pivzavod_baltika-baltika_9,0,0,244991721473,"{""name"":""Baltika #9"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivzavod_baltika"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+brauerei_schumacher-alt,0,0,244490633217,"{""name"":""Alt"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_schumacher"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,40,1
+mcmullen_sons,0,0,244865368066,"{""name"":""McMullen & Sons"",""city"":""Hertford"",""state"":""Hertfordshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01992)-584911"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""26 Old Cross""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.7975,""lon"":-0.0806}}",1,20,1
+yazoo_brewing-esb,0,0,245752725505,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yazoo_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,63,1
+allentown_brew_works-fegley_s_amber_lager,0,0,244358184963,"{""name"":""Fegley's Amber Lager"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Amber Colored lager with a nice caramel malt flavor backed by a nice dose of Imported Hersbrucker Hops for a nice easy drinking lager."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,2,1
+brouwerij_st_feuillien-brune_bruin,0,0,244494237699,"{""name"":""Brune / Bruin"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_feuillien"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+avery_brewing_company-old_jubilation_ale,0,0,244357857281,"{""name"":""Old Jubilation Ale"",""abv"":8.0,""ibu"":30.0,""srm"":0.0,""upc"":7,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-12-19 09:56:02"",""description"":""A winter strong ale with mahogany hue, a hint of hazelnuts and a finish reminiscent of mocha and toffee. No spices, just a perfect blend of five specialty malts."",""style"":""Strong Ale"",""category"":""British Ale""}",1,0,1
+harviestoun_brewery-old_engine_oil,0,0,244742946818,"{""name"":""Old Engine Oil"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harviestoun_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,22,1
+upstream_brewing_company_at_legacy-blackstone_stout,0,0,245112242177,"{""name"":""Blackstone Stout"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,32,1
+brouwerij_der_sint_benedictusabdij_de_achelse_kluis-achel_trappist_extra,0,0,244491550720,"{""name"":""Achel Trappist Extra"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_der_sint_benedictusabdij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+bell_s_brewery_inc-best_brown_ale,0,0,244374175746,"{""name"":""Best Brown Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich brown ale perfect for the fall and winter. Plenty of malt character and smooth sweet finish give this brown ale its distinct character."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,41,1
+f_x_matt_brewing-saranac_pumpkin_ale,0,0,244626817024,"{""name"":""Saranac Pumpkin Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Pumpkin Ale is brewed with Pumpkin, Cinnamon, Allspice, Cloves, Ginger and Vanilla. Look for a full-body and amber color. We're sure you'll enjoy this special brew!"",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,47,1
+ska_brewing_company-modus_hoperandi,0,0,244990738434,"{""name"":""Modus Hoperandi"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,24,1
+sharktooth_brewing-big_kahuna_brown,0,0,244991131650,"{""name"":""Big Kahuna Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sharktooth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,25,1
+kona_brewing-black_sand_porter,0,0,244742619137,"{""name"":""Black Sand Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+independence_brew_pub-belgian_singel,0,0,244743471105,"{""name"":""Belgian Singel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""independence_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+pyramid_alehouse_brewery_and_restaurant_seattle-5_000_year_ale,0,0,244991328256,"{""name"":""5,000 Year Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+brouwerij_verhaeghe,0,0,244492271618,"{""name"":""Brouwerij Verhaeghe"",""city"":""Vichte"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-056-77-70-32"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Beukenhofstraat 96""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8322,""lon"":3.3884}}",1,44,1
+cedar_brewing-red_rocket_amber_ale,0,0,244492009473,"{""name"":""Red Rocket Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+512_brewing_company-512_ipa,0,0,244358774784,"{""name"":""(512) IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""(512) India Pale Ale is a big, aggressively dry-hopped American IPA with smooth bitterness (~65 IBU) balanced by medium maltiness. Organic 2-row malted barley, loads of hops, and great Austin water create an ale with apricot and vanilla aromatics that lure you in for more."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,5,1
+bell_s_brewery_inc-bell_s_cherry_stout,0,0,244358447104,"{""name"":""Bell's Cherry Stout"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich and powerful beer with tart cherry appeal, make this a fine stout."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,3,1
+big_ridge_brewing-old_sullivan_porter,0,0,244358119427,"{""name"":""Old Sullivan Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+duclaw-misfit_red,0,0,244626096128,"{""name"":""Misfit Red"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duclaw"",""updated"":""2010-07-22 20:00:20"",""description"":""This medium bodied amber ale has a smooth, malt character with a hint of roasted (dark) malt flavor. This beer has just enough hops to balance and goes well with many foods."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,46,1
+pony_express_brewing,0,0,244991721474,"{""name"":""Pony Express Brewing"",""city"":""Olathe"",""state"":""Kansas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.8814,""lon"":-94.8191}}",1,27,1
+brauerei_spezial,0,0,244490698752,"{""name"":""Brauerei Spezial"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-24304"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Obere Knigsstrae 10""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.8942,""lon"":10.8855}}",1,40,1
+mendocino_brewing_hopland-red_tail_ale,0,0,244865433600,"{""name"":""Red Tail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,20,1
+yuengling_son_brewing-yuengling_lager,0,0,245752791040,"{""name"":""Yuengling Lager"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Yuengling Traditional Lager is an iconic American lager famous for its rich amber color and medium-bodied flavor. Brewed with roasted caramel malt for a subtle sweetness and a combination of cluster and cascade hops, this true original promises a well balanced taste with very distinct character. Its exceptional flavor and smooth finish is prevalently enjoyed by consumers with even the most discerning tastes. Our flagship brand, Yuengling Traditional Lager is an American favorite delivering consistent quality and refreshment that never disappoints. In fact, it's so widely known and unique in its class, in some areas you can ask for it simply by the name \""Lager.\"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,63,1
+amherst_brewing_company-patriots_pilsner,0,0,244358250496,"{""name"":""Patriots Pilsner"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional European Pilsner light in body and color. This brew possesses mild hoppy flavors and a crisp clean finish. It is made with traditional European hops: Hallertau and Saaz."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,2,1
+bube_s_brewery-bube_s_india_pale_ale_ipa,0,0,244494303232,"{""name"":""Bube's India Pale Ale (IPA)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Bube's rendition of this classic style is made with fine 2-row malted barley and West Coast hops. A wonderful malt finish with a delicate citrus aroma, reminiscent of its Old-World cousin."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+basil_t_s_brew_pub_and_italian_grill-bad_seed_pumpkin_ale,0,0,244357857282,"{""name"":""Bad Seed Pumpkin Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""basil_t_s_brew_pub_and_italian_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+abita_brewing_company-restoration_pale_ale,0,0,244358578176,"{""name"":""Restoration Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Abita Restoration Pale Ale was created after the back-to-back hurricanes devastated Louisiana. With your help, the abita Brewing Company raised over $500,000 for hurricane relief. This brilliant, golden pale ale has a rich body, mild bitterness and a snappy, fresh citrus hop flavor and aroma. Cold filtered and brewed in small batches using no additives or preservatives, the Abita Company is proud to be Louisiana True."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,4,1
+heineken_international-heineken,0,0,244742946819,"{""name"":""Heineken"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heineken_international"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,22,1
+victory_brewing-v_12,0,0,245748203520,"{""name"":""V-12"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Heady with a aromatic fruity start and taste, this amber ale features hints of pear and apricot in its well-nuanced flavor. The initial impression of fruitiness concludes in a refreshing dryness that begs you to sip again. Be fore- warned, this ale is immense as it registers 12% abv."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,32,1
+caldera_brewing-dry_hop_orange,0,0,244491550721,"{""name"":""Dry Hop Orange"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A conundrum in the world of beer.  This ale does not fit any conventional beer style.  Orange in color only, this beer has hop characteristics of oranges and tangerines.""}",1,42,1
+bell_s_brewery_inc-winter_white_ale,0,0,244374241280,"{""name"":""Winter White Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A Wheat Ale brewed with American Wheat and a proprietary blend of Hefe and classic Belgian-style yeasts. A refreshing winter alternative created from the subtle fusion of two classic flavors."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,41,1
+founders_brewing-founders_black_rye,0,0,244626817025,"{""name"":""Founders Black Rye"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer will surprise you with a big hop flavor and a toasty sweet aroma. Pours black from the chocolate and de-bitterized black rye malts. This ale is medium bodied and is well flavored with hints of toffee, nutty undertones and a dry crisp finish."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,47,1
+sudwerk_privatbrauerei_hbsch-marzen,0,0,245108441088,"{""name"":""Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sudwerk_privatbrauerei_hbsch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,24,1
+sierra_nevada_brewing_co,0,0,244991131651,"{""name"":""Sierra Nevada Brewing Co."",""city"":""Chico"",""state"":""California"",""code"":""95928"",""country"":""United States"",""phone"":""1-530-893-3520"",""website"":""http://www.sierranevada.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1075 East 20th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7246,""lon"":-121.816}}",1,25,1
+krogh_s_restaurant_and_brewpub-gold,0,0,244742684672,"{""name"":""Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+iron_city_brewing_co-ic_light,0,0,244743471106,"{""name"":""IC Light"",""abv"":4.15,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""IC Light is an original, not a watered down copy, and brewed to be light from start to finish."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,23,1
+pyramid_alehouse_brewery_and_restaurant_seattle-hefeweizen,0,0,244991328257,"{""name"":""Hefeweizen"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+browar_warka-warka_strong,0,0,244492271619,"{""name"":""Warka Strong"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""browar_warka"",""updated"":""2010-07-22 20:00:20"",""description"":""European Strong Lager"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+corner_pub-ipa,0,0,244492009474,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""corner_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+abbaye_de_maredsous-6,0,0,244358840320,"{""name"":""6"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_de_maredsous"",""updated"":""2010-07-22 20:00:20"",""description"":""Blonde Ales are one of the fastest growing beer styles in Belgium, France and the UK. Moorgat's Maredsous 6 is an easy drinking Blonde with a balance of graininess and aromatic hop."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,5,1
+big_hole_brewing-mythical_white_grand_cru,0,0,244358447105,"{""name"":""Mythical White Grand Cru"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_hole_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+boston_beer_company-samuel_adams_holiday_porter,0,0,244358119428,"{""name"":""Samuel Adams Holiday Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Traditional, British style. Robust and full bodied.  Introduced as a member of the Winter Classics Mix Pack in 2004, Samuel Adams® Holiday Porter with its rich malt complexity has become a favorite among our winter seasonal brews. In total, five varieties of malted barley are used in the brewing process including a variety of German malt called Carafa®. The Carafa® gives our Holiday Porter its smooth, roasted malt character. Add generous portions of imported hops to the mix and one has a brew that is both robust and high in drinkability."",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+egan_brewing-raspberry_ginger_mead,0,0,244626227200,"{""name"":""Raspberry Ginger Mead"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+privatbrauerei_bolten,0,0,244991787008,"{""name"":""Privatbrauerei Bolten"",""city"":""Korschenbroich"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)2161-/-61790-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rheydter-Strae 138""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.1833,""lon"":6.4993}}",1,27,1
+brauhaus_brew_hall,0,0,244490764288,"{""name"":""Brauhaus Brew Hall"",""city"":""Lucan"",""state"":""Minnesota"",""code"":""56255"",""country"":""United States"",""phone"":""1-507-747-2796"",""website"":""http://www.braubrothersbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We are very excited to introduce Brau Brothers Brewing Company, LLC. We are a locally owned and operated brewery, producing strictly for a local and regional market. We like to stay close to the beer we produce as well as to the people who drink it. Our modest scale allows us to be more flexible, dynamic, and closer to retailers as well as beer drinkers."",""address"":[""111 Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.4105,""lon"":-95.4107}}",1,40,1
+mississippi_brewing_co,0,0,244865433601,"{""name"":""Mississippi Brewing Co."",""city"":""Utica"",""state"":""New York"",""code"":""11042"",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":40.687,""lon"":-73.708}}",1,20,1
+yingyi,0,0,91351115366400,"{""click"":""to edit"",""new in 2.0"":""there are no reserved field names""}",1,63,1
+anchor_brewing-old_foghorn_2002,0,0,244358250497,"{""name"":""Old Foghorn 2002"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+bube_s_brewery-bube_s_munich_lager,0,0,244494303233,"{""name"":""Bube's Munich Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+berliner_kindl_brauerei_ag-weisse,0,0,244357857283,"{""name"":""Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""berliner_kindl_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+adnams_co,0,0,244358578177,"{""name"":""Adnams & Co."",""city"":""Southwold"",""state"":""Suffolk"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01502)-727200"",""website"":""http://www.adnams.co.uk"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Adnams is one of England's oldest and most respected breweries, but despite its rich heritage and enduring fame, Adnams is not a company willing to rest on its laurels. Its continued commitment to quality and innovative packaging designs has made it Britain's fastest growing brewery over the last two years. To top it off, Adnams' head brewer was recently chosen as Britain's Brewer of the Year by a panel of his peers. The aggressive team at Adnams is raring to go and keen to make a mark in the U.S."",""address"":[""IP18 6JW""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.3277,""lon"":1.6802}}",1,4,1
+heineken_international,0,0,244743012352,"{""name"":""Heineken International"",""city"":"""",""state"":"""",""code"":"""",""country"":""Netherlands"",""phone"":"""",""website"":""http://www.heineken.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,22,1
+wdi_bru_huus-hell,0,0,245748203521,"{""name"":""Hell"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+capital_brewery-capital_munich_dark,0,0,244491616256,"{""name"":""Capital Munich Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+bellows_brew_crew-wheat,0,0,244374241281,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+gasthof_brauerei_zum_frohsinn-dunkel,0,0,244626817026,"{""name"":""Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthof_brauerei_zum_frohsinn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+tap_room_brewing_company,0,0,245108506624,"{""name"":""Tap Room Brewing Company"",""city"":""La Crosse"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.taproom21.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.8014,""lon"":-91.2396}}",1,24,1
+siletz_roadhouse_brewery-black_diamond_imperial_porter,0,0,244991197184,"{""name"":""Black Diamond Imperial Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""siletz_roadhouse_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,25,1
+left_hand_brewing_company-black_jack_porter,0,0,244742684673,"{""name"":""Black Jack Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+issaquah_brewhouse-frosty_frog,0,0,244743471107,"{""name"":""Frosty Frog"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""issaquah_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+river_horse_brewing_company-belgian_freeze_winter_ale,0,0,244991393792,"{""name"":""Belgian Freeze Winter Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_horse_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""As the days grow shorter and frost becomes snow, our Belgian Freeze winter ale is the perfect remedy to loosen the spirits. This deep amber tonic is brewed with lots of roasted caramel malt for body and warmth to bring in the holidays and see you through the spring."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,26,1
+bube_s_brewery-bube_s_brown_ale,0,0,244492337152,"{""name"":""Bube's Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Another one of our first recipes, which we have improved with experience. This ale is pleasantly malty with nutty and toffee like undertones. East Kent Golding hops were used to compliment this English style ale."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,44,1
+cricket_hill-circket_hill_american_ale,0,0,244492075008,"{""name"":""Circket Hill American Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cricket_hill"",""updated"":""2010-07-22 20:00:20"",""description"":""Our American Ale is a favorite everywhere - an amber ale with a wonderful balance of caramel sweetness and hop flavor. The aroma has a slight note of citrus and rock candy. There is not an imported Ale on the market that tastes this fresh!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+ale_asylum,0,0,244358840321,"{""name"":""Ale Asylum"",""city"":""Madison"",""state"":""Wisconsin"",""code"":""53704"",""country"":""United States"",""phone"":""6086633926"",""website"":""http://www.aleasylum.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""HOURS OF OPERATION:"",""address"":[""3698 Kinsman Blvd""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.1257,""lon"":-89.3253}}",1,5,1
+big_ridge_brewing-brotherhood_black_tan,0,0,244358447106,"{""name"":""Brotherhood Black & Tan"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,3,1
+boulevard_brewing_company-boulevard_pale_ale,0,0,244358184960,"{""name"":""Boulevard Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Boulevard Pale Ale is a smooth, fruity, well-balanced beer with year-round appeal. A variety of caramel malts impart a rich flavor and amber color, while liberal use of whole hops adds zest and aroma. Pale Ale is the first beer we brewed, and continues to be a perennial favorite."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+egan_brewing-sod_off_baldrick,0,0,244626227201,"{""name"":""Sod Off, Baldrick"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+rail_house_restaurant_and_brewpub-pilsner_discontinued,0,0,244991787009,"{""name"":""Pilsner (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,27,1
+brouwerij_bockor,0,0,244490764289,"{""name"":""Brouwerij Bockor"",""city"":""Bellegem"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-056-21-51-71"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kwabrugstraat 5""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7767,""lon"":3.2785}}",1,40,1
+mogollon_brewing_company-apache_trout_stout,0,0,244865433602,"{""name"":""Apache Trout Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mogollon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""From Arizona’s high country comes Apache Trout Stout, a robust, full bodied, top fermented ale.  Our brewers use mountain pure water, select roasted barley, hops and yeast to create this traditional style.  Savor the balanced, roasted malt flavor and the lingering sweetness that makes this dry stout a cool weather treat."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,20,1
+ali_i_brewing-macadamia_nut_brown_ale,0,0,244359364608,"{""name"":""Macadamia Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ali_i_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+barley_island_brewing,0,0,244358250498,"{""name"":""Barley Island Brewing"",""city"":""Noblesville"",""state"":""Indiana"",""code"":""46060"",""country"":""United States"",""phone"":""1-317-770-5280"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""639 Conner Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.0453,""lon"":-86.0155}}",1,2,1
+cains-dark_mild,0,0,244494368768,"{""name"":""Dark Mild"",""abv"":3.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cains"",""updated"":""2011-05-17 03:19:48"",""description"":""This is a smooth, full flavoured, truly dark mild with a rich creamy head. It has a full body and distinctive roasted malt taste, balanced by its fresh hop character. Complex flavours and aromas are achieved by blending deeply roasted malt and adding a selected blend of English hops, including dry hops, to the cask conditioned beer."",""style"":""English-Style Dark Mild Ale"",""category"":""British Ale""}",1,48,1
+big_boss_brewing_company-hell_s_belle,0,0,244357857284,"{""name"":""Hell's Belle"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_boss_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This style originated in Belgium to compete with the pilsners from Czechoslovakia, Germany, and Poland. It is a fruity ale with very strong carbonation, with complex, spicy flavors like cloves."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,0,1
+alesmith_brewing-ipa,0,0,244358578178,"{""name"":""IPA"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,4,1
+hoffbrau_steaks_brewery_1-black_rock_bock,0,0,244743012353,"{""name"":""Black Rock Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,22,1
+whitbread_beer_company-ale,0,0,245748269056,"{""name"":""Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""whitbread_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,32,1
+capital_city_brewing_company,0,0,244491616257,"{""name"":""Capital City Brewing Company"",""city"":""Washington"",""state"":""District of Columbia"",""code"":""20005"",""country"":""United States"",""phone"":""202.628.2222"",""website"":""http://www.capcitybrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Washington DC's first brewpub since prohibition, Capitol City Brewing Co. opened its doors in 1992. Our first location still stands in Downtown DC, at 11th and H St., NW. Our company policy is to bring the fine craft of brewing to every person who lives and visits our region, as well as treating them to a wonderful meal and a great experience."",""address"":[""1100 New York Ave, NW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.8999,""lon"":-77.0272}}",1,42,1
+big_time_brewing-slam_dunkelweizen,0,0,244374306816,"{""name"":""Slam Dunkelweizen"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+george_gale_company-conquest_ale,0,0,244626817027,"{""name"":""Conquest Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""george_gale_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,47,1
+taylor_brewing,0,0,245108506625,"{""name"":""Taylor Brewing"",""city"":""Lombard"",""state"":""Illinois"",""code"":""60148"",""country"":""United States"",""phone"":""1-630-990-8700"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""717 East Butterfield Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.8358,""lon"":-88.0091}}",1,24,1
+siletz_roadhouse_brewery-spruce_ale,0,0,244991197185,"{""name"":""Spruce Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""siletz_roadhouse_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+little_apple_brewing-blarney_stone_stout,0,0,244865695744,"{""name"":""Blarney Stone Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_apple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+jj_bitting_brewing-cali_steam_locomotive,0,0,244743536640,"{""name"":""Cali \""Steam\"" Locomotive"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jj_bitting_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+rock_bottom_restaurant_brewery_chicago,0,0,244991459328,"{""name"":""Rock Bottom Restaurant & Brewery - Chicago"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60610"",""country"":""United States"",""phone"":""1-312-755-9339"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 West Grand Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.8915,""lon"":-87.6284}}",1,26,1
+cambridge_brewing-charles_river_porter,0,0,244492402688,"{""name"":""Charles River Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cambridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Charles River Porter\r\n\r\nDeep and dark, full-bodied and robust, our Porter is crammed full of rich, roasted malt character. With underlying notes of fruitness, caramel and toffee, it finishes with a strong hop presence"",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+dark_horse_brewing_co-plead_the_5th_imperial_stout,0,0,244492075009,"{""name"":""Plead the 5th Imperial Stout"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""It's big and full bodied with lots of roasted malts and balanced with heavy hops to put this imperial in a league of its own."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,43,1
+amherst_brewing_company-graduation_ale,0,0,244358840322,"{""name"":""Graduation Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Golden pale ale, slightly hoppy. Brewed each May for the upcoming graduates. It took you four hard years to graduate so we made this one easy to drink. Congratulations!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,5,1
+big_rock_brewery-grasshopper,0,0,244358447107,"{""name"":""Grasshopper"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,3,1
+brauerei_gasthof_zur_krone-see_weizen_bio_hefeweizen,0,0,244474380288,"{""name"":""See-Weizen Bio-Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gasthof_zur_krone"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,1,1
+egan_brewing-steinworthy_oktoberfest,0,0,244626227202,"{""name"":""Steinworthy Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,46,1
+rail_house_restaurant_and_brewpub-stout_discontinued,0,0,244991787010,"{""name"":""Stout (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,27,1
+brouwerij_de_smedt,0,0,244490764290,"{""name"":""Brouwerij De Smedt"",""city"":""Opwijk"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-052-35-99-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ringlaan 18""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.971,""lon"":4.191}}",1,40,1
+molson_breweries_of_canada-molson_canadian,0,0,244865499136,"{""name"":""Molson Canadian"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":""Molson beers are imported directly from Canada.  Crystal-clear, pure Canadian water, the finest Canadian prairie grains and select European hops give Molson a brewing heritage that dates back to 1786.\r\n\r\nMolson Canadian is Molson Brewing Company's flagship brand.  Starting with crystal clear water, malted barley and the finest hops, Molson Canadian is slowly fermented to produce a smooth, refreshing beer with a genuine taste. Clean and clear, crisp and cold, Molson Canadian is a classic lager."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+allentown_brew_works-pig_pen_pilsener,0,0,244359364609,"{""name"":""Pig Pen Pilsener"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Crisp Clean and refreshing Golden Lager brewed with German Malt and Hops for an authentic flavor. Pig Pen Pils is a great introduction into the world of Craft Brewed beer."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,7,1
+big_sky_brewing-powder_hound_winter_ale,0,0,244358250499,"{""name"":""Powder Hound Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Two words describe Montana winters... Cold, dark, and snowy. And we wouldn't have it any other way, because it's the only time of year for Powder Hound, our Northern Rockies Winter Ale. Rich malt taste and an avalanche of hops will make you want to say these three words- \""I'll have another Powder Hound!\""  \r\n\r\nSince Powder Hound is our own creation, it does not fit neatly into a style. Some folks would call it an \""Old Ale\"" and others might call it a \""Winter Warmer\"". Regardless of what you call it, Powder Hound satisfies, with the fine, hand-selected British hops fully complementing the smooth malt notes. After a day on the snow, enjoy a Powder Hound Winter Ale. Available November through March."",""style"":""Old Ale"",""category"":""British Ale""}",1,2,1
+capitol_city_brewing_4-prohibition_porter,0,0,244494368769,"{""name"":""Prohibition Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capitol_city_brewing_4"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+bison_brewing-bison_chocolate_stout,0,0,244357922816,"{""name"":""Bison Chocolate Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""This richly textured, roasty dry stout has a boost of bitter and charismatic flavor from the addition of cocoa powder in the mash. We blend five unique organic malts to create Bison's most award winning beer.\"" from http://bisonbrew.com/chocolate-stout.asp\r\n\r\nAnd I concur.  This is a relatively mild stout, with a malty rich flavor.  Adding this to my list of preferred beers.""}",1,0,1
+anchor_brewing-our_special_ale_1994,0,0,244358643712,"{""name"":""Our Special Ale 1994"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+hook_ladder_brewing_company-hook_ladder_lighter,0,0,244743012354,"{""name"":""Hook & Ladder Lighter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_ladder_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The right choice when you desire a flavorful beer with a 'lighter' body. Only 94 calories!"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,22,1
+abita_brewing_company-s_o_s,0,0,244359102464,"{""name"":""S.O.S"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:48:20"",""description"":""Save Our Shores (S.O.S) is an unfiltered weizen pils and has a brilliant golden color. A Charitable Pilsner"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,6,1
+cervecera_cuauhtmoc_moctezuma-cerveza_sol,0,0,244491681792,"{""name"":""Cerveza Sol"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,42,1
+brasserie_la_caracole-nostradamus,0,0,244491026432,"{""name"":""Nostradamus"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_caracole"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+gold_coast_brewery-golden_harvest_weizenbier,0,0,244626882560,"{""name"":""Golden Harvest Weizenbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gold_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,47,1
+the_lost_abbey-lost_and_found_abbey_ale,0,0,245108572160,"{""name"":""Lost and Found Abbey Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""Lost and Found- Modeled after the great Trappist and Monastic beers that inspired the founding of our brewery. A richly deep garnet colored ale created from a blend of Domestic and imported malts. As part of our commitment to interesting brewing endeavors, Chef Vince created a special raisin puree for this beer. Malts, raisins and a fantastic yeast strain working in harmony produce a beer of amazing complexity and depth. Available in 750ml bottles and on draft at select inspired locations."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,24,1
+slab_city_brewing-holiday_ale,0,0,244991197186,"{""name"":""Holiday Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+magnolia_pub_and_brewery-cole_porter,0,0,244865695745,"{""name"":""Cole Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magnolia_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+lagunitas_brewing_company-maximus_ale,0,0,244743536641,"{""name"":""Maximus Ale"",""abv"":8.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+russian_river_brewing-parking_violation,0,0,244991459329,"{""name"":""Parking Violation"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Wouldn't it suck to have a job where nobody likes you? And, regardless of your name, people always call you Rita, as in \""Lovely Rita?\"" Sometimes people just shorten it to the simpler \""meter maid.\"" The funny thing about that is the Webster dictionary defines a \""meter maid\"" as \""a female member of a police department who is assigned to write tickets for parking violations.\"" You have to wonder how the male \""meter maids\"" feel about that! Parking Violation is an American style pale ale using lots of American hops, lots of quarters, and several trips back and forth to the parking lot. So, remember to drink responsibly and feed your meter."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+central_waters_brewing_company-happy_heron_pale_ale,0,0,244492402689,"{""name"":""Happy Heron Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This crisp, zesty American pale is characterized by the sharp bitterness missing in many domestic pale ales. The clean finish and slight fruity notes help make our flagship brew a delightful treat."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+dark_horse_brewing_co-three_guy_off_the_scale_barley_wine,0,0,244492075010,"{""name"":""Three Guy Off The Scale Barley Wine"",""abv"":15.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A barley wine style ale brewed to 15% alc with hints of raisin, chocolate, carmel, sherry, cherry, and alcohol, just to name a few and this beer will only get better with age."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,43,1
+appalachian_brewing_company-sophie_s_sparkling_ale,0,0,244358840323,"{""name"":""Sophie's Sparkling Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Braggart Mead styled ale is light and refreshing with an essence of orange blossoms, pear, and honey in the aroma and a balanced fruity and clean finish. \r\n\r\nThis style was developed by our Brewmaster to have the perfect carbonation and crispness on our summer’s hot and humid Pennsylvania days.""}",1,5,1
+big_sky_brewing-crystal_ale,0,0,244358447108,"{""name"":""Crystal Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+brouwerij_abdij_der_trappisten_van_westmalle,0,0,244474445824,"{""name"":""Brouwerij Abdij der Trappisten van Westmalle"",""city"":""Westmalle"",""state"":""Antwerpen"",""code"":"""",""country"":""Belgium"",""phone"":""32-033-12-05-35"",""website"":""http://www.trappistwestmalle.be"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""or more than 200 years the Westmalle Trappists have chosen a life of prayer and work. That is their true vocation, entirely in accordance with the rule of Saint Benedict. Monks, he stipulates, have to provide for themselves. hus there is also a brewery within the abbey. The monks deliberately keep production small, with special care for man and the environment. And because profit is not their motive, they spend the surplus from it on charity work and on people in need."",""address"":[""Antwerpsesteenweg 476""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.2974,""lon"":4.6881}}",1,1,1
+elysian_brewery_public_house-ambrosia_maibock,0,0,244626292736,"{""name"":""Ambrosia Maibock"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,46,1
+red_star_brewery_grille-red_star_pilsner,0,0,244991852544,"{""name"":""Red Star Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_star_brewery_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,27,1
+brouwerij_van_den_bossche,0,0,244490764291,"{""name"":""Brouwerij Van Den Bossche"",""city"":""Sint-Lievens-Esse"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-054-50-04-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""St Lievensplein 16""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8564,""lon"":3.8845}}",1,40,1
+moylan_s_brewery_restaurant-irish_dry_stout,0,0,244865499137,"{""name"":""Irish Dry Stout"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,20,1
+alpine_beer_company-nelson,0,0,244359364610,"{""name"":""Nelson"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alpine_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Golden Rye IPA.\r\nAn outstanding hop from New Zealand, Nelson Sauvin, is generously used throughout the brewing and dry-hopping of this unique beer. European rye is added for a smooth, malty addition to flavor. 1.065 OG 7%ABV"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+boston_beer_company-samuel_adams_brown_ale,0,0,244358250500,"{""name"":""Samuel Adams Brown Ale"",""abv"":5.35,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""rk in color yet medium bodied. Rich and smooth.\r\nSamuel Adams® Brown Ale is a study in flavor, body, and style. Supported by an interesting blend of malts, it shines with a deep mahogany luster. The roasted malt blend is complex and deep as well, with notes of biscuit, nut and caramel. The hops are imported from Europe; Noble Spalt from Germany and citrusy Goldings, a traditional British ale hop selected from a single farm in East Kent. With moderate hop bitterness, a deep malt body, and a fruity ale fermentation character, Samuel Adams® Brown Ale satisfies the soul and doesn"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,2,1
+cervecera_jerome-cerveza_diablo,0,0,244494368770,"{""name"":""Cerveza Diablo"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_jerome"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+blackstone_restaurant_brewery-chaser_pale,0,0,244357922817,"{""name"":""Chaser Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blackstone_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+anheuser_busch-bud_dry,0,0,244358643713,"{""name"":""Bud Dry"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Introduced in 1989 Bud Dry is the first dry-brewed beer produced by an American brewer. It is brewed with select hops, grains and barley malt, which results in a lighter body and less-sweet taste. As with all Anheuser-Busch beers, it is cold-filtered for a smooth draft taste, but then goes through a second cold-filtered finishing process to provide its unique taste."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,4,1
+hoppin_frog_brewery-wild_frog_wheat,0,0,244743077888,"{""name"":""Wild Frog Wheat"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditional German-style, unfiltered wheat beer, with a lively balanced flavor. Although no fruit or spices were used in the brewing, these flavors are created by fermentation with special yeast from the oldest brewery in the world. Try Wild Frog Wheat with a slice of orange for a crisp, refreshing experience"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,22,1
+ali_i_brewing-kona_coffee_stout,0,0,244359168000,"{""name"":""Kona Coffee Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ali_i_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,6,1
+cheshire_cat_brewery-black_cat_stout,0,0,244491681793,"{""name"":""Black Cat Stout"",""abv"":6.15,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cheshire_cat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+brauhaus_brew_hall-brau_light,0,0,244491091968,"{""name"":""Brau Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_brew_hall"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+goose_island_beer_company_clybourn-kriek,0,0,244626882561,"{""name"":""Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,47,1
+three_floyds_brewing-munsterfest,0,0,245108572161,"{""name"":""Munsterfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,24,1
+spoetzl_brewery-shiner_kosmos_reserve,0,0,245108768768,"{""name"":""Shiner Kosmos Reserve"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spoetzl_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Kosmos Spoetzl knew how to brew great beer. Born in Bavaria, Kosmos’ mastery of German brewing carried him as far as Egypt before he found his way to the small Texas town of Shiner. Our proud brewery still carries his name and commitment to excellence in brewing. This full-flavored, hop-jacked lager is every bit as unique as the man himself and our way of saluting the brewmaster who started it all."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+main_street_brewery-hop_daddy_ipa,0,0,244865761280,"{""name"":""Hop Daddy IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,21,1
+lakefront_brewery-old_3rd_street_xxx_belgian_strong_ale,0,0,244743536642,"{""name"":""Old 3rd Street XXX Belgian Strong Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+abbaye_de_maredsous-10,0,0,244360216576,"{""name"":""10"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_de_maredsous"",""updated"":""2010-07-22 20:00:20"",""description"":""Moortgat's Maredsous 10 is an orangy-blond big sweet tripel nudging into a barley wine."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,9,1
+sabmiller_india-haywards_2000,0,0,244991459330,"{""name"":""Haywards 2000"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Haywards 2000 H2K is India's only beer with an ABV of 5.5%, whilst the rest of the beers are either less than 5% or greater than 7.5% - 8%\r\n\r\nTaste:  Rich, smooth and crisp taste \r\nMalts:  Indian malts, 6 row barley \r\nHops:  Hop extract from Germany and Indian hops palate \r\nColour:  Gold  \r\nAvailability:  Parts of India  \r\nFermentation process: Bottom-fermented  \r\nServing temperature:  7 - 9 °C  \r\nPackaging:  650 ml and 330 ml glass bottle and 330 ml cans  \r\n\r\nhttp://www.sabmiller.in/brands_haywards_2000.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+cervecera_nacional-atlas_lager,0,0,244492468224,"{""name"":""Atlas Lager"",""abv"":3.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_nacional"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+dock_street_beer-dock_street_amber,0,0,244624785408,"{""name"":""Dock Street Amber"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dock_street_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""Dock Street Amber is a classic, top fermented ale and is the company flagship beer. \r\n\r\nIt is brewed with American Cascade hops and two row imported pale and caramel malts and then dry hopped. Our traditional brewing process gives this beer its subtle, complex and fruity character and its distinctive hop \""nose.\"" The result is an exceptionally balanced premium full bodied ale that finishes clean and smooth on the palate. It appeals to gourmets and beer aficionados.\r\n\r\nOur goal in brewing the Dock Street Amber was to produce a phenomenal tasting American beer. At the time it was created, most all full-bodied beers were imports.\"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+august_schell_brewing-grain_belt,0,0,244358905856,"{""name"":""Grain Belt"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""august_schell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer has changed hands a bit over its 60+ year history - first brewed by the Grain Belt Brewery in Minneapolis, then by the now-defunct Minnesota Brewing and currently by August Schell Brewing Co. in New Ulm."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+big_time_brewing-black_mulligan_dublin_stout,0,0,244358512640,"{""name"":""Black Mulligan Dublin Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,3,1
+brouwerij_duvel_moortgat-maredsous_10_tripple,0,0,244474511360,"{""name"":""Maredsous 10 Tripple"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_duvel_moortgat"",""updated"":""2010-07-22 20:00:20"",""description"":""In 1963, the Benedictine abbey of Maredsous entrusted the production and sales of the famed Maredsous beers to Duvel Moortgat. The monks continue to exercise strict control over its recipes and quality standards right up to today.\r\n\r\n \r\n\r\nRegardless of what colour or taste you choose, the Maredsous range has everything to intrigue you. These aromatic, delicate, fruity and velvety beers supplement each other in a perfect harmony as far as both colour and taste experience are concerned.\r\n\r\nThe blonde Maredsous with 6% alcohol content, the brown one with 8% alcohol content and the triple one with 10% alcohol content ripen first for two full months before they depart to their final destination. The specific bottle fermentation, refined by the brewery for its main brand Duvel, also give the Maredsous abbey beers an extra dimension. \t \r\n\r\nAbout Maredsous\r\n\r\nThe triple Maredsous with 10% alcohol content is one of the favourite beers of Michael Jackson, the outstanding beer ’pope’:\r\n\""These beers have long been my favourites. Above all the 10° is an especially tasty beer.\"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,1,1
+faultline_brewing_1-best_bitter,0,0,244626292737,"{""name"":""Best Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+richbrau_brewing_company,0,0,244991852545,"{""name"":""Richbrau Brewing Company"",""city"":""Richmond"",""state"":""Virginia"",""code"":""23219"",""country"":""United States"",""phone"":""(804) 644-3018"",""website"":""http://www.richbrau.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1214 East Cary St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.5356,""lon"":-77.4338}}",1,27,1
+brouwerij_van_steenberge-tikka_gold,0,0,244490829824,"{""name"":""Tikka Gold"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+nebraska_brewing_company-porter,0,0,244865499138,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,20,1
+anchor_brewing-liberty_ale,0,0,244359430144,"{""name"":""Liberty Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""San Francisco's famouse Liberty Ale was first brewed on the 18th of April, 1975 to celebrate the 200th anniversary of Paul Revere's historic ride. It is virtually handmade by the brewers of Anchor Steam Beer in one of the smallest and most traditional breweries in the world. Liberty Ale is made with the finest barley malt, fresh, whole hops, top fermenting yeast, pure water and the simple natural methods which reflect our exceptional respect for the ancient art of brewing. It is \""dry hopped,\"" a classic ale tradition, and slowly completes its fermentation in sealed vats in our cellars. This unique process creates Liberty Ale's distinctive bouquet and uncommonly delicate, entirely natural carbonation."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+brasserie_de_brunehaut,0,0,244358316032,"{""name"":""Brasserie de Brunehaut"",""city"":""Brunehaut"",""state"":""Hainaut"",""code"":""7623"",""country"":""Belgium"",""phone"":""32-069-34-64-11"",""website"":""http://www.brunehaut.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An artisanal (non-conglomerate) brewer, Brunehaut employs ancient Belgian brewing recipes, dating from the First Crusade and documented from 1096. Combining top (in-bottle) fermentation with modern production technologies, Brunehaut's signature ales include Dubble and Tripel bottle-conditioned ales, consistent with 1500+-year-old Belgian brewing traditions. Three bio (organic) beers, distributed under the Brunehaut label, use organic gains, grown by the brewers, within ten kilometers of the brewhaus."",""address"":[""Rue de Panneries 17""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.5109,""lon"":3.3883}}",1,2,1
+cervecera_jerome-cerveza_roja,0,0,244494434304,"{""name"":""Cerveza Roja"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_jerome"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,48,1
+bobcat_cafe_brewery,0,0,244357922818,"{""name"":""Bobcat Cafe & Brewery"",""city"":""Bristol"",""state"":""Vermont"",""code"":""5443"",""country"":""United States"",""phone"":""(802) 453-3311"",""website"":""http://www.bobcatcafe.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Nestled at the foot of the Green Mountains & located right in the heart of Bristol, The Bobcat Cafe & Brewery is just walking distance from the town green, downtown shopping & the Crystal Palace B&B. Established in 2001, this popular, community oriented cafe & brewery features a wide selection of house brewed beers, a diverse menu to meet any taste, carefully selected wines & a full bar."",""address"":[""4 Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.1332,""lon"":-73.0784}}",1,0,1
+anheuser_busch-bud_ice,0,0,244358643714,"{""name"":""Bud Ice"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Actually an Ice Lager. Introduced in 1984."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+illinois_brewing-newmarket_pale_ale,0,0,244743077889,"{""name"":""Newmarket Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""illinois_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+amherst_brewing_company-bankers_gold,0,0,244359168001,"{""name"":""Bankers Gold"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Just another day at the bank. Very light, mild ale with a subtle hop finish. Brewed once a year in early Spring."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,6,1
+circle_v_brewing,0,0,244491681794,"{""name"":""Circle V Brewing"",""city"":""Indianapolis"",""state"":""Indiana"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.7684,""lon"":-86.158}}",1,42,1
+breckenridge_bbq_of_omaha,0,0,244491157504,"{""name"":""Breckenridge BBQ of Omaha"",""city"":""Omaha"",""state"":""Nebraska"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.254,""lon"":-95.9993}}",1,41,1
+gottberg_brew_pub-old_powerhouse_lager_discontinued,0,0,244626948096,"{""name"":""Old Powerhouse Lager (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+thunder_canyon_brewery,0,0,245108572162,"{""name"":""Thunder Canyon Brewery"",""city"":""Tucson"",""state"":""Arizona"",""code"":""85741"",""country"":""United States"",""phone"":""1-520-797-2652"",""website"":""http://www.thundercanyonbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7401 North La Cholla Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.3407,""lon"":-111.015}}",1,24,1
+stieglbrauerei_zu_salzburg_gmbh-columbus_pils,0,0,245108834304,"{""name"":""Columbus Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,25,1
+maisel_bru-benediktiner_dunkel,0,0,244865761281,"{""name"":""Benediktiner Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maisel_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+lancaster_brewing_co-gold_star_pilsner,0,0,244743536643,"{""name"":""Gold Star Pilsner"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Crisp and refreshing, this classic Bohemian Pilsner brings noble hop flavor and traditional German maltiness into perfect union before another healthy dose of imported hops tips the scales towards a decidedly hoppy finish."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,23,1
+anchor_brewing-old_foghorn_1996,0,0,244360282112,"{""name"":""Old Foghorn 1996"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+sacramento_brewing_company-sacramento_bock,0,0,244991524864,"{""name"":""Sacramento Bock"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sacramento_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A stronger German lager brewed with lots and lots of Munich malt for a toasty bready like aroma."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,26,1
+charlie_and_jake_s_brewery_and_bbq,0,0,244492468225,"{""name"":""Charlie and Jake's Brewery and BBQ"",""city"":""Melbourne"",""state"":""Florida"",""code"":""32940"",""country"":""United States"",""phone"":""1-321-752-7675"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6300 North Wickham Road #137""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":28.2126,""lon"":-80.6734}}",1,44,1
+dogfish_head_craft_brewery-aprihop,0,0,244624850944,"{""name"":""Aprihop"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with luscious apricots, finished with whole-leaf hops. A \""fruit beer for hop heads...\"" Ale Street News"",""style"":""Fruit Beer"",""category"":""Other Style""}",1,43,1
+ballast_point_brewing-black_marlin_porter,0,0,244358905857,"{""name"":""Black Marlin Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ballast Point Black Marlin Porter is a rich dark chocolaty Porter with a distinctive American hop character.  It is a great beer to go with hearty foods and is surprisingly one of the few beers that goes well with dessert. One of our favorite combinations here at Ballast Point is Black Marlin Porter with apple pie a la mode."",""style"":""Porter"",""category"":""Irish Ale""}",1,5,1
+black_creek_historic_brewery-black_creek_porter,0,0,244358512641,"{""name"":""Black Creek Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""black_creek_historic_brewery"",""updated"":""2011-06-08 07:10:06"",""description"":""Porter is a dark-coloured beer developed in the 1750s. Porter has a heavier flavour and aroma and a slightly sweet taste. Its name probably originates in the belief that this strong, nourishing drink was ideal for hard-working porters and labourers. Black Creek Porter is wonderful on its own, or with salty snacks.\n\n"",""style"":""Smoke Beer"",""category"":""Other Style""}",1,3,1
+browar_namyslow_sp_z_o_o,0,0,244474511361,"{""name"":""Browar Namysłów Sp. z o.o."",""city"":""Namysłów"",""state"":"""",""code"":"""",""country"":""Poland"",""phone"":""48-(077)-40-39-100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""ul. Bolesawa Chrobrego 26""]}",1,1,1
+fifty_fifty_brewing_co-rockslide_ipa,0,0,244626292738,"{""name"":""Rockslide IPA"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""If being in one of the coldest places in the US isn't extreme enough, the contents of this beer may very well redefine your commitment to the pursuit of hops. Rockslide IPA is brewed in the 'West Coast' style with aggressive amounts of American hops such as Amarillo, Centennial and Summit hops. You are greeted with a full frontal assault of citrus/grapefruit/pine hop character, followed up with malt to balance the mouthfeel. This beer is all about hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,46,1
+ridgeway_brewing-criminally_bad_elf,0,0,244991852546,"{""name"":""Criminally Bad Elf"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+bube_s_brewery-bube_s_stout,0,0,244490829825,"{""name"":""Bube's Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark full bodied stout is perfect with a meal or as a meal. Rolled oats give this beer an enjoyable mouthfeel while chocolate and roasted malts lend to its distinctive flavor."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,40,1
+new_belgium_brewing-big_shot_seasonal_ale,0,0,244865564672,"{""name"":""Big Shot Seasonal Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,20,1
+allentown_brew_works-rude_elf_s_reserve,0,0,244359757824,"{""name"":""Rude Elf's Reserve"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Our silver medal winning Belgian style Holiday beer brewed with dark Belgian candied sugar and special spices. This brew has a spicy aroma and flavor with a sweet malt taste. At 10.5% alcohol it is sure to warm you up during the Holiday season."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,8,1
+arcadia_brewing-hopmouth_double_ipa,0,0,244359430145,"{""name"":""Hopmouth Double IPA"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The first in our Brew Crew Big Beer Series, Hopmouth Double IPA is a hop lover’s delight!  Deep amber hue with a generous white head, Hopmouth showcases a rich, toasty flavor and a sweet caramel notes as a result of the high-quality Maris Otter Malt, imported from the UK.  The hops are right up front in the aroma, reminiscent of citrus and pine, while the resin-like flavors linger well after the last sip.\r\n\r\nThis is a BIG beer.  True to our original vision, we have achieved a level of balance and drinkability rarely found in this style.  Delicious on its own, Hopmouth is also a brilliant pair with many boldly-flavored foods, including many cheeses and desserts."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,7,1
+brasserie_de_l_abbaye_des_rocs-montagnarde,0,0,244358316033,"{""name"":""Montagnarde"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+city_brewing_company_llc-winter_porter,0,0,244494434305,"{""name"":""Winter Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""city_brewing_company_llc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+brasserie_de_brunehaut-brasserie_de_brunehaut_bio_biere_blanche_organic,0,0,244357922819,"{""name"":""Brasserie de Brunehaut Bio Bière Blanche (Organic)"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic Belgian 'white beer' from the Hainaut region in the southwest Belgium, near the French border. Top-fermented and bottle-conditioned, this is a clean, refreshing regional 'artisan' beer.\r\nPresents a light hazy yellow colour with citrus and coriander aromas and fairly subtle malt and hops on the palate. The finish is dry and satisfying. Hazy yellow golden colour. Lemon custard, lime zest, and delicate spice melange aromas. Well-balanced, a frothy entry leads to a dryish medium body of nuts, baked oranges, and slightly phenolic mineral flavors. Finishes with a metallic ore dust, salt, and dried lemon fade. This beer is certified as organic."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,0,1
+avery_brewing_company-ale_to_the_chief,0,0,244358643715,"{""name"":""Ale To The Chief"",""abv"":8.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Ale to the Chief! We the Brewers of Avery Brewing Company, in order to form a more perfect ale, require new leadership that can liberate us from our quagmires in foreign lands; embrace environmentally sound energy alternatives to imported oil; heal our ailing healthcare system; free us from tyrannical debt and resurrect the collapsing dollar. We hereby pledge to provide him with an ample amount of our Presidential Pale Ale to support in the struggle for the aforementioned goals! Hail to the New Chief!\"" \r\n\r\nSo reads the label of Ale to the Chief, the latest limited release brew from Avery Brewing Company brewed to bid a fond farewell to our current Commander in Chief and welcome a new administration. Our thought process for this beer was rather simple: take the classic American Pale Ale, use American ingredients like West Coast Cascade hops and the American Ale yeast strain (a first for Avery Brewing) and produce a beer in the Avery tradition with intense, in-your-face flavor. This Presidential Pale Ale has a pungent nose of citrusy, green Cascade hops along with a medium body and a lingering bitter finish. Ale to the Chief! is a limited release brew, get some while it lasts!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,4,1
+jever_brewery,0,0,244743077890,"{""name"":""Jever Brewery"",""city"":""Jever, Germany"",""state"":"""",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":""http://www.jever.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.5757,""lon"":7.9003}}",1,22,1
+aspen_brewing_company,0,0,244359233536,"{""name"":""Aspen Brewing Company"",""city"":""Aspen"",""state"":""Colorado"",""code"":""81611"",""country"":""United States"",""phone"":"""",""website"":""http://aspenbrewingcompany.com"",""type"":""brewery"",""updated"":""2010-11-08 08:40:44"",""description"":"""",""address"":[""555 North Mill Street""]}",1,6,1
+clipper_city_brewing_co-yule_tide,0,0,244491747328,"{""name"":""Yule Tide"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The latest addition to Baltimore's own Clipper City Brewing Company - Mutiny Fleet is their holiday brew Yule Tide, a Belgian style triple ale, which like the rest of the Mutiny Fleet is distributed in 22 ounce bombers."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,42,1
+breckenridge_brewery-christmas_ale,0,0,244491157505,"{""name"":""Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,41,1
+gray_brewing-irish_style_ale,0,0,244752973824,"{""name"":""Irish Style Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+thunderhead_brewery-black_sheep_espresso_stout,0,0,245108637696,"{""name"":""Black Sheep Espresso Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+sullivan_s_black_forest_brew_haus_grill-38_special_bitter,0,0,245108899840,"{""name"":"".38 Special Bitter"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""Don't let the name scare you, this is an easy drinker, slightly sweet and bitter."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,25,1
+marshall_brewing_company-sundown_wheat,0,0,244865826816,"{""name"":""Sundown Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marshall_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,21,1
+lanchester_brewing,0,0,244743602176,"{""name"":""Lanchester Brewing"",""city"":""Durham"",""state"":""Durham"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Durham DH7 0NT""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":54.8229,""lon"":-1.7457}}",1,23,1
+appalachian_brewing_company-grinnin_grizzly_spiced_ale,0,0,244360282113,"{""name"":""Grinnin' Grizzly Spiced Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This amber ale is dosed with cinnamon, nutmeg, ginger, and fresh orange zest. It is well balanced with low hop flavor and nice hint of the spices in the finish. This spiced ale is not overbearing; rather it is smooth and very drinkable."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+saint_louis_brewery_schlafy_tap_room-schlafly_hefeweizen,0,0,244991524865,"{""name"":""Schlafly Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+crabby_larry_s_brewpub_steak_crab_house-anne_bonny_irish_stout,0,0,244492468226,"{""name"":""Anne Bonny Irish Stout"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":""How about trying a glass of traditional Irish stout. Our stout however is not particularly dry and has overtones of dark chocolate and toffee. The infused nitrogen gives a wonderful cascading effect in the glass and a rich, creamy head. Particularly tasty when paired with our oysters on the half shell.""}",1,44,1
+dux_de_lux-ginger_tom,0,0,244624850945,"{""name"":""Ginger Tom"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dux_de_lux"",""updated"":""2010-07-22 20:00:20"",""description"":""An old fashioned style ginger beer brewed naturally with honey, malt, lemon and fresh root ginger, leaving you with a refreshing crisp zesty flavour."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,43,1
+ballast_point_brewing-calico_amber_ale,0,0,244358905858,"{""name"":""Calico Amber Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Calico Amber Ale was inspired by the beers of England. In England most of the beer is some kind of \""bitter\"".  Bitter is a style that became popular in the late 1800's. The most famous examples are brewed in Burton on Trent.  This hard water gives these beer a pleasantly dry bitter finish, hence the name \""bitter.\""  A brewery usually brews several bitters of various alcohol strengths.  The lowest in alcohol (and usually flavor) is called \""bitter\"" or \""ordinary bitter.\""  A step up in alcohol and hop character gives us \""best bitter\"" or \""special bitter.\""  Finally a beer is made that is full of hop aroma and flavor, has a maltiness to match, and a generous amount of alcohol is called an \""extra special bitter\"" or E.S.B.\r\n\r\nAlthough inspired by the British Ales  Ballast Point Calico Amber Ale uses distinctive American hops, which give not only the crisp bitterness to balance the malt, but also a hint of floral aroma. We brew Calico Amber Ale with 100% malt and use 4 different malts to give it a rich complexity.  The blend of crystal  malts give it flavors including toffee and caramel.  A blend of American Cascade and Centennial hops provide a counterpoint to the malt.  Finally our proprietary yeast provides a fruity background and a Madeira like richness that rounds out this gold medal winning ale."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,5,1
+boulevard_brewing_company-nut_cracker_ale,0,0,244358512642,"{""name"":""Nut Cracker Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Nutcracker Ale is Boulevard’s holiday gift for real beer lovers. This hearty, warming brew is a classic winter ale, deep amber in color, with hints of molasses balanced by the “spiciness” of freshly harvested Chinook hops."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,3,1
+brown_street_brewery-stout,0,0,244474511362,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brown_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,1,1
+fish_brewing_company_fish_tail_brewpub-blind_pig_dunkelweizen,0,0,244626358272,"{""name"":""Blind Pig Dunkelweizen"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+rogue_ales-honey_orange_wheat,0,0,244991918080,"{""name"":""Honey Orange Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Honey Orange Wheat is an unfiltered wheat beer and has flavors of honey and orange balanced with a nice medium-sweet malt character. It is medium bodied with no harsh bitterness and a nice honey-orange finish. It is made from Northwest Two-Row and Wheat Malts; Willamette Hops; #48 Oregon Wildflower Honey, Orange Juice, and Free Range Coastal Waters. It is currently available on draft."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,27,1
+bube_s_brewery-wet_hop_requiem_ipa,0,0,244490829826,"{""name"":""Wet Hop Requiem IPA"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This beauty is a complete work of art! Bryan and I picked 22 lbs of fresh Cascade hops from 3 gigantic hop vines Bryan has at his house. Hops produce an overabundance of hop cones and we were there for the picking. Even after 22 lbs, we hardly put a dent in the yield! So...here we are 3 weeks later, the beer is on tap and it is the freshest...hoppiest...flavorful beer you can imagine! Needless to say, we are proud of this beauty from the ground, up! We wanted a full-flavored IPA, so Bryan suggested we use our Requiem IPA recipe, and calculate for fresh, whole hop cones. Worked beautifully!! We ended up with an IPA with so much up-front flavor you would think you are enjoying a high octane Imperial! Instead, this is a middle-of-the-road IPA, at 5.2% abv!! This just goes to show how a hugely flavorful IPA can be loaded-up with fresh ingredients and come out the other end, a tasty LOW octane, treat! Bryan and I hope you get to stop in soon to try this one out! We decorated Bube's with some of the actual hop vines we pulled from. For the true hophead, you will be in heaven. And for the all-around beer enthusiasts, we hope you can appreciate the creativity in this beer. I know I'm proud to say I had a hand in this one!!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,40,1
+north_coast_brewing_company-scrimshaw_pilsner_style_beer,0,0,244865564673,"{""name"":""Scrimshaw Pilsner Style Beer"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Named for the delicate engravings popularized by 19th century seafarers, Scrimshaw is a fresh tastingPilsner brewed in the finest European tradition using Munich malt and, Hallertauer and Tettnang hops. Scrimshaw has a subtle hop character, a crisp, clean palate, and a dry finish."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,20,1
+amherst_brewing_company-olde_8_anniversary_ale,0,0,244359757825,"{""name"":""Olde #8 Anniversary Ale"",""abv"":6.85,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed for August each year to celebrate our Anniversary this strong ales maltiness is balenced by a generous amount of hops"",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,8,1
+back_road_brewery,0,0,244359495680,"{""name"":""Back Road Brewery"",""city"":""LaPorte"",""state"":""Indiana"",""code"":""46350"",""country"":""United States"",""phone"":""1-219-362-7623"",""website"":""http://www.backroadbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""310 Perry Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.6124,""lon"":-86.7268}}",1,7,1
+brasserie_de_la_senne-equinox_dark_belgian_winter,0,0,244358316034,"{""name"":""Equinox Dark Belgian Winter"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_la_senne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+craftsman_brewing-heavenly_hefe,0,0,244494434306,"{""name"":""Heavenly Hefe"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""craftsman_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,48,1
+brasserie_dubuisson-clovis,0,0,244357922820,"{""name"":""Clovis"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dubuisson"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+barley_s_2_smokehouse_and_brewpub-robert_burns_scottish_ale,0,0,244358643716,"{""name"":""Robert Burns Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_s_2_smokehouse_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+knig_ludwig_schlobrauerei_kaltenberg-konig_ludwig_dunkel,0,0,244743143424,"{""name"":""König Ludwig Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""knig_ludwig_schlobrauerei_kaltenberg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+belhaven_brewery-twisted_thistle_india_pale_ale,0,0,244359233537,"{""name"":""Twisted Thistle India Pale Ale"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belhaven_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,6,1
+crested_butte_brewery_pub-red_lady_ale,0,0,244491747329,"{""name"":""Red Lady Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crested_butte_brewery_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+breznak-breznak_dunkles_dark,0,0,244491157506,"{""name"":""Breznak Dunkles/Dark"",""abv"":3.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breznak"",""updated"":""2010-07-22 20:00:20"",""description"":""Very good dark beer. Not as heavy as stout."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,41,1
+great_lakes_brewing-commodore_perry_ipa,0,0,244753039360,"{""name"":""Commodore Perry IPA"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A medium-bodied and well hopped India Pale Ale with a dry, fruity aftertaste."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+titletown_brewing-english_esb,0,0,245108637697,"{""name"":""English ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+summit_brewing-extra_pale_ale,0,0,245108965376,"{""name"":""Extra Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""summit_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,25,1
+mcmenamins_mill_creek-terminator_stout,0,0,244865826817,"{""name"":""Terminator Stout"",""abv"":6.45,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":""Black as the darkest night, rich as the most decadent dessert, Terminator is for the true stout lover. This is a full bodied and flavor packed ale which draws it's robust complexity from kiln-baked specialty grains. Look for a wide array of toasted, chocolate, nutty and coffee-like flavors in every pint! The devoted swear by it, and it remains one of our top selling ales year after year."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+le_cheval_blanc-apocalypse_buckwheat_ale_coup_de_grisou,0,0,244743602177,"{""name"":""Apocalypse Buckwheat Ale / Coup de Grisou"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""le_cheval_blanc"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+bamberger_mahr_s_bru-der_weisse_bock,0,0,244360347648,"{""name"":""Der Weisse Bock"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,9,1
+saint_louis_brewery_schlafy_tap_room,0,0,244991524866,"{""name"":""Saint Louis Brewery / Schlafy Tap Room"",""city"":""Saint Louis"",""state"":""Missouri"",""code"":""63103"",""country"":""United States"",""phone"":""1-314-241-2337"",""website"":""http://www.schlafly.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2100 Locust Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.633,""lon"":-90.21}}",1,26,1
+crane_river_brewpub_and_cafe-platte_valley_esb,0,0,244492468227,"{""name"":""Platte Valley ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+egan_brewing-pride_of_de_pere,0,0,244624916480,"{""name"":""Pride of De Pere"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+barley_john_s_brewpub-wit,0,0,244358971392,"{""name"":""Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+brasserie_de_blaugies-la_moneuse,0,0,244358512643,"{""name"":""La Moneuse"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_blaugies"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+abita_brewing_company-abbey_ale,0,0,244377845760,"{""name"":""Abbey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:51:39"",""description"":""Abbey Ale is a strong malty ale brewed in the style of the Trappist Monks. 22oz bottles only"",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,52,1
+bt_mcclintic_beer_company,0,0,244474511363,"{""name"":""BT McClintic Beer Company"",""city"":""Beloit"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.5083,""lon"":-89.0318}}",1,1,1
+foster_s_australia_ltd-foster_s_special_bitter,0,0,244626358273,"{""name"":""Foster's Special Bitter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""foster_s_australia_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""http://www.fostersbeer.com/home.aspx?fullbrowser=h"",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,46,1
+santa_fe_brewing_company,0,0,244991983616,"{""name"":""Santa Fe Brewing Company"",""city"":""Santa Fe"",""state"":""New Mexico"",""code"":""87508"",""country"":""United States"",""phone"":""505.424.3333"",""website"":""http://www.santafebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""35 Fire Place""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.5966,""lon"":-106.052}}",1,27,1
+bullfrog_brewery-edgar_i_p_a,0,0,244490895360,"{""name"":""Edgar I.P.A."",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""As the story goes, I was redesigning our I.P.A. to be bigger and better but as it came together it started to take on a life of its own. After much deliberation and several pints of our new creation we decided to name him after the master of macabre, Edgar Allen Poe, as a tribute to his aptly named short story \""HOP FROG.\"" As Edgar fermented and spewed his almost abusive hop aroma throughout the pub, his legend and our thirst grew until finally one day, he was released into the world. We hope Edgar amuses you as much as he has us but stay on his good side because much like the story, this Hop Frog bites back!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,40,1
+northwoods_brewpub_grill-bubba,0,0,244865630208,"{""name"":""Bubba"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+amherst_brewing_company-righteous_red,0,0,244359757826,"{""name"":""Righteous Red"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Reddish amber in color, mild and malty with hop aroma and finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+barley_john_s_brewpub-old_eight_porter,0,0,244359495681,"{""name"":""Old Eight Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+brasserie_de_silly-la_divine_double_blond,0,0,244358381568,"{""name"":""La Divine Double Blond"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silly"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+crane_river_brewpub_and_cafe-oktoberfest_ale,0,0,244494499840,"{""name"":""Oktoberfest Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,48,1
+brasserie_thiriez-xtra,0,0,244473921536,"{""name"":""XTra"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_thiriez"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+bbc_brewing_co_llc,0,0,244358709248,"{""name"":""BBC Brewing Co., LLC"",""city"":""Louisville"",""state"":""Kentucky"",""code"":""40202"",""country"":""United States"",""phone"":""1-502-584-2739"",""website"":""http://www.bluegrassbrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Bluegrass Brewing Co is proud to be the largest microbrewery located in the state of Kentucky. Reaching back over one hundred years, the city of Louisville has a rich and complex brewing history; a history that has provided BBC with a strong foundation on which to build and grow. It is a challenge we enthusiastically look forward to everyday. Led by our fearless brew master David Pierce who has been brewing award winning BBC beers for over fourteen years, our brewing philosophy is an audacious style that allows us to work diligently with the entire palette of malts and hops. This diligence and discipline is carefully brought to every batch that is brewed at Bluegrass Brewing Co. To truly enjoy life you have to love what you do�and we love brewing. Our sole focus relies on consistency and producing the best beer available. We hope that you will taste that bold style in every BBC beer that you drink. Enjoy great craft beer wherever you live and remember this most important piece of advice: Don't Buy Beer From Strangers . . . Support Your Local Brewery!"",""address"":[""636 East Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.2546,""lon"":-85.7401}}",1,4,1
+lakefront_brewery,0,0,244743143425,"{""name"":""Lakefront Brewery"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":""53212"",""country"":""United States"",""phone"":""1-414-372-8800"",""website"":""http://www.lakefrontbrewery.com/index.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Started in 1987, the microbrewery located on the Milwaukee River has become a Milwaukee landmark.  Its rich history includes partnerships with local taverns, preservation of local historical pieces, unique tours, family style dining options and most importantly, great beer. President Russ Klisch said it all started with his brother, Jim.  Jim expressed interest in beer making near his birthday and Russ humored him by purchasing him a book on the subject.  Jim read the book and brewed the beer.  Although not known, according to Russ, as a gourmet cook, Jim made a good beer.  Russ was impressed and decided he could do it better.  In short, sibling competitiveness and common interest lead both to entering contests in beer making.  They both received awards, and family and friends encouraged them to start the business. Their family had roots in the beer industry as well.  Their grandfather worked for Schlitz driving a street sweeper and a truck.  Russ Klisch remembers him bringing home short fills to his dad.  He recalls, even as a kid, that it was a cool job if you got to bring beer home at night.  Taverns were also owned by several family members. With that family history and their common interest in beer making, the brothers started their business.  They decided to start small.  Initially, they bought an old pizza bakery building down the street from their home in Riverwest.  They liked the location and the fact that they could walk there from home.  They sold their first barrel on December 2, 1987.  They stayed at that location until winter of 1998."",""address"":[""1872 North Commerce Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0547,""lon"":-87.9053}}",1,22,1
+bell_s_brewery_inc-two_hearted_ale,0,0,244359233538,"{""name"":""Two Hearted Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""India Pale Ale style well suited for Hemingway-esque trips to the Upper Peninsula. American malts and enormous hop additions give this beer a crisp finish and incredible floral hop aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,6,1
+cricket_hill-fall_festivus_ale,0,0,244491747330,"{""name"":""Fall Festivus Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cricket_hill"",""updated"":""2010-12-06 13:12:47"",""description"":""Our Fall release is a harvest Ale with a lighter amber color and a beige head with good retention. There is a good balance of earthy malt and a blend of floral and pine hops in the nose. Biscuit notes mixing with caramel sweetness.do their job to complement the rest of the flavors.This is an enjoyable seasonal for sure!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,42,1
+brouwerij_boon-kriek,0,0,244491223040,"{""name"":""Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_boon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,41,1
+green_bay_brewing,0,0,244753039361,"{""name"":""Green Bay Brewing"",""city"":""Green Bay"",""state"":""Wisconsin"",""code"":""54303"",""country"":""United States"",""phone"":""1-888-604-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""313 Dousman Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.5189,""lon"":-88.0196}}",1,47,1
+triple_rock_brewery-porter,0,0,245108637698,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triple_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+tailgate_beer-tailgate_light,0,0,245108965377,"{""name"":""Tailgate Light"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tailgate_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""Why settle for a watered down version of delicious barley and hops when the TailGate Beer Light will make you a convert to the world of light ales. Eat hardy, and enjoy a light beer with serious flavor, lower calories and the most serious attention to the powers that flavor beer.  A nose of citrus and spice with a tongue of vanilla are just a few of the very unique flavors to grace your senses in this Light Ale.  This is the light beer lovers of beer have been waiting for.  This is not a watered down version of a good idea."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,25,1
+mendocino_brewing_ukiah,0,0,244865826818,"{""name"":""Mendocino Brewing - Ukiah"",""city"":""Ukiah"",""state"":""California"",""code"":""95482"",""country"":""United States"",""phone"":""1-707-463-2627"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1601 Airport Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.1326,""lon"":-123.201}}",1,21,1
+liefmans_breweries-vondel,0,0,244743602178,"{""name"":""Vondel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liefmans_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+barley_creek_brewing-superhop_ale,0,0,244360347649,"{""name"":""Superhop Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+saxer_brewing-jack_frost_winter_doppelbock,0,0,244991590400,"{""name"":""Jack Frost Winter Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saxer_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,26,1
+cricket_hill,0,0,244492533760,"{""name"":""Cricket Hill"",""city"":""Fairfield"",""state"":""New Jersey"",""code"":""7004"",""country"":""United States"",""phone"":""973-276-9415"",""website"":""http://www.crickethillbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We believe that New Jersey is starting to learn what the rest of the country already knows; that local microbrews are some of the best beers in the world! Finally, curious beer drinkers are stepping out from under the mind-numbing barrage of large brewery advertising and deciding for themselves what they like. Our beers are designed for those curious drinkers. The large breweries use fillers in their beer; Corn or Rice are the most frequently used. Most good beer should be all Barley, in the same way that good hamburgers are all beef. Barley is expensive and the more fillers that are used, the better the profits! Cricket Hill Beers are 100% Barley as are most great beers. Please take the time to taste different local beers. I am certain that those who decide not to let television dictate what they drink are ready for a wonderful adventure into the world of Beer!"",""address"":[""24 Kulick Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.8726,""lon"":-74.2964}}",1,44,1
+engine_house_9-firehouse_red,0,0,244624916481,"{""name"":""Firehouse Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+bass_brewers-bass_pale_ale,0,0,244358971393,"{""name"":""Bass Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bass_brewers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,5,1
+brasserie_des_gants-saison_voisin,0,0,244358512644,"{""name"":""Saison Voisin"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_des_gants"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+abita_brewing_company-purple_haze,0,0,244377911296,"{""name"":""Purple Haze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Purple Haze is a crisp, American style wheat beer with raspberry puree added after filtration. Therefore, you may see raspberry pulp in the beer. The raspberries provide the lager with a subtle purple coloration and haze, a fruity aroma, and a tartly sweet taste."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,52,1
+climax_brewing_copmany-climax_barleywine_style_ale,0,0,244474576896,"{""name"":""Climax Barleywine-Style Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed for our 10th Anniversary, the Barleywine is a bottle conditioned ale that's meant to be laid down and enjoyed for years to come. Up front it has a hop nose and hop flavor on the tongue that fades into malty overtones with flavors of vanilla that go into chocolate. As it has aged, we've noticed flavors of dates and raisins as well."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,1,1
+founders_hill_brewing-hidden_river_red_ale,0,0,244626358274,"{""name"":""Hidden River Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_hill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+scuttlebutt_brewing-porter,0,0,244991983617,"{""name"":""Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,27,1
+bullfrog_brewery-susquehanna_oatmeal_stout,0,0,244490895361,"{""name"":""Susquehanna Oatmeal Stout"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A big, burly Oatmeal Stout full of chocolate, caramelized malt and coffee flavors. This stout has a rich mouthfeel and a smooth, roasty finish."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,40,1
+oggi_s_pizza_and_brewing_vista-california_gold,0,0,244865630209,"{""name"":""California Gold"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+anheuser_busch-michelob_beer,0,0,244359823360,"{""name"":""Michelob Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Michelob is a malty and full-bodied lager with an elegant European hop profile.\"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+bayern_brewing-dancing_trout_ale,0,0,244359495682,"{""name"":""Dancing Trout Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayern_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+brasserie_ellezelloise,0,0,244474642432,"{""name"":""Brasserie Ellezelloise"",""city"":""Ellezelles"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-068-54-31-60"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Guinaumont 75""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7428,""lon"":3.6875}}",1,2,1
+crooked_river_brewing-original_esb,0,0,244494499841,"{""name"":""Original ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crooked_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+brauhaus_sternen-huusbier_schwarz,0,0,244473987072,"{""name"":""Huusbier Schwarz"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_sternen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,0,1
+belhaven_brewery-scottish_ale,0,0,244358709249,"{""name"":""Scottish Ale"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belhaven_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Malty and hoppy, we at Belhaven love the classic Scottish Ale and we've been brewing it longer than any of the other beers we produce. Delivering a sweet, smooth and creamy finish, Scottish Ale has a stunning ruby colour in the glass. Magic."",""style"":""Scottish-Style Light Ale"",""category"":""British Ale""}",1,4,1
+liberty_steakhouse_and_brewery-amber_waves,0,0,244743208960,"{""name"":""Amber Waves"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+bellows_brew_crew-steam_lager,0,0,244359299072,"{""name"":""Steam Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+devil_mountain_brewing,0,0,244624457728,"{""name"":""Devil Mountain Brewing"",""city"":""Cincinnati"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.1361,""lon"":-84.5031}}",1,42,1
+brouwerij_de_keersmaeker,0,0,244491223041,"{""name"":""Brouwerij De Keersmaeker"",""city"":""Kobbegem"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-02-454-11-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lierput 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9098,""lon"":4.2505}}",1,41,1
+grumpy_troll_restaurant_and_brewery-rye_bock,0,0,244753039362,"{""name"":""Rye Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,47,1
+triumph_brewing_of_new_hope-kellerbier,0,0,245108703232,"{""name"":""Kellerbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_new_hope"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,24,1
+taiwan_tobacco_and_wine_monopoly_board-beer,0,0,245108965378,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taiwan_tobacco_and_wine_monopoly_board"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+midnight_sun_brewing_co-obliteration_v,0,0,244865892352,"{""name"":""Obliteration V"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With passion and purpose, we present this series of hop-centric beers. Using different hop varieties and brewing techniques, we aim to capture bold, distinct hop characteristics in aroma, flavor and finish. While we explore the world of hops, we invite you to learn along with us: these beers offer an incredible opportunity to experience the diversity of hops while engaging the palate and obliterating the senses.\r\n\r\nObliteration V is yet another exciting Double IPA. Its aroma is pungent with fragrant notes of citrus, spice, pine and alcohol. A sturdy malt platform provides the perfect stage for showcasing these high alpha-acid hops, creating flavors and textures that entice then intrigue. Living up to its name, Obliteration V finishes with poignant bitterness."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,21,1
+live_oak_brewing-liberation_ale,0,0,244866678784,"{""name"":""Liberation Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""live_oak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""With about 6.0% ABV, this one will surely warm the ol' gullet during a cold central Texas winter - both days! Our India Pale Ale (IPA) is light in color and strong in hop character. Dry hopping with Cascade hops, gives this winter favorite a delicious citrus note reminiscent of a Texas Ruby Red. Yes, it's warming but you don't need to be huddled around the furnace to enjoy this one! IPA fans really love this ale during a beautiful Texas winter on the porch or indoors. Available December - April"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+bethlehem_brew_works,0,0,244360347650,"{""name"":""Bethlehem Brew Works"",""city"":""Bethlehem"",""state"":""Pennsylvania"",""code"":""18018"",""country"":""United States"",""phone"":""610.882.1300"",""website"":""http://www.thebrewworks.com/bethlehem-brew-works"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Established on April 15, 1998 by the Fegley Family, Bethlehem Brew Works successfully captured the essence of Bethlehem's steel industry in a 250 seat brewpub. Signature beers include Steelworkers' Oatmeal Stout, Valley Golden ale, and the award winning Fegley's ESB. In addition, three seasonal taps have been frequented with beers ranging from Pale Ales and Wheats to Pumpkin Ale and Belgian Lambics. Accompanying the six beers brewed right in the restaurant is a full bar specializing in single malt scotches, small batch bourbons, and specialty martinis. Open seven days a week, BBW offers lunch and dinner featuring many items which incorporate the handcrafted beer into their recipes. Golden Ale Hummus, Beer and Cheese Soup, Brewschetta, Diamond Plate Pork, and Beer-Marinated Portabella Napoleon are just a hint of what the menu has to offer."",""address"":[""569 Main St""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.622,""lon"":-75.382}}",1,9,1
+southend_brewery_and_smokehouse_charleston-scarlet_ale,0,0,245109293056,"{""name"":""Scarlet Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,26,1
+delafield_brewhaus-dock_light_golden_ale,0,0,244625113088,"{""name"":""Dock Light Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+erie_brewing_company-railbender_ale,0,0,244624982016,"{""name"":""Railbender Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Erie, Pennsylvania was an important railroad hub in the mid–nineteenth century, the city being the site where three sets of track gauges met. Railbender Ale, Erie Brewing Co.’s flagship ale, named after the laborers who laid the railroad tracks is brewed with pride, strength and purity symbolic of Erie’s historic railroad’s and railroad workers. Railbender, a strong Scottish style ale smooth malt flavor and astonishing drinkability will have you \""Hopping on the train and riding off the rails.\"" All Aboard!"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,43,1
+belhaven_brewery-wee_heavy,0,0,244359036928,"{""name"":""Wee Heavy"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belhaven_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,5,1
+brasserie_ellezelloise-la_quintine_ambree_amber,0,0,244474970112,"{""name"":""La Quintine Ambrée / Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_ellezelloise"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+aktienbrauerei_kaufbeuren-jubilaums_german_pils,0,0,244377911297,"{""name"":""Jubiläums German Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aktienbrauerei_kaufbeuren"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+coastal_fog_brewing,0,0,244474576897,"{""name"":""Coastal Fog Brewing"",""city"":""Concord"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.978,""lon"":-122.031}}",1,1,1
+fox_river_brewing_1-uber_sticke_altbier,0,0,244626423808,"{""name"":""Über-Sticke Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,46,1
+sea_dog_brewing_company-sea_dog_blue_paw_wheat,0,0,244991983618,"{""name"":""Sea Dog Blue Paw Wheat"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sea_dog_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our unique contribution to the fruit ale category features the nutty quench of wheat ale combined with the delightful aromatics and subtle fruit flavor contributed by Maine wild blueberries."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,27,1
+cedar_brewing-oktoberfest,0,0,244490895362,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,40,1
+ohio_brewing-verich_gold,0,0,244865630210,"{""name"":""Verich Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ohio_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+anheuser_busch-michelob_honey_lager,0,0,244359823361,"{""name"":""Michelob Honey Lager"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+bear_republic_brewery-racer_x,0,0,244359495683,"{""name"":""Racer X"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This bold winter ale follows English brewing traditions, but with our California twist. Bold hops, but balanced ... It's a double IPA!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,7,1
+brauereigasthof_adler-zwickelbier,0,0,244474642433,"{""name"":""Zwickelbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauereigasthof_adler"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+daleside_brewery-ripon_jewel_ale,0,0,244494499842,"{""name"":""Ripon Jewel Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""daleside_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+brouwerij_de_achelse_kluis-trappist_extra,0,0,244473987073,"{""name"":""Trappist Extra"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+bell_s_brewery_inc-the_oracle_dipa,0,0,244358709250,"{""name"":""The Oracle DIPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A double IPA that is sure to make you as all-knowing as Pythia.  It’s just a matter of interpretation."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,4,1
+loaf_and_stein_brewing-blonde,0,0,244866285568,"{""name"":""Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""loaf_and_stein_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+big_ridge_brewing-lager,0,0,244359299073,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,6,1
+dick_s_brewing-bottleworks_ipa,0,0,244624457729,"{""name"":""Bottleworks IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,42,1
+bullfrog_brewery-fast_eddies_pale_ale,0,0,244491223042,"{""name"":""Fast Eddies Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Named in honor of Ed Kiessling, the worlds greatest contractor. This American pale ale is assertively hopped and dangerously drinkable. Hopheads rejoice!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+hoffbrau_steaks_brewery_1,0,0,244753104896,"{""name"":""Hoffbrau Steaks Brewery #1"",""city"":""Addison"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.9618,""lon"":-96.8292}}",1,47,1
+unibroue-1837,0,0,245108703233,"{""name"":""1837"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""1837 is a blonde beer that is slightly cloudy. It contains 7% alcohol and is refermented in the bottle. Following the brewing tradition of the great abbey beers, it is made with a blend of Quebec-grown raw wheat, lightly roasted barley and a hint of spices. It is a truly refreshing beer."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,24,1
+tennent_caledonian_brewery,0,0,245109030912,"{""name"":""Tennent Caledonian Brewery"",""city"":""Glasgow"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0141)-552-6552"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""161 Duke Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":55.8593,""lon"":-4.2324}}",1,25,1
+mississippi_brewing_co-mississippi_mud_black_tan,0,0,244865892353,"{""name"":""Mississippi Mud Black & Tan"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mississippi_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A-It's got a nice dark tan texture to it. The description on the bottle says it all.\r\n\r\nS-It's got a coffee like smell to it. It smells pretty good.\r\n\r\nT- It tastes a tad like Bass with a hint of coffee to it. At least to me it had a coffee taste. It's got a nice even taste. It's not too strong and not too weak. It's a happy medium.\r\n\r\nM-It feels good when swallowing. It leaves a mild aftertaste but it's a good aftertaste.\r\n\r\nD-Well I drank the whole jug w/ no problem and enjoyed myself so that spoke for itself.\r\n\r\nOverall, I recommend this beer. If you find it, it's worth having. It goes well when watching a movie too.\r\n\r\nServing type: bottle""}",1,21,1
+long_trail_brewing_co-long_trail_ale,0,0,244866744320,"{""name"":""Long Trail Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Long Trail Ale is a full-bodied amber ale modeled after the \""Alt-biers\"" of Düsseldorf, Germany."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,23,1
+bibiana_brewing,0,0,244360413184,"{""name"":""Bibiana Brewing"",""city"":""Urbana"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.1106,""lon"":-88.2073}}",1,9,1
+spoetzl_brewery-shiner_bohemian_black_lager,0,0,245109358592,"{""name"":""Shiner Bohemian Black Lager"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spoetzl_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+desnoes_geddes_ltd-red_stripe_lager_beer,0,0,244625113089,"{""name"":""Red Stripe Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""desnoes_geddes_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+estes_park_brewery-long_s_peak_raspberry_wheat,0,0,244624982017,"{""name"":""Long's Peak Raspberry Wheat"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is one of our most popular beers. It is a light and refreshing raspberry-flavored wheat ale.  We use pure raspberry extract to give this beer its fruity aroma and flavor."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,43,1
+berliner_kindl_schultheiss_brauerei-original_berliner_weisse,0,0,244359036929,"{""name"":""Original Berliner Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""berliner_kindl_schultheiss_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+brauerei_und_altbierkche_pinkus_mller-obergarig_munster_alt,0,0,244475035648,"{""name"":""Obergärig / Münster Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_und_altbierkche_pinkus_mller"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,3,1
+anheuser_busch-michelob_dunkel_weisse,0,0,244377976832,"{""name"":""Michelob Dunkel Weisse"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Dunkel Weisse fills a glass like few beers can. The pour releases banana and clove aromas. Roasted malt flavor is complemented by caramel and chocolate undertones. Then a crisp finish refreshes the palate. Undeniable proof that brewing is truly an art."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,52,1
+coronado_brewing_company-mermaid_red,0,0,244474576898,"{""name"":""Mermaid Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,1,1
+full_sail_brewing_1-nugget,0,0,244626489344,"{""name"":""Nugget"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,46,1
+sierra_nevada_brewing_co-sierra_nevada_imperial_stout,0,0,244991983619,"{""name"":""Sierra Nevada Imperial Stout"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,27,1
+cervecera_nacional-balboa_cerveza_pilsner,0,0,244490960896,"{""name"":""Balboa Cerveza Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_nacional"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,40,1
+oriental_brewery-ob_lager,0,0,244865630211,"{""name"":""OB Lager"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oriental_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""OB Lager is a pale lager available in cans and bottles, and served on draft in Korea."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+asahi_breweries,0,0,244359823362,"{""name"":""Asahi Breweries"",""city"":""Tokyo"",""state"":""Kanto"",""code"":"""",""country"":""Japan"",""phone"":""81-(03)-5608-5129"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""23-1 Azumabashi 1-chome""]}",1,8,1
+bear_republic_brewery-red_rocket_ale,0,0,244359561216,"{""name"":""Red Rocket Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The brew of choice for mountain bikers, and adventurous types worldwide. (Are you excited now!) This fiery red ale is not for the weak at heart. It originally started out as a Scottish red ale but has taken on flavors of its own. This is a very complex recipe using five different grains to achieve its unique flavor. The caramel malt used is a mixture of Belgian Caravienne and Hugh Bairds Crystal malts. Red Rocket is a full bodied, hoppy brew which finishes on the pallet with caramel malts. Centennial and Cascade hops are used for bittering and aroma.2004 L.A. Commercial Brewing Competition, Gold Medal Winner; 2004 West Coast Commercial Brewers Competition, First Place; 2003 California State Fair, Gold MedalWinner; 2002 California State Fair, Silver Medal Winner; 2001 California State Fair Gold Medal Winner; 2001 Real Ale Festival, Chicago, Bronze Medal Winner; 2000 California State Fair, Bronze Medal Winner; 1999 Great American Beer Festival, Silver Medal Winner; 1998 Great American Beer Festival, Silver Medal Winner - og 1.067, ABV 6.8%, IBU 65+."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+broad_ripple_brewing-ipa,0,0,244474707968,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,2,1
+dc_brau-the_public,0,0,244626948096,"{""name"":""The Public"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dc_brau"",""updated"":""2011-08-08 19:07:15"",""description"":""The Public"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+brouwerij_oud_beersel,0,0,244474052608,"{""name"":""Brouwerij Oud Beersel"",""city"":""Beersel"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Laarheiestraat 230""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7586,""lon"":4.3012}}",1,0,1
+bellows_brew_crew,0,0,244358709251,"{""name"":""Bellows Brew Crew"",""city"":""Watertown"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.1947,""lon"":-88.729}}",1,4,1
+mad_anthony_brewing-red,0,0,244866351104,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+brasserie_brouwerij_cantillon-iris_1996,0,0,244359299074,"{""name"":""Iris 1996"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,6,1
+dieu_du_ciel-peche_mortel,0,0,244624523264,"{""name"":""Péché Mortel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dieu_du_ciel"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+c_b_potts_of_cheyenne-big_horn_bluesberry,0,0,244491288576,"{""name"":""Big Horn Bluesberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,41,1
+inveralmond_brewery-lia_fail_stone_of_destiny_ale,0,0,244753104897,"{""name"":""Lia Fail Stone of Destiny Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""inveralmond_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+upstream_brewing_old_market-blackstone_stout,0,0,245108768768,"{""name"":""Blackstone Stout"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""Bold with a soft finish, our darkest beer has plenty of malt flavor with undertones of coffee and chocolate. The addition of oatmeal to the brew adds extra smoothness and a thick creamy head."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,24,1
+thirsty_dog_brewing-airship_light,0,0,245109030913,"{""name"":""Airship Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A blonde ale that is very light in color and body with no bitterness. A thirst quenching, American light-bodied blonde ale."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,25,1
+mogollon_brewing_company-heffevonom_bavarian_wheat,0,0,244865957888,"{""name"":""Heffevonom Bavarian Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mogollon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A truly delicious beer, Heffevenom is a medium bodied, lightly hopped wheat beer brewed in the true Bavarian tradition.  Our brewers combine mountain pure water, select wheat and domestic malted grain, hops and yeast to create a highly refreshing ale with a pronounced banana and clove bouquet. Perfect with a slice of lemon as garnish."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,21,1
+long_valley_pub_brewery-grist_mill_golden,0,0,244866744321,"{""name"":""Grist Mill Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_valley_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+bootleggers_steakhouse_and_brewery-irish_red,0,0,244360413185,"{""name"":""Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bootleggers_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+sports_city_cafe_brewery-red_ale,0,0,245109358593,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sports_city_cafe_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+dockside_brewing-haupenthal_hefeweizen,0,0,244625178624,"{""name"":""Haupenthal Hefeweizen"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dockside_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,44,1
+flatlander_s_restaurant_brewery-eighty_shilling_ale,0,0,244624982018,"{""name"":""Eighty Shilling Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+abhi_brewery-abhi_beer,0,0,244367818752,"{""name"":""Abhi beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abhi_brewery"",""updated"":""2011-09-27 00:36:14"",""description"":"""",""style"":""Bamberg-Style Bock Rauchbier"",""category"":""German Lager""}",1,28,1
+big_sky_brewing-ipa,0,0,244359036930,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""In Montana, many classic memories are made right after someone says, “Hold my beer and watch this.” These bold, assertive moments deserve a bold, assertive beer – Big Sky IPA. A distinct hop presence and malty backbone will leave you refreshed and ready for your moment of glory. Hang on tight and enjoy the ride."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,5,1
+brew_makers-rosed_porter,0,0,244475101184,"{""name"":""Rosed Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brew_makers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+appleton_brewing-adler_brau_ginseng_lager,0,0,244377976833,"{""name"":""Adler Bräu Ginseng Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+de_proef_brouwerij-k_o_blond_beer,0,0,244606500864,"{""name"":""K-O Blond Beer"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+gilde_brauerei-pilsener,0,0,244626489345,"{""name"":""Pilsener"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gilde_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+sioux_falls_brewing-canary_wheat,0,0,244992049152,"{""name"":""Canary Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sioux_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,27,1
+coopers_brewery-coopers_mild_ale,0,0,244490960897,"{""name"":""Coopers Mild Ale"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This ale is the product of brewing with a selection of barley and wheat malt, and with no added sugar. This traditional brewing approach provides the smooth malt character which is balanced by a triple hopping of the brew with Pride of Ringwood and Saaz hops. The brew has fermented similarly to its stablemates Pale and Sparkling Ale, with the customary secondary fermentation in the bottle and can."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,40,1
+port_brewing_company-shark_attack_double_red_ale,0,0,244988772352,"{""name"":""Shark Attack Double Red Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,20,1
+aspen_brewing_company-conundrum_red_ale,0,0,244359888896,"{""name"":""Conundrum Red Ale"",""abv"":7.0,""ibu"":65.0,""srm"":13.0,""upc"":0,""type"":""beer"",""brewery_id"":""aspen_brewing_company"",""updated"":""2010-11-08 08:45:46"",""description"":""Have you ever heard of an ESB? In most cases, it stands for Extra Special Bitter, and man is this red extra special. Conundrum walks the line between a malt-centric sweet ale and a hop-centric bitter ale so well, it"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+belhaven_brewery,0,0,244359561217,"{""name"":""Belhaven Brewery"",""city"":""East Lothian"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0)1368-862734"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Spott Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":55.997,""lon"":-2.5098}}",1,7,1
+broad_ripple_brewing,0,0,244474707969,"{""name"":""Broad Ripple Brewing"",""city"":""Indianapolis"",""state"":""Indiana"",""code"":""46220"",""country"":""United States"",""phone"":""1-317-253-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""842 East 65th Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.8735,""lon"":-86.1427}}",1,2,1
+diamondback_brewery,0,0,244627013632,"{""name"":""Diamondback Brewery"",""city"":""Cleveland"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.4995,""lon"":-81.6954}}",1,48,1
+cheshire_cat_brewery-arrogant_brit,0,0,244474052609,"{""name"":""Arrogant Brit"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cheshire_cat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+21st_amendment_brewery_cafe-oyster_point_oyster_stout,0,0,244379222016,"{""name"":""Oyster Point Oyster Stout"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep black color. Chocolate milk color head, providing an array of Belgian lace. Toffee and light roasty aromas and flavors. A malty sweet taste is evident but, this rich oatmeal based stout finishes dry. Made with 20 lbs. of oysters, in the boil, from our good friends at Hog Island Oyster Company."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,56,1
+birrificio_torrechiara,0,0,244358709252,"{""name"":""Birrificio Torrechiara"",""city"":""Torrechiara"",""state"":"""",""code"":"""",""country"":""Italy"",""phone"":""39-0521355113"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Strada Pilastro 35""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.6601,""lon"":10.2814}}",1,4,1
+main_street_brewing,0,0,244866351105,"{""name"":""Main Street Brewing"",""city"":""Dallas"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.803,""lon"":-96.7699}}",1,22,1
+brauerei_wieselburg,0,0,244476084224,"{""name"":""Brauerei Wieselburg"",""city"":""Wieselburg"",""state"":"""",""code"":""3250"",""country"":""Austria"",""phone"":""+43-(0)7416-501-0"",""website"":""http://www.wieselburger.at"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":48.1306,""lon"":15.1386}}",1,6,1
+dieu_du_ciel,0,0,244624523265,"{""name"":""Dieu du Ciel"",""city"":""Montréal"",""state"":""Quebec"",""code"":"""",""country"":""Canada"",""phone"":""1-514-490-9555"",""website"":""http://www.dieuduciel.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""29 Laurier Ouest""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.5228,""lon"":-73.5928}}",1,42,1
+caldera_brewing,0,0,244491288577,"{""name"":""Caldera Brewing"",""city"":""Ashland"",""state"":""Oregon"",""code"":""97520"",""country"":""United States"",""phone"":""1-541-482-4677"",""website"":""http://www.calderabrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""540 Clover Lane""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1844,""lon"":-122.663}}",1,41,1
+jack_s_brewing-boys_of_summer_wheat,0,0,244753170432,"{""name"":""Boys of Summer Wheat"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+valley_forge_brewing-red_coat_ale,0,0,245108768769,"{""name"":""Red Coat Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_forge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,24,1
+thirstybear_brewing-golden_vanilla_ale,0,0,245109030914,"{""name"":""Golden Vanilla Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+moosejaw_pizza_dells_brewing_company-schmitz_pale_ale_no_5,0,0,244865957889,"{""name"":""Schmitz Pale Ale No. 5"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,21,1
+lowenbrau_brauerei-schwarze_weisse,0,0,244866744322,"{""name"":""Schwarze Weisse"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lowenbrau_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+brasserie_de_la_senne-zinnebir_xmas,0,0,244360413186,"{""name"":""Zinnebir Xmas"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_la_senne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+sprecher_brewing-sprecher_abbey_triple,0,0,245109358594,"{""name"":""Sprecher Abbey Triple"",""abv"":8.41,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian Trappist triple yeast culture balanced with the finest imported pale barley, Belgian aromatic malt and oats, gives this golden ale a fruity bouquet and a light refined taste."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,26,1
+duck_rabbit_craft_brewery-duck_rabbit_milk_stout,0,0,244625178625,"{""name"":""Duck-Rabbit Milk Stout"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duck_rabbit_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Duck-Rabbit Milk Stout is a traditional full-bodied stout brewed with lactose (milk sugar). The subtle sweetness imparted by the lactose balances the sharpness of the highly roasted grains which give this delicious beer its black color."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,44,1
+flour_city_brewing-ironhead_porter_old_no_3,0,0,244624982019,"{""name"":""Ironhead Porter Old No. 3"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flour_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+america_s_brewing-schwartzbier,0,0,244367818753,"{""name"":""Schwartzbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,28,1
+brasserie_de_l_abbaye_de_scourmont_trappistes-premiere_red,0,0,244359102464,"{""name"":""Première (Red)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_de_scourmont_trappistes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+brouwerij_abdij_der_trappisten_van_westmalle-westmalle_trappist_dubbel,0,0,244475166720,"{""name"":""Westmalle Trappist Dubbel"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_abdij_der_trappisten_van_westmalle"",""updated"":""2010-07-22 20:00:20"",""description"":""Westmalle Dubbel is a dark, reddish-brown Trappist beer with a secondary fermentation in the bottle. The creamy head has the fragrance of special malt and leaves an attractive lace pattern in the glass. The flavour is rich and complex, herby and fruity with a fresh-bitter finish. It is a balanced quality beer with a soft feel in the mouth and a long, dry aftertaste. The Dubbel contains 7% alcohol.""}",1,3,1
+augustiner_brau_munchen,0,0,244378042368,"{""name"":""Augustiner-Bräu München"",""city"":""München"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-519940"",""website"":""http://www.augustiner-braeu.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Augustiner Bräu is a brewery located in Munich, Germany. Established in 1328, it is Munich's oldest brewery and produces some of Munich's most popular brands of beer."",""address"":[""Landsberger Strae 35""]}",1,52,1
+delafield_brewhaus-fruhlingzeit_maibock,0,0,244606566400,"{""name"":""Frühlingzeit Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,1,1
+goose_island_beer_company_clybourn-goose_island_imperial_ipa,0,0,244626489346,"{""name"":""Goose Island Imperial IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,46,1
+sly_fox_brewhouse_and_eatery_royersford-royal_weisse,0,0,245109751808,"{""name"":""Royal Weisse"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,27,1
+coors_brewing_golden_brewery-zima_clear,0,0,244490960898,"{""name"":""Zima Clear"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Zima is redefining refreshment. Zima flavored malt beverages are a great choice for adult consumers who seek variety and new and different products. Zima was reformulated in 2007 and is available in three citrus-based flavors.\r\n\r\nZima is lighter in carbonation and alcohol content, making it more drinkable and lower in calories than the old formula.""}",1,40,1
+portsmouth_brewery-wheat_wine,0,0,244988772353,"{""name"":""Wheat Wine"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""portsmouth_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+august_schell_brewing-dark,0,0,244359888897,"{""name"":""Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""august_schell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+bell_s_brewery_inc,0,0,244359561218,"{""name"":""Bell's Brewery Inc."",""city"":""Galesburg"",""state"":""Michigan"",""code"":""49053"",""country"":""United States"",""phone"":""269.382.2338"",""website"":""http://www.bellsbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""In 2003, Bell's proudly opened a new production brewery in nearby Comstock, Michigan. The new brewery has now seen three major additions and encompasses 60,000 square feet of building on a 24 acre site The Quality Assurance department has thrived in the new facilities, implementing procedures and techniques that assure that Bell's is consistently putting out the very best beer possible. Total brewing capacity now stands at 140,000 bbls. At the Kalamazoo Avenue location, an historical rehabilitation has brought about a pleasant architectural change to the city landscape.  Our ongoing goal is to brew thoughtfully, creatively and artistically. We strive to bring an authentic and pleasant experience to all of our customers through our unique ales and beers. We look forward to sharing our beers with you."",""address"":[""8938 Krum Ave.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.2843,""lon"":-85.4538}}",1,7,1
+brooklyn_brewery-east_india_pale_ale,0,0,244474773504,"{""name"":""East India Pale Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,2,1
+dixie_brewing-blackened_voodoo,0,0,244627013633,"{""name"":""Blackened Voodoo"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dixie_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Inspired by old-world brewing methods, this bewitching all-malt brew is a darkly rich, exotic lager, crafted with a touch of magical New Orleans spirit."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+clipper_city_brewing_co-below_decks,0,0,244474052610,"{""name"":""Below Decks"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Created to celebrate Clipper City’s 10th Anniversary – extremely limited and “vintage” dated – this extravagantly malty barley wine will show well upon release but continue to evolve for years. Seasonally available in December while supplies last. Voted #1 beer by Mahaffey’s Pub."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,0,1
+alvinne_picobrouwerij,0,0,244379222017,"{""name"":""Alvinne Picobrouwerij"",""city"":""Ingelmunster"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-051-/-30-55-17"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Oostrozebekestraat 114""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.919,""lon"":3.2632}}",1,56,1
+bottom_s_up_brewing,0,0,244358709253,"{""name"":""Bottom's Up Brewing"",""city"":""Pinedale"",""state"":""Wyoming"",""code"":""82941"",""country"":""United States"",""phone"":""1-307-367-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""402 West Pine Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.8666,""lon"":-109.866}}",1,4,1
+maritime_pacific_brewing,0,0,244866351106,"{""name"":""Maritime Pacific Brewing"",""city"":""Seattle"",""state"":""Washington"",""code"":""98107"",""country"":""United States"",""phone"":""1-206-782-6181"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1514 NW Leary Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6637,""lon"":-122.377}}",1,22,1
+brauhaus_onuma-kolsch,0,0,244476084225,"{""name"":""Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_onuma"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+dogfish_head_craft_brewery-squall_ipa,0,0,244624588800,"{""name"":""Squall IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An unfiltered and 100% bottle-conditioned version of 90 Minute IPA that's dry-hopped with Palisade, Amarillo, Simcoe, Cascade, CTZ, and Willamette hops. Brewed to honor the Rogue Gallery in Portland, Maine, who will also be releasing a DFH designed clothing line in the summer of '09."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,42,1
+cervecera_centro_americana_s_a-moza,0,0,244491288578,"{""name"":""Moza"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_centro_americana_s_a"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,41,1
+jasper_ridge_brewery-jasper_brown_ale,0,0,244753170433,"{""name"":""Jasper Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jasper_ridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,47,1
+water_tower_brewing,0,0,245747154944,"{""name"":""Water Tower Brewing"",""city"":""Eden Prairie"",""state"":""Minnesota"",""code"":""55344"",""country"":""United States"",""phone"":""1-952-941-8773"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.8652,""lon"":-93.4095}}",1,24,1
+thunderhead_brewery-storm_ale,0,0,245109030915,"{""name"":""Storm Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,25,1
+murphy_s_wagon_wheel-bock_dark,0,0,244865957890,"{""name"":""Bock Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""murphy_s_wagon_wheel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,21,1
+magnolia_pub_and_brewery-krolsch,0,0,244866809856,"{""name"":""Krölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magnolia_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+brasserie_dupont-moinette_blonde,0,0,244477132800,"{""name"":""Moinette Blonde"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dupont"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+staatliches_hofbrauhaus_in_munchen-starkbier,0,0,245109424128,"{""name"":""Starkbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""staatliches_hofbrauhaus_in_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,26,1
+duvel_moortgat-duvel,0,0,244625244160,"{""name"":""Duvel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duvel_moortgat"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,44,1
+fox_river_brewing_1-titan_porter,0,0,244625047552,"{""name"":""Titan Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+appalachian_brewing_company-kipona_fest,0,0,244367818754,"{""name"":""Kipona Fest"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Oktoberfest style Marzen is a favorite at the famous Bavarian fall beer festivals. The distinct toasted malt flavor of this amber lager finishes quite crisp due to the extensive lagering of this beer. One sip and you’ll swear you’re in Munich.\r\n\r\n\""Kipona\"" is the Indian word for \""sparkling water\"". Each year, over Labor Day weekend, Harrisburg celebrates Kipona with a carnival and festival along the Susquehanna River and on City Island."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,28,1
+brasserie_de_silly-saison,0,0,244359102465,"{""name"":""Saison"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silly"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+brouwerij_de_landtsheer-malheur_mm,0,0,244475166721,"{""name"":""Malheur MM"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_landtsheer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+ballast_point_brewing,0,0,244378042369,"{""name"":""Ballast Point Brewing"",""city"":""San Diego"",""state"":""California"",""code"":""92110"",""country"":""United States"",""phone"":""1-800-581-2739"",""website"":""http://www.ballastpoint.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Ballast Point Brewing Company is one of San Diego's Premiere Breweries. We started out modestly as Home Brew Mart in 1992. Our goal was to teach others how to brew quality handcrafted beer at home. In 1996 the brewery was installed by New World Brewing Systems in the space behind our retail store and production began in September. In May of 2005 we open our second brewery in Scripps Ranch.  We currently distribute five of our favorite beers, Yellowtail Pale Ale,  Calico Amber Ale , Big Eye I.P.A., Black Marlin Porter and Wahoo Wheat Beer to a thirsty San Diego.  Come to our brewery and we will gladly give you a tour and allow you to sample our newest selection of beers. Currently our beer is available in twelve ounce bottles to 15.5 gallon kegs. We also offer half gallon and gallon glass jugs to go. Kegs are available for rent to the public with a minimum deposit.  The name for our brewery comes from the point where Juan Rodriguez Cabrillo first set foot in California. Located on the Point Loma Peninsula, Ballast Point is considered the gateway to San Diego Harbor. Stones from this area were used as ballast in the cargo holds of sailing ships returning to the eastern seaboard. Many New England streets are still lined with the cobblestones brought back from San Diego."",""address"":[""5401 Linda Vista Road #406""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.7668,""lon"":-117.195}}",1,52,1
+deschutes_brewery-twilight_ale,0,0,244606566401,"{""name"":""Twilight Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Stretching the longer summer days into Twilight!  There is something magical about the time of day that falls between light and dark, the high-desert summer day fading into a warm evening with brilliant skies.\r\n\r\nTwilight Ale is a lighter, but full flavored ale with a balanced malt profile and a harmonious blend of four hops.  A final dry hopping of bold Amarillos creates the distinctive finishing touch.  Twilight is best enjoyed when chilled and consumed outdoors."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+goose_island_beer_company_fulton_street-india_pale_ale,0,0,244626489347,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+snipes_mountain_microbrewery_restaurant,0,0,245109817344,"{""name"":""Snipes Mountain Microbrewery & Restaurant"",""city"":""Sunnyside"",""state"":""Washington"",""code"":""98944"",""country"":""United States"",""phone"":""1-509-837-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""905 Yakima Valley Highway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":46.3284,""lon"":-120.008}}",1,27,1
+corner_pub-weizen,0,0,244491026432,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""corner_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,40,1
+privatbrauerei_gaffel-kolsch,0,0,244988837888,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_gaffel"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+avery_brewing_company-reverend_the,0,0,244359888898,"{""name"":""Reverend, The"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Belgian-Style Quadrupel Ale"",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,8,1
+big_boss_brewing_company-bad_penny,0,0,244359626752,"{""name"":""Bad Penny"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_boss_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark brown ale is slightly sweet with a caramel and dark fruit finish. A show case of fine English malts, floor malted the old way. We use pale, chocolate, and crystal malts to produce a complex, but easy drinking dark ale. Very reminescent of northern English ales."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+brouwerij_de_regenboog,0,0,244474773505,"{""name"":""Brouwerij De Regenboog"",""city"":""Assebroek"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-050/37.38.33"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Astridlaan 134""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.1968,""lon"":3.2527}}",1,2,1
+double_mountain_brewery_taproom-india_red_ale_the_ira,0,0,244627079168,"{""name"":""India Red Ale (The \""IRA\"")"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""double_mountain_brewery_taproom"",""updated"":""2010-07-22 20:00:20"",""description"":""The “IRA”, as it’s known around here, marries a ruby red color and rich body with the hop flavors of an IPA. Our unique ale yeast strain adds a delicious layer of complexity. One of the first beers we made, and an enduring favorite."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+coast_range_brewing-desperado_pale_ale,0,0,244474052611,"{""name"":""Desperado Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_range_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,0,1
+amherst_brewing_company-raspberry_brown_ale,0,0,244379287552,"{""name"":""Raspberry Brown Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Massatucky Brown Ale with a subtle raspberry flavoring"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,56,1
+boulevard_brewing_company,0,0,244358774784,"{""name"":""Boulevard Brewing Company"",""city"":""Kansas City"",""state"":""Missouri"",""code"":""64108"",""country"":""United States"",""phone"":""1-816-474-7095"",""website"":""http://www.blvdbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2501 Southwest Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.0821,""lon"":-94.5965}}",1,4,1
+michigan_brewing-wheatland_wheat,0,0,244866416640,"{""name"":""Wheatland Wheat"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""True Hefeweizen yeast and malted wheat give this ale its authentic German flavor and aroma. Hints of banana flavor and aroma are present in this medium to full bodied, pale colored cloudy, unfiltered ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+brewery_belle_vue-gueuze,0,0,244476149760,"{""name"":""Gueuze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_belle_vue"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,6,1
+dry_gulch_brewing-where_the_helles_albuquerque,0,0,244624588801,"{""name"":""Where The Helles Albuquerque"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dry_gulch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+climax_brewing_copmany-climax_cream_ale,0,0,244491288579,"{""name"":""Climax Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Cream Ale is a light, crisp, yellow ale with hop-notes and citrus flavors. It's a smooth, easy drinking summer beer that's perfect for drinking on hot days and with light fare such as seafood and salads."",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,41,1
+jj_bitting_brewing-bad_boy_oktoberfest,0,0,244753170434,"{""name"":""Bad Boy Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jj_bitting_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,47,1
+weinkeller_brewery_berwyn-amber_ale,0,0,245747154945,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,24,1
+titletown_brewing-imperial_ipa,0,0,245109096448,"{""name"":""Imperial IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,25,1
+myanmar_brewery_and_distillery-lager_beer,0,0,244866023424,"{""name"":""Lager Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""myanmar_brewery_and_distillery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+manayunk_brewery_and_restaurant-summer_gold,0,0,244866809857,"{""name"":""Summer Gold"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+brauerei_gasthof_zur_krone-pils,0,0,244477132801,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gasthof_zur_krone"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+stoudt_s_brewery-stoudt_s_american_pale_ale,0,0,245109424129,"{""name"":""Stoudt's American Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This uniquely American beer offers a crisp, medium body with a light amber color.  Generous additions of Cascade hops provide a refreshing bitterness and vibrant citrus aroma."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,26,1
+egan_brewing-toil_and_trubbel_dubbel,0,0,244625244161,"{""name"":""Toil and Trubbel Dubbel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+friesisches_brauhaus_zu_jever-pilsener,0,0,244625047553,"{""name"":""Pilsener"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""friesisches_brauhaus_zu_jever"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+appalachian_brewing_company-purist_pale_ale,0,0,244367884288,"{""name"":""Purist Pale Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our light copper pale ale has a delicate malt attribute balanced by an aggressive hop flavor and aroma. Many American micros have developed their own version of this classic English style beer. Our brewers anticipate that you will enjoy their variation. \r\nHikers on the Appalachian Trail are considered \""purist hikers\"" if they cover every inch of the trail during the hike. Our brewers refuse to compromise the quality of our products with the \""purist hiker\"" in mind."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+brauerei_beck-dark,0,0,244475756544,"{""name"":""Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+brouwerij_van_eecke,0,0,244475166722,"{""name"":""Brouwerij Van Eecke"",""city"":""Watou"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-057-42-20-05"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Douvieweg 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.8612,""lon"":2.6615}}",1,3,1
+belfast_bay_brewing_company-mcgovern_s_oatmeal_stout,0,0,244378107904,"{""name"":""McGovern's Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""belfast_bay_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,52,1
+dock_street_beer-summer_session,0,0,244606631936,"{""name"":""Summer Session"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dock_street_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth refreshing American Wheat Ale brewed with fresh ginger. This Summer Session is much more exciting than the one you had to sit through in high school."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,1,1
+goose_island_beer_company_fulton_street,0,0,244626554880,"{""name"":""Goose Island Beer Company - Fulton Street"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60612"",""country"":""United States"",""phone"":""1-800-466-7363"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1800 West Fulton Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.8871,""lon"":-87.6721}}",1,46,1
+southern_tier_brewing_co-unearthly_imperial_india_pale_ale,0,0,245109817345,"{""name"":""Unearthly Imperial India Pale Ale"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""At the Southern Tier Brewing Company, vigorously hopped beer is our standard and inspiration. We continue a commitment to innovation with our most aggressive offering yet. Unearthly is a manifestation of the brewer’s craft; skillfully balancing art and the forces of nature to produce a divine liquid. Delicately pour a taste into a fluted glass. Smell the enchanting aromas of the hops waft forward as your first sip divulges this beer’s fervent soul. To underestimate Unearthly is to trifle with the mysteries of the universe, so please consume wisely."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,27,1
+crane_river_brewpub_and_cafe-flaming_crane_chili_beer,0,0,244491026433,"{""name"":""Flaming Crane Chili Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+pyramid_alehouse_brewery_and_restaurant_seattle-amber_weizen,0,0,244988837889,"{""name"":""Amber Weizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,20,1
+bavarian_barbarian_brewing_company-weldspatter_ipa,0,0,244359954432,"{""name"":""Weldspatter IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bavarian_barbarian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Weldspatter IPA is not your typical India Pale Ale. First of all, it isn’t as aggressively hopped as many other American versions. Second, it isn’t quite as pale. Balance is a lovely thing in beers and Weldspatter IPA achieves balance without compromising hop presence. The hop flavor and aroma abound, but the bitterness is held in check to give our IPA a pleasant malt character as well."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+boston_beer_company-longshot_american_pale_ale,0,0,244359626753,"{""name"":""Longshot American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+brouwerij_liefmans-goudenband_1996,0,0,244474773506,"{""name"":""Goudenband 1996"",""abv"":3.98,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_liefmans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+edelweissbrauerei_farny,0,0,244627079169,"{""name"":""Edelweissbrauerei Farny"",""city"":""Kilegg"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7522-/-9788-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Drren 5""]}",1,48,1
+coors_brewing_golden_brewery-killian_s_irish_red,0,0,244474118144,"{""name"":""Killian's Irish Red"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Killian's Irish Red is a traditional lager with an authentic Irish heritage, based on the Killian family's recipe created for the Killian's brewery in Enniscorthy, Ireland in 1864. Coors acquired the rights to brew and market the product in America and Killian's was introduced to the U.S. in 1981.\r\n\r\nKillian's Irish Red derives its distinctive red-amber color and taste from a special caramel malt that has been roasted at a high temperature longer and more slowly than most malts. There are no coloring agents or artificial additives used in brewing Killian's. The brew is known for its rich amber color and thick, creamy head."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+arcadia_brewing-scotch_ale,0,0,244379287553,"{""name"":""Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,56,1
+brasal_brasserie_allemande-special_amber_lager,0,0,244358774785,"{""name"":""Special Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasal_brasserie_allemande"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+mill_creek_brewpub,0,0,244866416641,"{""name"":""Mill Creek Brewpub"",""city"":""Walla Walla"",""state"":""Washington"",""code"":""99362"",""country"":""United States"",""phone"":""1-509-522-2440"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""11 North Palouse""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":46.0697,""lon"":-118.336}}",1,22,1
+bricktown_brewery-vanilla,0,0,244476149761,"{""name"":""Vanilla"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bricktown_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+empyrean_brewing_company-black_jack_stout,0,0,244624588802,"{""name"":""Black Jack Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+coach_s_norman-ipa,0,0,244491354112,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coach_s_norman"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,41,1
+john_harvard_s_brew_house_harvard_square,0,0,244753235968,"{""name"":""John Harvard's Brew House - Harvard Square"",""city"":""Cambridge"",""state"":""Massachusetts"",""code"":""2138"",""country"":""United States"",""phone"":""1-617-868-3585"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""33 Dunster Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3724,""lon"":-71.1193}}",1,47,1
+wells_and_youngs_brewing_company_ltd-young_s_winter_warmer,0,0,245747220480,"{""name"":""Young's Winter Warmer"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wells_and_youngs_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""The definitive winter beer and a longtime favourite, Winter Warmer has been making annual appearances on the bar every winter since the 1950s. A rich, ruby-coloured beer, luscious and fullbodied, with a splendid nutty flavour."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,24,1
+tommyknocker_brewery_and_pub-imperial_nut_brown,0,0,245109096449,"{""name"":""Imperial Nut Brown"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-12-20 15:59:17"",""description"":""Commemorating the 10th anniversary of Tommyknocker Brewery, this special brew is meticulously crafted with pure maple syrup, the highest quality chocolate and crystal malts and is accented with the finest blend of European and American hops. Imperial Nut Brown Ale, at 9.8% alcohol by volume, is a bigger, bolder version of their Maple Nut Brown."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,25,1
+new_belgium_brewing-saison,0,0,244866023425,"{""name"":""Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+mckenzie_brew_house-black_lab_stout,0,0,244866875392,"{""name"":""Black Lab Stout"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,23,1
+brauerei_gss-dark_beer_stiftsbrau,0,0,244477198336,"{""name"":""Dark Beer / Stiftsbräu"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gss"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+sturgeon_bay_brewing-summer_wheat,0,0,245109424130,"{""name"":""Summer Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sturgeon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+abita_brewing_company-abita_purple_haze,0,0,244370309120,"{""name"":""Abita Purple Haze"",""abv"":4.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Purple Haze is a crisp, American style wheat beer with raspberry puree added after filtration. Therefore, you may see raspberry pulp in the beer. The raspberries provide the lager with a subtle purple coloration and haze, a fruity aroma, and a tartly sweet taste."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,33,1
+elliott_bay_brewery_and_pub-no_doubt_stout,0,0,244625244162,"{""name"":""No Doubt Stout"",""abv"":5.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elliott_bay_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,44,1
+full_sail_brewing_1-slip_knot_imperial_ipa_2006,0,0,244625047554,"{""name"":""Slip Knot Imperial IPA 2006"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+appleton_brewing-adler_brau_downtown_brown,0,0,244367884289,"{""name"":""Adler Bräu Downtown Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,28,1
+brauerei_beck-st_pauli_girl_special_dark,0,0,244475822080,"{""name"":""St.Pauli Girl Special Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+brouwerij_verhaeghe-duchesse_de_bourgogne,0,0,244475232256,"{""name"":""Duchesse de Bourgogne"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_verhaeghe"",""updated"":""2010-07-22 20:00:20"",""description"":""DUCHESSE DE BOURGOGNE\r\nfrom Brouwerij Verhaeghe is the traditional Flemish red ale. This refreshing ale is matured in oak casks; smooth with a rich texture and interplay of passion fruit, and chocolate, and a long, dry and acidic finish. After the first and secondary fermentation, the beer goes for maturation into the oak barrels for 18 months. The final product is a blend of younger 8 months old beer with 18 months old beer. The average age of the Duchesse de Bourgogne before being bottled is 12 months.""}",1,3,1
+big_rock_brewery,0,0,244378107905,"{""name"":""Big Rock Brewery"",""city"":""Calgary"",""state"":""Alberta"",""code"":""0"",""country"":""Canada"",""phone"":""1-403-720-3239"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5555 76th Avenue SE""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.9847,""lon"":-113.956}}",1,52,1
+dogfish_head_craft_brewery-75_minute_ipa,0,0,244606631937,"{""name"":""75 Minute IPA"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Johnny Cask has entered the building! We’ve retrofitted a 15 barrel tank to perfectly produce a very special cask conditioned ale (so, we have a little time to play around during winters at the Delaware coast). This beer, known as Dogfish Head 75 Minute IPA is a blend of 60 and 90 Minute IPAs with a special whole leaf cascade dry-hopping session."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,1,1
+gray_brewing-cream_ale,0,0,244752515072,"{""name"":""Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+spoetzl_brewery,0,0,245109882880,"{""name"":""Spoetzl Brewery"",""city"":""Shiner"",""state"":""Texas"",""code"":""77984"",""country"":""United States"",""phone"":""1-800-574-4637"",""website"":""http://www.shiner.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""603 East Brewery Street""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":29.426,""lon"":-97.1607}}",1,27,1
+dry_gulch_brewing,0,0,244623540224,"{""name"":""Dry Gulch Brewing"",""city"":""Albuquerque"",""state"":""New Mexico"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.0845,""lon"":-106.651}}",1,40,1
+pyramid_ales_brewery-pyramid_thunderhead_ipa,0,0,244988903424,"{""name"":""Pyramid Thunderhead IPA"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""It took only a couple of rounds of India's finest for the 19th century British Colonists to write home, \""Either send us some good beer or we're outta here.\"" India Pale Ale is what was sent. Originally made extra hoppy to survive the voyage, it's unique flavor also survived the Colonists finicky tastes and became and instant favorite back home.\r\n\r\nPyramid India Pale Ale has the distinctively hoppy flavor and aroma craft beer enthusiasts demand. Abundant helpings of Columbus hops gives this ale an astonishing 67 IBU's - truly a beer for bold tastes! The distinguished Celebrator Beer News aptly named this brew \""hophead nectar\"" (June/July issue, 1998)."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,20,1
+big_time_brewing-atlas_amber_ale,0,0,244359954433,"{""name"":""Atlas Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+boston_beer_company-samuel_adams_winter_lager,0,0,244359626754,"{""name"":""Samuel Adams Winter Lager"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Bold and rich, with a touch of holiday spice\r\nThe first thing one notices in a Samuel Adams® Winter Lager is its color: the deep brown of winter. Then comes the magical aroma which promises something special on the tongue. The warm aroma of cinnamon and ginger which blends with the roasty sweetness of the malted barley and hint of citrus from the orange peel. And after that first sip the promise is fulfilled. On the palate Samuel Adams® Winter Lager is rich and full bodied, robust and warming, a wonderful way to enjoy the cold evenings that come with this season."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,7,1
+brouwerij_sterkens-st_paul_triple,0,0,244474773507,"{""name"":""St. Paul Triple"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+elgood_sons-norvig_ale,0,0,244627144704,"{""name"":""Norvig Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elgood_sons"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+copper_kettle_brewery,0,0,244474118145,"{""name"":""Copper Kettle Brewery"",""city"":""Millmont"",""state"":""Pennsylvania"",""code"":""17845"",""country"":""United States"",""phone"":""270-342-1638"",""website"":""http://www.ckbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Copper Kettle Brewery is an up and coming brewery owned by Harold Kerlin and Russ Eisenhuth. We have been independently brewing beer for the past 6 years. In 2006 we won First place in the Sam Adams Longshot contest for the northeast region of the U.S. with our Potbelly Porter. After that we decided to start our own brewery. The Brewery is located in just outside of Laurelton PA. We are a small production brewery using a one barrel brewing system. We hope to produce around 50 barrels a year. At present we are making 4 different styles of beer. A Wheat beer, Porter, Grand Cru, and Belgian Dubbel. All of our beer is unfiltered, and bottle conditioned. Our beers are now available at the Bull Run Inn, Market St., Lewisburg, The Beer Barn, Lewisburg and Wehr's Beverages, Mifflinburg."",""address"":[""339 Fairground Rd""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":40.8942,""lon"":-77.1971}}",1,0,1
+atwater_block_brewing-vanilla_java_porter,0,0,244379353088,"{""name"":""Vanilla Java Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust porter made with chocolate malt.  We blend it with Vanilla and Java beans, and balance it with U.S. Golding Hops."",""style"":""Porter"",""category"":""Irish Ale""}",1,56,1
+512_brewing_company-512_pecan_porter,0,0,244372996096,"{""name"":""(512) Pecan Porter"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Nearly black in color, (512) Pecan Porter is made with Organic US 2-row and Crystal malts along with Baird’s Chocolate and Black malts. Its full body and malty sweetness are balanced with subtle pecan aroma and flavor from locally grown pecans. Yet another true Austin original!"",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+brasal_brasserie_allemande,0,0,244358774786,"{""name"":""Brasal-Brasserie Allemande"",""city"":""LaSalle"",""state"":""Quebec"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.4289,""lon"":-73.6313}}",1,4,1
+minneapolis_town_hall_brewery-oak_aged_single_malt,0,0,244866482176,"{""name"":""Oak Aged Single Malt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+brouwerij_liefmans-gluhkriek,0,0,244476149762,"{""name"":""Gluhkriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_liefmans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,6,1
+empyrean_brewing_company-dark_german_lager,0,0,244624588803,"{""name"":""Dark German Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+coors_brewing_golden_brewery-blue_moon_belgian_white,0,0,244491354113,"{""name"":""Blue Moon Belgian White"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Blue Moon Belgian White, Belgian-style wheat ale, is a refreshing, medium-bodied, unfiltered Belgian-style wheat ale spiced with fresh coriander and orange peel for a uniquely complex taste and an uncommonly smooth finish.\r\n\r\nThe name \""Belgian White\"" is a reference to the cloudy white, opaque appearance of the beer. \""Belgian White\"" also refers to the style of beer, which has been brewed in Belgium for about 300 years. This type of ale is brewed with malt, wheat and oats. It is unfiltered, which allows protein and yeast to remain suspended in the beer and creates the cloudy appearance. This also adds to the smoothness and full body of the beer.\r\n\r\nPutting a new twist on the lime ritual, Blue Moon is traditionally served with a slice of orange.  Blue Moon was launched in 1995."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,41,1
+kalamazoo_brewing-third_coast_ale,0,0,244753235969,"{""name"":""Third Coast Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kalamazoo_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,47,1
+yards_brewing-general_washington_tavern_porter,0,0,245747220481,"{""name"":""General Washington Tavern Porter"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""By George, I think we've got it.\r\n\r\nDays of debate and deliberation at Independence Hall were often followed by nights of debate and deliberation (and a few libations) at the City Tavern, where our forefathers would gather to exchange revolutionary ideas.\r\n\r\nRich and warming with a deep garnet hue, the molasses-based Tavern Porter™ reflects Washington's admiration of Philadelphia-style porters and follows a recipe Washington used himself, when brewing beer to satisfy his thirsty field officers.\r\n\r\nEnjoy a taste of history, courtesy of Yards Brewing Company, Philadelphia's premier brewer and bottler.\r\n\r\nHistorical note: Our new brewery is located just blocks away from the site of Robert Hair's brewery, where Washington's favorite Philadelphia Porter was crafted."",""style"":""Porter"",""category"":""Irish Ale""}",1,24,1
+trap_rock_restaurant_and_brewery-yorkshire_stout,0,0,245109096450,"{""name"":""Yorkshire Stout"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trap_rock_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,25,1
+new_glarus_brewing_company-solstice_wheat,0,0,244866023426,"{""name"":""Solstice Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,21,1
+middle_ages_brewing-winter_wheat,0,0,244866875393,"{""name"":""Winter Wheat"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Subtle Seasonal spices, in this dark, rich wheat beer are smooth and easy for the discerning palate."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,23,1
+brauerei_herrenhausen,0,0,244477198337,"{""name"":""Brauerei Herrenhausen"",""city"":""Hannover"",""state"":""Niedersachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)511-/-7907-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Herrenhuser Strae 83-99""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":52.3935,""lon"":9.6814}}",1,9,1
+tenaya_creek_restaurant_and_brewery,0,0,245109489664,"{""name"":""Tenaya Creek Restaurant and Brewery"",""city"":""Las Vegas"",""state"":""Nevada"",""code"":""89128"",""country"":""United States"",""phone"":""1-702-362-7335"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3101 North Tenaya Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.2154,""lon"":-115.251}}",1,26,1
+alesmith_brewing-grand_cru_2003,0,0,244370374656,"{""name"":""Grand Cru 2003"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+empyrean_brewing_company-empyrean_oktoberfest,0,0,244625309696,"{""name"":""Empyrean Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,44,1
+gottberg_brew_pub-impromptu_pale_ale,0,0,244625113088,"{""name"":""Impromptu Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+ballast_point_brewing-wahoo_wheat_beer,0,0,244367949824,"{""name"":""Wahoo Wheat Beer"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ballast Point Wahoo Wheat Beer is created using the same ingredients that were once used in Belgium. Flaked unmalted wheat, oats and malted barley comprise the grain. The unmalted wheat has a high protein content, which causes the beer to be hazy, thus giving it a cloudy, or \""white\"" appearance. A special yeast gives a refreshing tangy flavor that is different from both the sour Weiss beers of Berlin or the banana and clovey Weizens of Bavaria. The mild hopping allows the unique malts to show through and does not conflict with the subtleties of the citrus spicing. This unique citrus character is created by adding a blend of curacao (bitter orange), sweet orange and coriander to the boil. White beers are light and refreshing, yet provide a complex reminder that interesting high quality beer does not have to be bitter and dark. Ballast Point Wahoo Wheat Beer is the perfect beer for sunny San Diego."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,28,1
+brimstone_brewing-stone_beer,0,0,244475887616,"{""name"":""Stone Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brimstone_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+caldera_brewing-ashland_amber,0,0,244475232257,"{""name"":""Ashland Amber"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A crisp, well-balanced, refreshing amber.  Simplicity is the key to this recipe."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,3,1
+blicks_brewing,0,0,244378107906,"{""name"":""Blicks Brewing"",""city"":""Colorado Springs"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.8339,""lon"":-104.821}}",1,52,1
+dogfish_head_craft_brewery-chicory_stout,0,0,244606631938,"{""name"":""Chicory Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark beer made with a touch of roasted chicory, organic Mexican coffee, St. John's Wort, and licorice root. Brewed with whole-leaf Cascade and Fuggles hops, the grains include pale, roasted & oatmeal."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,1,1
+grolsche_bierbrouwerij,0,0,244752515073,"{""name"":""Grolsche Bierbrouwerij"",""city"":""Enschede"",""state"":""Overijssel"",""code"":""7548 XA"",""country"":""Netherlands"",""phone"":""+31-(0)53-4833333"",""website"":""http://www.grolsch.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Royal Grolsch B.V. is one of the largest breweries in the Netherlands. It is best known for its 'beugel' bottle design."",""address"":[""Brouwerslaan 1""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":52.2081,""lon"":6.8163}}",1,46,1
+stieglbrauerei_zu_salzburg_gmbh-stiegl_leicht,0,0,245109882881,"{""name"":""Stiegl Leicht"",""abv"":3.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a light beer with a full taste and a third less alcohol so therefore 30% less calories. It is ideal for beer lovers who prefer light beers but do not want to renounce the taste."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,27,1
+engine_house_9-india_pale_ale,0,0,244623605760,"{""name"":""India Pale Ale"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+rahr_sons_brewing_company-rahr_s_oktoberfest,0,0,244988903425,"{""name"":""Rahr's Oktoberfest"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""O'zapft is!\"" The cry of happy beer drinkers at the start of the Munich Oktoberfest, which in German means \""The keg is tapped!\"" Rahr's Oktoberfest Celebration Lager is a traditional Marssen style Oktobefest lager - dark amber in color, super smooth, medium body with a sweet malty finish. True to tradition, this is a classic Oktoberfest Lager."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,20,1
+big_time_brewing-faux_paddy_irish_ale,0,0,244360019968,"{""name"":""Faux Paddy Irish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+brasserie_brouwerij_cantillon-bruocsella_1900_grand_cru,0,0,244359692288,"{""name"":""Bruocsella 1900 Grand Cru"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,7,1
+brouwerij_van_honsebrouck-brigand,0,0,244474839040,"{""name"":""Brigand"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_honsebrouck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+elk_creek_cafe_and_aleworks-double_rainbow_ipa,0,0,244627144705,"{""name"":""Double Rainbow IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_creek_cafe_and_aleworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Named for the spectacular and complete double rainbow that appeared in the northwest sky just outside the brewhouse during the inaugural mash in. With a foot in both the new and old worlds, this IPA is generously dry-hopped with English Fuggles, resulting in a strong, deep golden, very fresh, and fruity English flavor and aroma."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,48,1
+crabby_larry_s_brewpub_steak_crab_house-summer_lager,0,0,244474183680,"{""name"":""Summer Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+backwater_brewing,0,0,244379353089,"{""name"":""Backwater Brewing"",""city"":""Winona"",""state"":""Minnesota"",""code"":""55987"",""country"":""United States"",""phone"":""1-507-452-2103"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1429 West Service Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.0486,""lon"":-91.6774}}",1,56,1
+alpirsbacher_klosterbru-pils,0,0,244373061632,"{""name"":""Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alpirsbacher_klosterbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+brasserie_du_benin,0,0,244358774787,"{""name"":""Brasserie du Benin"",""city"":""Lom"",""state"":"""",""code"":"""",""country"":""Togo"",""phone"":""228-215-062"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""BP 896""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":32.3906,""lon"":-93.3739}}",1,4,1
+moylan_s_brewery_restaurant-india_pale_ale,0,0,244866482177,"{""name"":""India Pale Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+brouwerij_sterkens-st_sebastiaan_dark,0,0,244476149763,"{""name"":""St. Sebastiaan Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+fifty_fifty_brewing_co,0,0,244624654336,"{""name"":""Fifty Fifty Brewing Co."",""city"":""Truckee"",""state"":""California"",""code"":""96161"",""country"":""United States"",""phone"":""530.587.BEER"",""website"":""http://www.fiftyfiftybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""11197 Brockway Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.322,""lon"":-120.163}}",1,42,1
+courthouse_pub-munich_dunkel,0,0,244491419648,"{""name"":""Munich Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""courthouse_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+la_jolla_brew_house-india_pale_ale,0,0,244753301504,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,47,1
+traquair_house_brewery-house_ale,0,0,245109161984,"{""name"":""House Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""traquair_house_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,25,1
+niagara_falls_brewing-best_bitter,0,0,244866088960,"{""name"":""Best Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+millstream_brewing-schild_brau_amber,0,0,244866940928,"{""name"":""Schild Brau Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millstream_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,23,1
+brauerei_schumacher,0,0,244477263872,"{""name"":""Brauerei Schumacher"",""city"":""Dsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)211-/-828902-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Oststrae 123""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.2216,""lon"":6.7853}}",1,9,1
+terminal_gravity_brewing-ipa,0,0,245109489665,"{""name"":""IPA"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terminal_gravity_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,26,1
+alesmith_brewing-horny_devil,0,0,244370440192,"{""name"":""Horny Devil"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+engine_house_9-porter,0,0,244625309697,"{""name"":""Porter"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+great_lakes_brewing-traditional_lager,0,0,244751269888,"{""name"":""Traditional Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+bard_s_tale_beer_company,0,0,244367949825,"{""name"":""Bard's Tale Beer Company"",""city"":""Lee's Summit"",""state"":""Missouri"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""211 NW Ward Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.9169,""lon"":-94.3943}}",1,28,1
+bristol_brewing-winter_warlock_oatmeal_stout,0,0,244475887617,"{""name"":""Winter Warlock Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bristol_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,5,1
+copper_kettle_brewery-lucky_393_grand_cru,0,0,244475297792,"{""name"":""Lucky 393 Grand Cru"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_kettle_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is medium dark in color but it has a light body and a smooth mouthfeel. Coriander and orange will surround your senses and keep you coming back for more."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,3,1
+boiler_room_brewpub-colorado_belle_dark,0,0,244378107907,"{""name"":""Colorado Belle Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boiler_room_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+dogfish_head_craft_brewery-raison_d_extra,0,0,244606697472,"{""name"":""Raison D'Extra"",""abv"":20.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A bigger, bolder version of our Raison D'Etre.\r\n\r\nThis is a bulbous, brown ale brewed with a bunch of malt, brown sugar and raisins.\r\n\r\nIn case you care... the average 12 oz. serving has approximately 425 calories."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,1,1
+half_moon_bay_brewing-illuminator_doppelbock,0,0,244752580608,"{""name"":""Illuminator Doppelbock"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,46,1
+stoudt_s_brewery-stoudt_s_pils,0,0,245109948416,"{""name"":""Stoudt's Pils"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Reflective of the traditional German style, Stoudt's Pils is delicately dry with firm bitterness.  This crispness of Saaz hops and a dry malt finish make the Pilsener an excellent aperitif."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,27,1
+engine_house_9-spring_bock,0,0,244623671296,"{""name"":""Spring Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,40,1
+ramapo_valley_brewery-christmas_ale,0,0,244988903426,"{""name"":""Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ramapo_valley_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+binding_brauerei_ag,0,0,244360019969,"{""name"":""Binding Brauerei AG"",""city"":""Frankfurt am Main"",""state"":""Hessen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)69-/-60650"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Darmstdter Landstrae 185""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.0943,""lon"":8.6913}}",1,8,1
+brasserie_la_caracole-amber,0,0,244476346368,"{""name"":""Amber"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_caracole"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+bryggeriet_lfabrikken,0,0,244474839041,"{""name"":""Bryggeriet lfabrikken"",""city"":""Tisvildeleje"",""state"":"""",""code"":"""",""country"":""Denmark"",""phone"":""45-70-20-79-30"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hollselund Strandvej 74""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":56.0746,""lon"":12.1161}}",1,2,1
+elk_creek_cafe_and_aleworks-poe_paddy_porter,0,0,244627210240,"{""name"":""Poe Paddy Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_creek_cafe_and_aleworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Named for our beloved State Park this Robust Porter draws its uniquely enticing roasted character from a thoughtful combination of malts. Generous hop additions ensure a satisfying beer drinking experience."",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+craftsman_brewing,0,0,244474183681,"{""name"":""Craftsman Brewing"",""city"":""Pasadena"",""state"":""California"",""code"":""91103"",""country"":""United States"",""phone"":""1-626-296-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1260 Lincoln Avenue #100""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.1696,""lon"":-118.159}}",1,0,1
+bamberger_mahr_s_bru,0,0,244379353090,"{""name"":""Bamberger Mahr's-Bru"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-91517-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wunderburg 10""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.8901,""lon"":10.9067}}",1,56,1
+anchor_brewing-our_special_ale_1992,0,0,244373061633,"{""name"":""Our Special Ale 1992"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+brauerei_aying_franz_inselkammer_kg-brau_weisse,0,0,244475297792,"{""name"":""Bräu-Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_aying_franz_inselkammer_kg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,4,1
+nebraska_brewing_company-eos_hefeweizen,0,0,244866547712,"{""name"":""EOS Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,22,1
+capital_brewery-bavarian_lager,0,0,244476215296,"{""name"":""Bavarian Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+flatlander_s_restaurant_brewery,0,0,244624654337,"{""name"":""Flatlander's Restaurant & Brewery"",""city"":""Lincolnshire"",""state"":""Illinois"",""code"":""60069"",""country"":""United States"",""phone"":""1-847-821-1234"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 Village Green""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":42.2031,""lon"":-87.9302}}",1,42,1
+crane_river_brewpub_and_cafe-porter,0,0,244491419649,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,41,1
+lagunitas_brewing_company-ruben_the_jets,0,0,244753301505,"{""name"":""Ruben & The Jets"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Ale is Brewed in Honor of the 40th Anniversary Release of this Album."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,47,1
+21st_amendment_brewery_cafe-south_park_blonde,0,0,244372602880,"{""name"":""South Park Blonde"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Light golden color. Sweet dry aroma with crisp, clear bitterness. Brewed with imported German hops.The perfect beer to have when you'd like to have more than one."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,38,1
+triumph_brewing_of_princeton-honey_wheat,0,0,245109161985,"{""name"":""Honey Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,25,1
+nicolet_brewing-blonde,0,0,244866088961,"{""name"":""Blonde"",""abv"":3.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nicolet_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+mission_springs_brewing-blonde_draft,0,0,244866940929,"{""name"":""Blonde Draft"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mission_springs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+bristol_brewing,0,0,244477263873,"{""name"":""Bristol Brewing"",""city"":""Colorado Springs"",""state"":""Colorado"",""code"":""80906"",""country"":""United States"",""phone"":""1-719-633-2555"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1647 South Tejon Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.8097,""lon"":-104.826}}",1,9,1
+the_livery-thoms_special_ale,0,0,245109489666,"{""name"":""Thoms Special Ale"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""This deep copper colored Ale is named after Steve's homebrew buddy Thom Phillips, who has had a part in helping to formulate some of the final Ale recipes at the Livery. Hints of caramel make their way through the aromatic bitterness of Centennial hops."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,26,1
+ali_i_brewing-golden_ale,0,0,244370440193,"{""name"":""Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ali_i_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+ettaler_klosterbetriebe_abteilung_brauerei_destillerie-kloster_dunkel,0,0,244625375232,"{""name"":""Kloster Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ettaler_klosterbetriebe_abteilung_brauerei_destillerie"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+green_flash_brewing-hop_hed_red_ale,0,0,244751269889,"{""name"":""Hop Hed Red Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_flash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Resinous hop character and bitterness balance the rich carmel malt base. We took it a step further and Amarillo dry-hopped the brew to 45 ibu's, creating refreshing and savory hop flavors and aromas. Is it red IPA? That's your call."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+bavarian_barbarian_brewing_company,0,0,244368015360,"{""name"":""Bavarian Barbarian Brewing Company"",""city"":""Williamsport"",""state"":""Pennsylvania"",""code"":""17701"",""country"":""United States"",""phone"":""570.332.5050"",""website"":""http://www.bavarianbarbarian.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Bavarian Barbarian Brewing Company is Williamsport's first production brewery since the 1950's. The brewery, which occupies 9,000 square feet at 429 W. 3rd St in Williamsport, Pennsylvania, was founded by Mike Hiller in July 2007.  Though a native of South Williamsport, Barbarian Chief, Mike Hiller, first entered the craft brewing industry in 1997 as an Account Services Associate for Legendary Distributors, Ltd., of Richmond, Virginia. After nearly a year of distributing beer, an opportunity arose for Mike to work as a brewer for Legend Brewing Company. Mike worked with five other brewers to perform duties at all levels of production including brewing, cellar work, cleaning and maintenance.  After nearly four years of service at Legend Brewing Company, Mike moved to Boston, MA, so his wife, Kira, could attend grad school. Tired of listening to him whine about how much he missed brewing, Kira gave him a home brewing kit as an anniversary gift. Mike began brewing whenever he could find the time. He developed the recipes for Hammerin' Ale, Headbangerz Brown Ale, Square Feet Wheat, Weldspatter I.P.A. and several other beers in five-gallon batches on his apartment's balcony.  Mike was also commissioned by friends and co-workers to brew beer for special occasions.  In fact, Square Feet Wheat was actually first brewed for an art gallery opening featuring works by the Barbarian's logo and label designer, Erick Thomas.  After reading Brewing Up a Business: Adventures in Entrepreneurship by Sam Calagione of Dogfish Head Brewery fame, Mike was inspired to start his own brewery. He spent eight months researching and writing a business plan. Another year was spent gathering support and revising his business plans. Thanks to the support of family, friends and other area businessmen who believed in Mike's dream, Bavarian Barbarian Brewing Company is now a reality."",""address"":[""429 W. 3rd St""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.238,""lon"":-77.0103}}",1,28,1
+brouwerij_bockor-bellegems_bruin,0,0,244475953152,"{""name"":""Bellegems Bruin"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bockor"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+crabby_larry_s_brewpub_steak_crab_house-dead_man_walkin_ipa,0,0,244475297793,"{""name"":""Dead Man Walkin' IPA"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":""This extra hoppy ale is characteristic of the classic pale ales. Using the very flavorful Mount Hood and Liberty hops we have created classic IPA goodness every sailor knows."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+borsodi_sorgyar,0,0,244378173440,"{""name"":""Borsodi Sörgyár"",""city"":""Böcs"",""state"":"""",""code"":"""",""country"":""Hungary"",""phone"":"""",""website"":""http://www.borsodisorgyar.hu/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,52,1
+dogfish_head_craft_brewery-zwaanend_ale,0,0,244606697473,"{""name"":""Zwaanend,ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A neo-traditional Rye Bok brewed to commerate the 375th Anniversary of the First Town in the First State."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,1,1
+hampshire_brewery,0,0,244752646144,"{""name"":""Hampshire Brewery"",""city"":""Romsey"",""state"":""Hampshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01794)-830529"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6-8 Romsey Industrial Estate""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.9889,""lon"":-1.4989}}",1,46,1
+straub_brewery-straub_light,0,0,245109948417,"{""name"":""Straub Light"",""abv"":3.16,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""straub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,27,1
+flying_fish_brewing_company-oktoberfish,0,0,244623736832,"{""name"":""OktoberFish"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""First released in 2002, and sold out in two weeks. A tribute to the classic Fest styles of Germany the O'Fish uses European malts hops and yeast. A beautiful reddish color, a savory malt profile and nice hop flavor, make this Fest beer quite drinkable. OktoberFish is great with food and especially great with Lederhosen."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,40,1
+river_west_brewing-light,0,0,244988968960,"{""name"":""Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+bitburger_brauerei,0,0,244360019970,"{""name"":""Bitburger Brauerei"",""city"":""Bitburg"",""state"":""Rheinland-Pfalz"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)6561-/-14-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Römermauer 3""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.974,""lon"":6.5227}}",1,8,1
+brauerei_leibinger-hefe_weizen,0,0,244476346369,"{""name"":""Hefe-Weizen"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_leibinger"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,7,1
+capital_brewery-garten_brau_fest,0,0,244474904576,"{""name"":""Garten Bräu Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,2,1
+empyrean_brewing_company-luna_sea_amber,0,0,244627210241,"{""name"":""Luna Sea Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+crescent_city_brewhouse-black_forest,0,0,244474249216,"{""name"":""Black Forest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crescent_city_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+baron_brewing_company-baron_oktoberfest,0,0,244379418624,"{""name"":""Baron Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""baron_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Baron Oktoberfest is a traditional German Style Oktoberfest / Marzen. Deep copper/amber in color with a rich but light malt flavor. Finishes crisp and easy, leaving the mouth desiring more. We age the Oktoberfest for a full three months to guarantee a fantastically smooth beer.\r\n\r\nAll ingredients for the beer are imported from Germany. Brewed in accordance to the German Beer Purity Law (Reinheitsgebot) of 1516."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,56,1
+appleton_brewing-adler_brau_oatmeal_stout,0,0,244373127168,"{""name"":""Adler Bräu Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,39,1
+breckenridge_brewery-471_pilsner,0,0,244475363328,"{""name"":""471 Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+nethergate_brewery_co_ltd-augustinian_ale,0,0,244866547713,"{""name"":""Augustinian Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nethergate_brewery_co_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+capital_brewery-capital_kloster_weizen,0,0,244476215297,"{""name"":""Capital Kloster Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,6,1
+four_peaks_brewing-sunbru_kolsch_style_ale,0,0,244624654338,"{""name"":""Sunbru Kölsch Style Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A very light golden ale that is malty sweet, almost honey-like in the nose. This ale has a light to medium body and a very delicate flavor. Easy drinking, it has very low bitterness and a soft dry finish. 5.2% alcohol/volume. This style originates from the city of Cologne, Germany where all twenty eight breweries are dedicated to brewing only Kölsch. Coming soon in cans. (ALWAYS ON TAP!!)""}",1,42,1
+denver_chophouse_and_brewery-singletrack_copper_ale,0,0,244623933440,"{""name"":""Singletrack Copper Ale"",""abv"":5.57,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+liberty_steakhouse_and_brewery-liberty_unfiltered_wheat_ale,0,0,244753301506,"{""name"":""Liberty Unfiltered Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This light ale is an American interpretation of a German classic. It's not filtered and has a pleasantly tart flavor. Served with a lemon wedge."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,47,1
+aass_brewery-bock_beer,0,0,244372668416,"{""name"":""Bock Beer"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aass_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Aass Bock is a dark \""lager\"" also produced in accordance with the \""Purity law\"". \r\n\r\nThe malted barely is produced in the Scandinavian countries. It is a combination of bayer-, color- and caramel malt. \r\n\r\nWe use the very best of hops from the Hallertau area in Germany, and the water is pure Norwegian mountain water. \r\n\r\nThe Aass Bock is largered at cool temperatures, and it is allowed to mature for as long as 6 months before bottling. \r\n\r\nThe beer is sold in a caracteristic nice-looking green bottle containing 11.2 fl. oz or 330 ml."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,38,1
+triumph_brewing_of_princeton-scottish_ale,0,0,245109161986,"{""name"":""Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,25,1
+north_coast_brewing_company-old_stock_ale_2002,0,0,244866088962,"{""name"":""Old Stock Ale 2002"",""abv"":11.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,21,1
+mogollon_brewing_company-superstition_pale_ale,0,0,244866940930,"{""name"":""Superstition Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mogollon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""If you are searching for a light, refreshing pale ale, your search is over!  Superstition Pale Ale is named after the Superstition Mountains which are just east of Phoenix.  This American pale ale is brewed using mountain pure water, select domestic grain, yeast and hops from the Pacific Northwest.  Superstition is copper in color with a clean, malty fullness and finishes with pronounced hop bitterness.  Perfect for enjoying on a warm Arizona day."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+brouwerij_liefmans-goudenband_2002,0,0,244477329408,"{""name"":""Goudenband 2002"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_liefmans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+three_floyds_brewing-chubby_brown,0,0,245109555200,"{""name"":""Chubby Brown"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,26,1
+alltech_s_lexington_brewing_company-kentucky_ale,0,0,244370505728,"{""name"":""Kentucky Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alltech_s_lexington_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+fish_brewing_company_fish_tail_brewpub-poseidon_imperial_stout,0,0,244625375233,"{""name"":""Poseidon Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,44,1
+hair_of_the_dog_brewing-golden_rose,0,0,244751269890,"{""name"":""Golden Rose"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+bell_s_brewery_inc-bell_s_christmas_ale,0,0,244368015361,"{""name"":""Bell's Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A Scotch Ale, “brewed with 100% Michigan barley and a blend of Pacific Northwest and Michigan hops.”"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,28,1
+brown_street_brewery-south_of_the_border_light,0,0,244475953153,"{""name"":""South of the Border Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brown_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+de_proef_brouwerij-andelot_euphorique,0,0,244607287296,"{""name"":""Andelot Euphorique"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+boss_browar_witnica_s_a-porter_czarny_boss_black_boss_porter,0,0,244378173441,"{""name"":""Porter Czarny Boss / Black BOSS Porter"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boss_browar_witnica_s_a"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,52,1
+egan_brewing-eganator_doppelbock,0,0,244606697474,"{""name"":""Eganator Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,1,1
+hapa_s_brew_haus_and_restaurant,0,0,244752646145,"{""name"":""Hapa*s Brew Haus and Restaurant"",""city"":""Kihei"",""state"":""Hawaii"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":20.7592,""lon"":-156.457}}",1,46,1
+the_bruery-trade_winds_tripel,0,0,245110013952,"{""name"":""Trade Winds Tripel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Summer seasonal, Trade Winds Tripel is a Belgian-style Golden Ale with a Southeast Asian twist. Instead of using candi sugar (typical for such a beer), we use rice in the mash to lighten the body and increase the gravity, and spice with Thai Basil. The result is an aromatic, digestible and complex beer made for a lazy summer evening."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,27,1
+founders_hill_brewing,0,0,244623736833,"{""name"":""Founders Hill Brewing"",""city"":""Downers Grove"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.8089,""lon"":-88.0112}}",1,40,1
+rogue_ales-hoppy_frog,0,0,244988968961,"{""name"":""Hoppy Frog"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A Northwest Style IPA. Nice Balance of Malt and Hops, not too extreme in either direction. 2 Ingredients: Maris Otter Malt, Amarillo Hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,20,1
+blackstone_restaurant_brewery,0,0,244360085504,"{""name"":""Blackstone Restaurant & Brewery"",""city"":""Nashville"",""state"":""Tennessee"",""code"":""37203"",""country"":""United States"",""phone"":""1-615-327-9969"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1918 West End Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.152,""lon"":-86.7989}}",1,8,1
+brewery_corsendonk-abbey_brown_ale_pater,0,0,244476411904,"{""name"":""Abbey Brown Ale / Pater"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_corsendonk"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+cheshire_cat_brewery-pilsner,0,0,244474904577,"{""name"":""Pilsner"",""abv"":4.85,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cheshire_cat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+erie_brewing_company-ol_red_cease_and_desist,0,0,244627210242,"{""name"":""Ol' Red Cease and Desist"",""abv"":10.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Erie Brewing presents the Beer formally known as Red Ryder BIG BEER - A beer dubiously awarded two cease and desist letters for its name. Ol’ Red Cease and Desist brings more to the table than just a big malty flavor and climaxing warming sensation…a legal record! This beer so recognized and loved by many deserves a unique name to match its unique history. What better name than Ol’ Red Cease and Desist – a name inspired by the long arm of the law!"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,48,1
+cugino_brewing_company-light,0,0,244474314752,"{""name"":""Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cugino_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+bayerische_staatsbrauerei_weihenstephan-hefeweissbier_dunkel,0,0,244379418625,"{""name"":""Hefeweissbier Dunkel"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayerische_staatsbrauerei_weihenstephan"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+athenian_brewery,0,0,244373127169,"{""name"":""Athenian Brewery"",""city"":""Athens"",""state"":"""",""code"":""0"",""country"":""Greece"",""phone"":""30-210-5384911"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""102 Kifissou Avenue""]}",1,39,1
+brennerei_distillerie_radermacher-rader_blonde,0,0,244475428864,"{""name"":""Rader Blonde"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brennerei_distillerie_radermacher"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+niagara_falls_brewing-maple_wheat,0,0,244866547714,"{""name"":""Maple Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+cervezas_alhambra-negra,0,0,244476215298,"{""name"":""Negra"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervezas_alhambra"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,6,1
+fratellos_restaurant_and_brewery-caber_tossing_scottish_ale,0,0,244624719872,"{""name"":""Caber Tossing Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+alaskan_brewing-alaskan_ipa,0,0,244362444800,"{""name"":""Alaskan IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""India Pale Ales are characterized by intense hop flavor and aroma accompanied by higher alcohol content. This style possesses medium maltiness and body while also being crisp and dry. Citrus flavors and aromas are moderate to very strong.\r\n\r\nAlaskan IPA is honey gold in color with a fruity, citrus aroma. An enticing blend of hops and our dry hopping process, in which hops are added directly to tanks during fermentation, give this brew a very intense, complex aromatic character with a refreshing hop finish.\r\n\r\nAlaskan IPA is made from glacier-fed water and a generous blend of the finest quality European and Pacific Northwest hop varieties and premium two-row and specialty malts. Our water originates in the 1,500-square-mile Juneau Ice Field and from more than 90 inches of rainfall each year."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+diamond_knot_brewery_alehouse-e_s_b,0,0,244623998976,"{""name"":""E.S.B."",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+little_apple_brewing-bovine_belgian_winter_ale,0,0,244875919360,"{""name"":""Bovine Belgian Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_apple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+aass_brewery-gull_classic,0,0,244372733952,"{""name"":""Gull Classic"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aass_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Aass Classic\"" is a classical \""lager\"" The beer is slightly darker in color than our Genuine Pilsner. It is of course produced in accordance with the \""Purity law\"". \r\n\r\nThe malted barely is produced in the Scadinavian countries. It is a combination of pilsner-, bayer- and caramelmalt. We use the famous Sazer and Hallertau hops, and the water is as pure as the Norwegian nature. \r\n\r\nThe Classic is largered at cool temperatures, and it is allowed to mature for approximately 3 months before bottling. \r\n\r\nThe beer is sold in caracteristic nice looking green bottel containing 11.2 fl. oz or 330 ml."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+troegs_brewing-java_head_stout,0,0,245109161987,"{""name"":""Java Head Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""We teamed up with St. Thomas Roasters of Linglestown, PA to create a special blend of espresso beans. They added Kenyan beans to the mix because of a strong citrus flavor that compliments the hops. Creating an environment akin a French press, the beans are combined with whole flower hops in the hopback, and the hot wort passes through the vessel on the way to fermentation giving Java Head a lush coffee espresso nose and hints of coffee flavor. There is a silky quality to the mouthfeel and a citrus aromas from the combination of Kenyan beans and whole flower hops."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,25,1
+oakham_ales-jeffrey_hudson_bitter,0,0,244866154496,"{""name"":""Jeffrey Hudson Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oakham_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+moosejaw_pizza_dells_brewing_company-weissbier,0,0,244867006464,"{""name"":""Weissbier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,23,1
+brouwerij_sterkens-st_paul_double,0,0,244477329409,"{""name"":""St. Paul Double"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+titletown_brewing-roundhouse_rye,0,0,245109555201,"{""name"":""Roundhouse Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,26,1
+amherst_brewing_company-half_in_the_bagpipe,0,0,244370505729,"{""name"":""Half in the Bagpipe"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Amber in color, full-bodied strong ale with a prominent malt flavor delicately balanced with Goldings hops. Made with a hint of molasses, this beer is usually on tap for Super Bowl with a keg or two of the previous year's batch."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,33,1
+founders_brewing-founders_imperial_stout,0,0,244625375234,"{""name"":""Founders Imperial Stout"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A fine companion to end a meal or relax in front of the hearth with, this robust ale will cellar well for years. Brewed with ten varieties of malted barley this stout is extremely smooth, complex and rich in body. We recommend serving at cellar temperature. Sit back and enjoy its richness and complexity, your about to drink the ultimate winter warmer."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,44,1
+hale_s_ales_3-drawbridge_blonde,0,0,244751335424,"{""name"":""Drawbridge Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+big_river_brewing-blonde_ale,0,0,244368015362,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+buzzards_bay_brewing_inc-olde_buzzard_lager,0,0,244475953154,"{""name"":""Olde Buzzard Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""buzzards_bay_brewing_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Lager (Dortmund-style) is brewed with pale, Munich and Vienna malts and is moderately hopped with Hallertauer hops. Dortmund is an industrial, steel-making town and its lagers are hearty, easy drinking brewskies. The hops balance the malt but not overtly so. A great brew for the end of a hard day at work. Winner of the Gold Medal for Best European Style Pilsner at the 2000 Great American Beer Festival , Gold Medal at the 5th and 6th Great International Beer Festival, Silver Medals at the 7th Great International Beer Festival and 9th Great International Beer Festival, and Bronze Medal at the 8th Great International Beer Festival and 11th Great International Beer Festival!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+dragonmead_microbrewery-imperial_stout,0,0,244607352832,"{""name"":""Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,3,1
+boston_beer_company-longshot_black_lager,0,0,244378173442,"{""name"":""Longshot Black Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+empyrean_brewing_company-espresso_porter,0,0,244606763008,"{""name"":""Espresso Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+hertog_jan,0,0,244752646146,"{""name"":""Hertog Jan"",""city"":""Arcen"",""state"":"""",""code"":""5944 EN Arcen"",""country"":""Netherlands"",""phone"":"""",""website"":""http://www.hertogjan.nl/site/"",""type"":""brewery"",""updated"":""2011-06-15 04:59:30"",""description"":"""",""address"":[""Kruisweg 44""]}",1,46,1
+the_cambridge_house-copper_hill_kolsch,0,0,245110013953,"{""name"":""Copper Hill Kolsch"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_cambridge_house"",""updated"":""2010-07-22 20:00:20"",""description"":""German Style Light Ale. Smooth, easy drinking with subtle noble hop character.""}",1,27,1
+four_peaks_brewing-abbey_normal_ale,0,0,244623736834,"{""name"":""Abbey Normal Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian Double Abbey."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,40,1
+rothaus_brauerei-export,0,0,244989034496,"{""name"":""Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rothaus_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+boston_beer_company-samuel_adams_black_lager,0,0,244360085505,"{""name"":""Samuel Adams Black Lager"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""When one sees a beer with a darker complexion these days, more often than not it"",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,8,1
+brewery_de_troch-chapeau_framboise_lambic,0,0,244476411905,"{""name"":""Chapeau Framboise Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_de_troch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,7,1
+columbia_bay_brewery_restaurant_and_pub,0,0,244474904578,"{""name"":""Columbia Bay Brewery Restaurant and Pub"",""city"":""Lake Villa"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.417,""lon"":-88.074}}",1,2,1
+f_x_matt_brewing-saranac_black_diamond_bock,0,0,244627275776,"{""name"":""Saranac Black Diamond Bock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Black Diamond Bock is a rich, malty brew, made with traditional German malts and hops and fermented with a lager yeast. Aged for months for a rich but smooth malty taste. A nice reward for enduring your winter months."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,48,1
+dockside_brewing-pelican_bay_brown,0,0,244605976576,"{""name"":""Pelican Bay Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dockside_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,0,1
+bayerische_staatsbrauerei_weihenstephan-original_lager,0,0,244379418626,"{""name"":""Original Lager"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayerische_staatsbrauerei_weihenstephan"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+bamberger_mahr_s_bru-christmas_bock,0,0,244373127170,"{""name"":""Christmas Bock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,39,1
+brewdog_ltd,0,0,244475428865,"{""name"":""BrewDog Ltd"",""city"":""Fraserburgh"",""state"":"""",""code"":"""",""country"":""United Kingdom"",""phone"":""+44 1346 519 009"",""website"":""http://brewdog.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""AB43 8UE""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":57.683,""lon"":-2.003}}",1,4,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_bitter,0,0,244866547715,"{""name"":""Nøgne Ø Bitter"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""A light session ale, with an assertive hop aroma of E K Golding.  Great beer to pair with lots of different food - a good allround."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,22,1
+clipper_city_brewing_co-small_craft_warning,0,0,244476280832,"{""name"":""Small Craft Warning"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""We call this beer an Über Pils - a pilsner style bock lager. Rich, malty, and well rounded but with a firm structure of noble hops. Surprisingly pale in color for such a powerful, complex beer. Available year round beginning Feb. 05'.\r\n\r\nSilver Medal- World Beer Championship 2007"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,6,1
+friesisches_brauhaus_zu_jever,0,0,244624719873,"{""name"":""Friesisches Brauhaus zu Jever"",""city"":""Jever"",""state"":""Niedersachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)4461-/-13-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Elisabethufer 18""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":53.5755,""lon"":7.9016}}",1,42,1
+america_s_brewing,0,0,244362510336,"{""name"":""America's Brewing"",""city"":""Aurora"",""state"":""Illinois"",""code"":""60505"",""country"":""United States"",""phone"":""1-630-264-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""205 North Broadway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.7605,""lon"":-88.309}}",1,15,1
+dick_s_brewing-lava_rock_porter,0,0,244623998977,"{""name"":""Lava Rock Porter"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,41,1
+magnolia_pub_and_brewery-golden_bitter,0,0,244875919361,"{""name"":""Golden Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magnolia_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+allagash_brewing-tripel_reserve,0,0,244372733953,"{""name"":""Tripel Reserve"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+upstream_brewing_company_at_legacy-dundee_export_90_scotch_ale,0,0,245109227520,"{""name"":""Dundee Export 90 Scotch Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+ohio_brewing-alt_ernative_amber,0,0,244866154497,"{""name"":""Alt-ernative Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ohio_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,21,1
+niagara_falls_brewing-gritstone_premium_ale,0,0,244867006465,"{""name"":""Gritstone Premium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,23,1
+brouwerij_the_musketiers,0,0,244477329410,"{""name"":""Brouwerij The Musketiers"",""city"":""Ursel"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)-9-226-42-76"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Tramstraat 8""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1287,""lon"":3.4785}}",1,9,1
+tommyknocker_brewery_and_pub-butthead_doppelbock,0,0,245109620736,"{""name"":""Butthead Doppelbock"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""High Gravity Butt Head Doppelbock Lager is brewed with a generous amount of roasted malts producing caramel sweetness and rich mouthfeel. Why Butt Head? Try one. You'll enjoy \""big brew\"" flavor with the intensity of a \""head butting\"" Bighorn Ram!"",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,26,1
+anderson_valley_brewing,0,0,244370505730,"{""name"":""Anderson Valley Brewing"",""city"":""Boonville"",""state"":""California"",""code"":""95415"",""country"":""United States"",""phone"":""1-800-207-2337"",""website"":""http://avbc.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""17700 Boonville Rd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.0014,""lon"":-123.356}}",1,33,1
+fox_river_brewing_1,0,0,244625440768,"{""name"":""Fox River Brewing #1"",""city"":""Oshkosh"",""state"":""Wisconsin"",""code"":""54901"",""country"":""United States"",""phone"":""1-920-232-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1501 Arboretum Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.0342,""lon"":-88.5608}}",1,44,1
+hapa_s_brew_haus_and_restaurant-stealth_dark_ale,0,0,244751400960,"{""name"":""Stealth Dark Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+birrificio_torrechiara-panil_barriquee,0,0,244368080896,"{""name"":""Panil Barriquée"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birrificio_torrechiara"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+buzzards_bay_brewing_inc,0,0,244476018688,"{""name"":""Buzzards Bay Brewing Inc."",""city"":""Westport"",""state"":""Massachusetts"",""code"":""2790"",""country"":""United States"",""phone"":""(508) 636-2288"",""website"":""http://www.buzzardsbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""98 Horseneck Rd""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.5713,""lon"":-71.0571}}",1,5,1
+eel_river_brewing-certified_organic_amber_ale,0,0,244607418368,"{""name"":""Certified Organic Amber Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eel_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Eel River Brewing Company, brewers of California's first Certified Organic Ale, proudly brings you our Organic Amber Ale. Unique in flavor and purity, this medium bodied beer has a hoppy bouquet and a distinctive rich taste with a caramel-like sweetness that is balanced with a liberal dose of certified organic Pacific Gems and Hallertau hops, imported from New Zealand. Pure taste, pure ingredients, pure good."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,3,1
+boston_beer_company-samuel_adams_cranberry_lambic,0,0,244378173443,"{""name"":""Samuel Adams Cranberry Lambic"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Samuel Adams Cranberry Lambic is a fruit beer that draws its flavor not just from the cranberries it is brewed with, but also from the unique fermentation character imparted by the rare wild yeast strain. The result is a flavor rich in fruitiness and reminiscent of cranberries and bananas, cloves and nutmeg. The yeast fermentation also will create a slight sourness on the sides of the palate, a signature of the original Lambic style which, with the subtle cereal note from the wheat malt, remind its drinker that, as fruity a beer as this is, it is still a beer."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,52,1
+faultline_brewing_2-burton_pale_ale,0,0,244606763009,"{""name"":""Burton Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+hoepfner_privatbrauerei-porter,0,0,244752646147,"{""name"":""Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoepfner_privatbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,46,1
+trap_rock_restaurant_and_brewery-blackforest_lager,0,0,245110013954,"{""name"":""Blackforest Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trap_rock_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,27,1
+four_peaks_brewing-arizona_peach,0,0,244623802368,"{""name"":""Arizona Peach"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The dominating character of this beer is of course peach flavor and aroma. It is a little more subtle than most fruit beers which makes it more approachable. Light in body and color. \r\n\r\nAlcohol content of approximately 4.0% by volume (ALWAYS ON TAP!!)"",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,40,1
+rothaus_brauerei-helles,0,0,244989034497,"{""name"":""Helles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rothaus_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+bottom_s_up_brewing-strom_bomb_stout,0,0,244360085506,"{""name"":""Strom Bomb Stout"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bottom_s_up_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,8,1
+brouwerij_huyghe-duinen_tripel,0,0,244476477440,"{""name"":""Duinen Tripel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_huyghe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+cooperstown_brewing_company,0,0,244474904579,"{""name"":""Cooperstown Brewing Company"",""city"":""Milford"",""state"":""New York"",""code"":""13807"",""country"":""United States"",""phone"":""607-286-9330"",""website"":""http://www.cooperstownbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""River Street, P.O. Box 276""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":42.5893,""lon"":-74.9403}}",1,2,1
+far_west_ireland_brewing-wild_banshee_barleywine,0,0,244627275777,"{""name"":""Wild Banshee Barleywine"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""far_west_ireland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+dogfish_head_craft_brewery-theobroma,0,0,244606042112,"{""name"":""Theobroma"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is based on chemical analysis of pottery fragments found in Honduras which revealed the earliest known alcoholic chocolate drink used by early civilizations to toast special occasions.  The discovery of this beverage pushed back the earliest use of cocoa for human consumption more than 500 years to 1200 BC.  As per the analysis, Dogfish Head’s Theobroma (translated into 'food of the gods') is brewed with Aztec cocoa powder and cocoa nibs, honey, chilies, and annatto (fragrant tree seeds).""}",1,0,1
+bear_republic_brewery-hop_rod_rye,0,0,244379418627,"{""name"":""Hop Rod Rye"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Essentially a strong American IPA made with 20% rye malt. Darker in color, Hop Rod Rye boasts a huge hop aroma and flavor accompanied by a slightly sweet, malty finish."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,56,1
+bandana_brewery,0,0,244373192704,"{""name"":""Bandana Brewery"",""city"":""Mankato"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.1636,""lon"":-93.9994}}",1,39,1
+brewery_budweiser_budvar-budweiser_budvar_czechvar,0,0,244475428866,"{""name"":""Budweiser Budvar (Czechvar)"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_budweiser_budvar"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Czech Premium Lager is beer for light beer lovers. The most gentle heads of the high quality Žatec hop, virgin clear natural water and granules of selected species of Moravian barley make it the beverage of real experts. \r\n\r\nThe 700-year long tradition in production of České Budějovice beer and the unique, 90-day period of maturity increase its unique character. You can taste Budweiser Budvar Czech Premium Lager with all your senses. First of all you will delight your eyes with its beautiful colour and rich dense foam, then you will feel the fine aroma of the hops, in your palm you will stroke the dewy glass and, in the end, you will taste the fine to medium strong bitterness. You will remember well, our perfect lager."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,4,1
+northwoods_brewpub_grill-irish_red,0,0,244866613248,"{""name"":""Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+denmark_brewing,0,0,244608598016,"{""name"":""Denmark Brewing"",""city"":""Denmark"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.3478,""lon"":-87.8273}}",1,6,1
+golden_pacific_brewing-hibernator_winter_ale,0,0,244624785408,"{""name"":""Hibernator Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+amherst_brewing_company-workingman_s_wheat,0,0,244362510337,"{""name"":""Workingman's Wheat"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Light crisp American style wheat with a medium hop finish. Made using 25% German wheat malt. Brewed and on tap each summer."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,15,1
+dortmunder_actien_brauerei_dab-original,0,0,244623998978,"{""name"":""Original"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dortmunder_actien_brauerei_dab"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+maritime_pacific_brewing-islander_pale_ale,0,0,244875919362,"{""name"":""Islander Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,47,1
+anheuser_busch-michelob_hefeweizen,0,0,244372733954,"{""name"":""Michelob Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+ushers_of_trowbridge-ipa,0,0,245109293056,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ushers_of_trowbridge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,25,1
+oso-dank,0,0,244866220032,"{""name"":""Dank"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oso"",""updated"":""2011-03-16 09:06:54"",""description"":""Anniversary offering, Imperial Red. Heavily hopped and oak aged, very balanced. 12 oz. bottles; 4 pack. ABV: 9.2%"",""style"":""Imperial or Double Red Ale"",""category"":""North American Ale""}",1,21,1
+nikenjayamochi_kadoya_honten_co,0,0,244867072000,"{""name"":""Nikenjayamochi Kadoya Honten Co."",""city"":"""",""state"":"""",""code"":"""",""country"":""Japan"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,23,1
+brouwerij_van_honsebrouck-st_louis_gueuze,0,0,244477329411,"{""name"":""St. Louis Gueuze"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_honsebrouck"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,9,1
+trailhead_brewing_company-riverboat_raspberry_flavored_beer,0,0,245109686272,"{""name"":""Riverboat Raspberry flavored Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trailhead_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,26,1
+anheuser_busch-michelob_amber_bock,0,0,244370571264,"{""name"":""Michelob Amber Bock"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Michelob AmerBock is American-style bock beer with a rich, malty and smooth taste that is hearty and full-bodied, yet finishes cleanly. Anheuser-Busch introduced this premium-plus beer nationally in 1995."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+full_sail_brewing_1-india_pale_ale,0,0,244625440769,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+heineken_switzerland,0,0,244751400961,"{""name"":""Heineken Switzerland"",""city"":""Winterthur"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-052-/-264-41-41"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Haldenstrasse 69""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5077,""lon"":8.7302}}",1,43,1
+blue_point_brewing-spring_fling,0,0,244368080897,"{""name"":""Spring Fling"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+catamount_brewing-porter,0,0,244476018689,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""catamount_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,5,1
+federation_brewery-angel_ale,0,0,244607418369,"{""name"":""Angel Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""federation_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,3,1
+boston_beer_company-samuel_adams_imperial_stout,0,0,244378238976,"{""name"":""Samuel Adams Imperial Stout"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Samuel Adams Imperial Stout is our take on the stouts brewed by 18th century English brewers for the Russian Imperial Court of Catherine II. The special malted barley in this intense and massive brew delivers rich flavours like dark chocolate, coffee and anise."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,52,1
+faultline_brewing_2-golden,0,0,244606763010,"{""name"":""Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+iron_hill_brewery_wilmingon-ironbound_ale,0,0,244752711680,"{""name"":""Ironbound Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""Hold onto your beer mugs, because this medium-bodied beer has been overwhelmed with hop additions. Brewed as an American pale ale, it's a celebration of American hop varieties: Cascade, Crystal, Centennial and Chinook. You won't be disappointed."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+uerige_obergrige_hausbrauerei-doppelsticke,0,0,245110079488,"{""name"":""DoppelSticke"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""uerige_obergrige_hausbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,27,1
+four_peaks_brewing-barrel_aged_blind_date_ale,0,0,244623802369,"{""name"":""Barrel-Aged Blind Date Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This is the old tried and true Blind Date Ale of old. It is based on an English Olde Ale but has an addition of 300 pounds of Arizona grown Medjool dates. The dates contribute a complexity and sweetness that the malt alone cannot. This Blind Date has been aged for three months in Jim Beam oak bourbon barrels. The oak and bourbon lend flavors of vanilla, wood, and of course, bourbon. These flavors layered with the dates created a big, multi-leveled ale. The alcohol content is about 7.5% alc/vol. You'll have to get to Four Peaks quick since we only have a few kegs of this unique beer."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,40,1
+roy_pitz_brewing_company-truly_honest_ale,0,0,244989100032,"{""name"":""Truly Honest Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roy_pitz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our signature brew that started it all. This beer is made with four different specialty malts including two foreign caramel malts, a pale malt, and a toasted malt. These malts impart a subtle toasted/sweet taste. This malty brew is than graced with floral and aroma hops which balance the maltiness of this brew and leaves behind a smooth finish on the palate. Top notch ingredients and a truly \""Honest\"" taste makes this a seriously drinkable ale, unlike many other bitter American ales."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,20,1
+brasserie_de_l_abbaye_des_rocs-triple_imperiale,0,0,244360151040,"{""name"":""Triple Impériale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+brouwerij_sterkens-st_paul_blond,0,0,244476477441,"{""name"":""St. Paul Blond"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+aktienbrauerei_kaufbeuren-st_martin_doppelbock,0,0,244361986048,"{""name"":""St. Martin Doppelbock"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aktienbrauerei_kaufbeuren"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,14,1
+coronado_brewing_company,0,0,244474970112,"{""name"":""Coronado Brewing Company"",""city"":""Coronado"",""state"":""California"",""code"":""92118"",""country"":""United States"",""phone"":""1-619-437-4452"",""website"":""http://www.coronadobrewingcompany.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Coronado Brewing Company, in beautiful Coronado (located just a few minutes from downtown San Diego) welcomes you to come and enjoy quality handcrafted beers and delicious food in a casual family environment. Join us for a refreshing pint while we make you one of our signature pizzas or calzones in the wood fired oven, or choose from a wide selection of fresh seafood, steaks, pastas and dining specials. The Coronado Brewing Company is perfect for a quick lunch, a relaxing beverage or a wonderful dinner. If you're a sports fan come relax with a cold beer and an appetizer while watching your favorite team on one of our many HD TV's. Open 7 days a week from 11:00 am (until closing) & offering a weekly happy hour (M-F) from (2-5pm)."",""address"":[""170 Orange Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":32.6976,""lon"":-117.173}}",1,2,1
+firehouse_grill_brewery-bitter,0,0,244627275778,"{""name"":""Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+dragonmead_microbrewery-crooked_door,0,0,244606107648,"{""name"":""Crooked Door"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The American hop Cascade is used to give this brew its classic American Aroma. Pale and Crystal malt from the U.S. are used to give this beer a medium body and high hop flavor. This beer goes down easily and opens the door to a world of microbrewed beers."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,0,1
+big_sky_brewing-summer_honey_seasonal_ale,0,0,244379484160,"{""name"":""Summer Honey Seasonal Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Summer Honey is a full-flavored summer seasonal ale. Brewed with a unique, balanced blend of spices, Northwest Hops, and Montana honey. Summer Honey is brewed during the early days of spring and released around the first of May each year. Light colored, light bodied, and very drinkable, Summer Honey sacrifices nothing to create a flavorful beer that can be enjoyed during the height of the Summer. Available April through September"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+barfer_das_kleine_brauhaus-schwarze,0,0,244373192705,"{""name"":""Schwarze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barfer_das_kleine_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,39,1
+brick_brewing,0,0,244475494400,"{""name"":""Brick Brewing"",""city"":""Formosa"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-519-367-2995"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 Old Brewery Lane""]}",1,4,1
+o_gara_s_bar_grill-amber_bock,0,0,244866613249,"{""name"":""Amber Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_gara_s_bar_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,22,1
+diamond_bear_brewing_co-irish_red,0,0,244608663552,"{""name"":""Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_bear_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+green_bay_brewing-luna_stout,0,0,244751007744,"{""name"":""Luna Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+anchor_brewing,0,0,244362575872,"{""name"":""Anchor Brewing"",""city"":""San Francisco"",""state"":""California"",""code"":""94107"",""country"":""United States"",""phone"":""1-415-863-8350"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1705 Mariposa Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.7635,""lon"":-122.401}}",1,15,1
+drake_s_brewing-sir_francis_stout,0,0,244624064512,"{""name"":""Sir Francis Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""drake_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+maritime_pacific_brewing-nightwatch_dark_ale,0,0,244875984896,"{""name"":""Nightwatch Dark Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,47,1
+atlantic_brewing_company,0,0,244372799488,"{""name"":""Atlantic Brewing Company"",""city"":""Bar Harbor"",""state"":""Maine"",""code"":""4609"",""country"":""United States"",""phone"":""207-288-BEER"",""website"":""http://www.atlanticbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Atlantic Brewing Company began brewing in 1991, on the eve of the microbrewing revolution. We have steadily grown over the years by having a strong commitment to tradition, quality and service. As a result, we have become the number one beer of the Bar Harbor region.  In the spirit of old world tradition, our beers are sold and distributed by small independents (not national brands). Our beers are now available in select areas throughout the eastern US. We only brew 60 kegs per day, which allows us to still maintain our commitment to craftsmanship. The result is that our beers enjoy great respect in the beer community. Visit our Tasting Room for more information about our standard ales.  Our new facility was built on the site of an old farm a few miles from downtown Bar Harbor. It was designed to create a more visitor friendly environment similar to country wineries and breweries found throughout Europe."",""address"":[""15 Knox Rd.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.3996,""lon"":-68.334}}",1,38,1
+vivungs_bryggeri-romakloster,0,0,245747286016,"{""name"":""Romakloster"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vivungs_bryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,25,1
+oso,0,0,244866220033,"{""name"":""Oso"",""city"":""Plover"",""state"":""WI"",""code"":""54467"",""country"":""United States"",""phone"":""715-254-2163"",""website"":""http://www.osobrewing.com/Home.php"",""type"":""brewery"",""updated"":""2011-03-16 09:05:15"",""description"":"""",""address"":[""1812 Post Road""]}",1,21,1
+oasis_brewery_and_restaurant,0,0,244867072001,"{""name"":""Oasis Brewery and Restaurant"",""city"":""Boulder"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.015,""lon"":-105.271}}",1,23,1
+brown_street_brewery-amber,0,0,244477394944,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brown_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+troegs_brewing-scratch_13_2008,0,0,245109686273,"{""name"":""Scratch #13 2008"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,26,1
+arcadia_brewing-nut_brown,0,0,244370571265,"{""name"":""Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,33,1
+full_sail_brewing_1-pale_ale,0,0,244625571840,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+hereford_hops_steakhouse_and_brewpub_3,0,0,244751466496,"{""name"":""Hereford & Hops Steakhouse and Brewpub #3"",""city"":""Wausau"",""state"":""Wisconsin"",""code"":""54401"",""country"":""United States"",""phone"":""1-715-849-3700"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2201 Sherman Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.9518,""lon"":-89.6657}}",1,43,1
+boston_beer_company-samuel_adams_double_bock,0,0,244368080898,"{""name"":""Samuel Adams Double Bock"",""abv"":8.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Intense and warming, a meal in a bottle.\r\nOne can not help but appreciate Samuel Adams® Double Bock's huge malt character. We use an enormous amount of malt, half a pound per bottle, to brew this intensely rich lager. Its deep brown-ruby color is all made in the kettle - no black malt is used, resulting in a rich sweetness that is free of the rough taste of burnt malt. All that remains is the velvet smooth flavor and mouthfeel of the two row malt. Samuel Adams® Double Bock's intense malt character is balanced with a subtle piney, citrus hop note from the German Noble hops.\r\n\r\nDue to legal restrictions, Samuel Adams® Double Bock can not be sold in the states of Alabama, Arizona, Georgia, Iowa, Louisiana, Missouri, North Carolina, Ohio, South Carolina, Tennessee, and West Virginia."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,28,1
+cold_spring_brewing-stite_golden_pilsner,0,0,244476018690,"{""name"":""Stite Golden Pilsner"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cold_spring_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+federation_brewery-northumbrian_brown_ale,0,0,244607418370,"{""name"":""Northumbrian Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""federation_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,3,1
+boston_beer_works-hercules_stong_ale,0,0,244378238977,"{""name"":""Hercules Stong Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+faultline_brewing_2-india_pale_ale,0,0,244606828544,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+iron_hill_brewery_wilmingon-light_lager,0,0,244752711681,"{""name"":""Light Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+unibroue-11,0,0,245110079489,"{""name"":""11"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+fuller_smith_turner_pbc-london_pride,0,0,244623867904,"{""name"":""London Pride"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+ruppaner_brauerei-kristall_weizen,0,0,244989100033,"{""name"":""Kristall Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+brasserie_de_silly-double_enghien_blonde_ale,0,0,244360151041,"{""name"":""Double Enghien Blonde Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silly"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+browar_zywiec,0,0,244476477442,"{""name"":""Browar Zywiec"",""city"":""Zywiec"",""state"":"""",""code"":""34-300"",""country"":""Poland"",""phone"":""48-0-33-614-614"",""website"":""http://www.zywiec.com.pl/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""ul. Browarna 88""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.6622,""lon"":19.1742}}",1,7,1
+allagash_brewing-allagash_white,0,0,244362051584,"{""name"":""Allagash White"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our interpretation of a traditional Belgian wheat beer, Allagash White is unique and truly refreshing. Brewed with a generous portion of wheat and our own special blend of spices, this beer is light and slightly cloudy in appearance, with a spicy aroma. Overall, it is a beer that is very drinkable and smooth any time of the year.\r\n\r\n\r\n\r\nAvailable in: 12 oz and 750 ml bottles, 15.5 and 5.17 gal kegs\r\nABV: 5.0%\r\nOriginal Gravity: 1048\r\nRecommended Serving Temp: 34°F to 50°F"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,14,1
+dempsey_s_restaurant_brewery-red_rooster,0,0,244606959616,"{""name"":""Red Rooster"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dempsey_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+fitzpatrick_s_brewing-celtic_stout,0,0,244627341312,"{""name"":""Celtic Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitzpatrick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+drake_s_brewing-jolly_roger,0,0,244606107649,"{""name"":""Jolly Roger"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""drake_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+binding_brauerei_ag-lager,0,0,244379484161,"{""name"":""Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""binding_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+barley_brothers_brewery_and_grill-beachballs_red_ale,0,0,244373192706,"{""name"":""Beachballs Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_brothers_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+brouwerij_het_anker-gouden_carolus_hopsinjoor,0,0,244475494401,"{""name"":""Gouden Carolus Hopsinjoor"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_het_anker"",""updated"":""2010-07-22 20:00:20"",""description"":""Gouden Carolus Hopsinjoor completes the taste pallet of the gamma Carolus-beers.  \r\n\r\n\""Hopsinjoor\"" is a wordplay to for one thing the several hops which were used, and on the other hand the typical character of Mechelen of Gouden Carolus: the figure \""opsinjoor\"" is intertwined with the history of Mechelen.  \r\n\r\n4 types of hops are used: Golding, Spalt, Hallertau and Saaz. These hops were fractioned at several times in the cooking process in order to keep a maximum of aroma.\r\n\r\nRegarding to taste we can say that the beer has a gentle, but nevertheless bitter aftertaste. Gold-yellow colour. Hoppy aroma."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,4,1
+old_dominion_brewing_co-oak_barrel_stout,0,0,244866613250,"{""name"":""Oak Barrel Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_dominion_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Dominion Oak Barrel Stout raises the bar for American stouts. We use smoked and peated malts to create an intricate malt foundation.  Willamette and Cascade hops balance the malt character and our method of dry hopping with vanilla beans and oak chips pushes the depth of our stout's flavor spectrum even further."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,22,1
+diamond_bear_brewing_co,0,0,244608663553,"{""name"":""Diamond Bear Brewing Co."",""city"":""Little Rock"",""state"":""Arkansas"",""code"":""72201"",""country"":""United States"",""phone"":""1-501-708-2739"",""website"":""http://www.diamondbear.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""323-C Cross Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.7473,""lon"":-92.2839}}",1,6,1
+harbor_city_brewing-mile_rock_amber_ale,0,0,244751073280,"{""name"":""Mile Rock Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harbor_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,42,1
+anheuser_busch-michelob_golden_pilsner,0,0,244362575873,"{""name"":""Michelob Golden Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,15,1
+duck_rabbit_craft_brewery-duck_rabbit_amber_ale,0,0,244624064513,"{""name"":""Duck-Rabbit Amber Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duck_rabbit_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Duck-Rabbit Amber Ale is a medium bodied beer with a lovely tawny copper or bronze color. This brew emphasizes malt complexity with layered caramel malt flavors. We put a lot of effort into getting this amber ale just right and we're extremely proud of the result!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,41,1
+mckenzie_brew_house-5_czars_imperial_stout,0,0,244875984897,"{""name"":""5 Czars Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,47,1
+atwater_block_brewing-wheat,0,0,244372799489,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+wainwright_brewing,0,0,245747286017,"{""name"":""Wainwright Brewing"",""city"":""Pittsburgh"",""state"":""Pennsylvania"",""code"":"""",""country"":""United States"",""phone"":""1-412-692-1144"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3410 Sassafras Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.4616,""lon"":-79.9653}}",1,25,1
+pint_s_pub_brewery_and_freehouse-gael_force_scottish_export,0,0,244989296640,"{""name"":""Gael Force Scottish Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pint_s_pub_brewery_and_freehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+paulaner-hell,0,0,244990148608,"{""name"":""Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+bull_bush_pub_brewery-yuel_fuel,0,0,244477394945,"{""name"":""Yuel Fuel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+troegs_brewing-scratch_18_2009,0,0,245109686274,"{""name"":""Scratch #18 2009"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""We started with the same grain bill as Scratch #12 (IPA) and substituted 25% rye for the base malt giving Scratch #18 a creamy mouth feel and a full-bodied taste.\r\n\r\nMount Hood and Chinook hops are combined here for flavoring and aroma, and Warrior hops are used for overall bitterness.\r\n\r\nThe rye plays off the Mount Hood hops, with both ingredients releasing an herbal, spicy flavor. Cheers."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,26,1
+asahi_breweries-edomae,0,0,244370571266,"{""name"":""Edomae"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""asahi_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+goose_island_beer_company_clybourn-bourbon_county_brand_coffee_stout,0,0,244625571841,"{""name"":""Bourbon County Brand Coffee Stout"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""Everyday Goose Island smells the wonderful coffee roasting next to our brewery at Chicago's Intelligentsia Coffee and Tea. They put the same passion and skill into their coffee as Goose Island does with its beer. This excellent stout is made with Black Cat Espresso beans from our friends next door. You'll like the combination."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,44,1
+high_falls_brewing-dundee_porter,0,0,244751466497,"{""name"":""Dundee Porter"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""More and more we’re becoming a nation of milquetoasts. And nowhere is that more evident than in our beer—puny liquids without calories, carbs, or cojones. \r\n\r\nBut it needn’t be that way, my friend! Sure, we don’t want to make a living shoveling coal or washing clothes on a rock. But we can recapture the more robust spirit of a time gone by.\r\n\r\nDundee Porter is a throwback to a different era—when times were tough and so were the people. They drank big beers, slapped each other on the back, and toasted the good life—even though they only saw it from a distance. \r\n\r\nWith Dundee Porter, you can get a taste of it.\r\n\r\nBig and malty flavor from aromatic dark-roasted grains balanced by a subtle hint of hops. Deep color and rich caramel flavor."",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+boston_beer_company-samuel_adams_pale_ale,0,0,244368146432,"{""name"":""Samuel Adams Pale Ale"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Samuel Adams® Pale Ale is a delicious, lighter bodied beer with a delightfully fresh taste. Its unique blend of two row malts add a rich harmony of sweet flavors that are complimented by the traditional earthy hop character imparted by authentic British hops. The fermentation character of the ale yeast adds a rich bouquet of fruit and ester notes that add another layer of complexity to this popular style"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+courthouse_pub-munich_helles,0,0,244476018691,"{""name"":""Munich Helles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""courthouse_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+flying_bison_brewing-aviator_red,0,0,244607418371,"{""name"":""Aviator Red"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Buffalo’s favorite red ale. Ruby red and malty flavored with a medium body and a spicy hop signature to balance. Available in bottles and on draft"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,3,1
+brasserie_de_l_abbaye_des_rocs-blonde,0,0,244378238978,"{""name"":""Blonde"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+flagstaff_brewing-blackbird_porter,0,0,244606828545,"{""name"":""Blackbird Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flagstaff_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+alesmith_brewing-grand_cru_2006,0,0,244360871936,"{""name"":""Grand Cru 2006"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+iron_hill_brewery_wilmingon-vienna_red_lager,0,0,244752777216,"{""name"":""Vienna Red Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""This amber Austrian lager has a distinct bready malt aroma and flavor, followed by a crisp, clean finish typical of lager styles. The nose also shows plenty of the spicy hop aroma contributed by the use of Saaz hops."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+upstream_brewing_old_market-railyard_ale,0,0,245110079490,"{""name"":""Railyard Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,27,1
+golden_pacific_brewing-pale_ale,0,0,244623867905,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+russian_river_brewing-pliny_the_younger,0,0,244989165568,"{""name"":""Pliny the Younger"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pliny the Younger was Pliny the Elder's nephew, in the case of this beer, the \""Younger\"" is a triple IPA. Pliny the Younger is hopped three times more than our standard IPA, and is dry hopped four different times."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,20,1
+brauerei_c_a_veltins_gmbh_co,0,0,244476739584,"{""name"":""Brauerei C. & A. Veltins GmbH & Co."",""city"":""Meschede"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)2934-/-959-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""An der Streue""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.3055,""lon"":8.1259}}",1,8,1
+bull_bush_pub_brewery-tower_esb,0,0,244476542976,"{""name"":""Tower ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+america_s_brewing-payton_pilsner,0,0,244362051585,"{""name"":""Payton Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+dick_s_brewing-grand_cru,0,0,244606959617,"{""name"":""Grand Cru"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+flying_dog_brewery-snake_dog_ipa,0,0,244627341313,"{""name"":""Snake Dog IPA"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""More cunning than a snake in the bush... Snake Dog India Pale Ale is a Colorado-style IPA, power hopped with specialty hops from the Pacific Northwest. This is the brewery's hop monster, and the citrus fruit aroma will hypnotize the senses of the most hardcore of craft drinkers."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+egan_brewing-cow_palace_scotch_ale_2001,0,0,244606173184,"{""name"":""Cow Palace Scotch Ale 2001"",""abv"":11.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,0,1
+brasserie_brouwerij_cantillon-iris,0,0,244379484162,"{""name"":""Iris"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,56,1
+bell_s_brewery_inc-porter,0,0,244373192707,"{""name"":""Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust porter for all occasions. A blend of dark malts give this beer flavors of coffee and chocolate with subtle roasted notes.Gold medal winner in the Brown Porter category Brewers Association World Beer Cup 2008."",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+bulldog_brewing,0,0,244475494402,"{""name"":""Bulldog Brewing"",""city"":""Fresno"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.7477,""lon"":-119.772}}",1,4,1
+pete_s_brewing-wicked_winter_brew,0,0,244989689856,"{""name"":""Wicked Winter Brew"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,22,1
+diamond_knot_brewery_alehouse,0,0,244608729088,"{""name"":""Diamond Knot Brewery & Alehouse"",""city"":""Mukilteo"",""state"":""Washington"",""code"":""98275"",""country"":""United States"",""phone"":""1-425-355-4488"",""website"":""http://www.diamondknot.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""621 Front Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.9485,""lon"":-122.305}}",1,6,1
+harvest_moon_brewery_cafe-british_nut_brown,0,0,244751073281,"{""name"":""British Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvest_moon_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,42,1
+anheuser_busch-pacific_ridge_pale_ale,0,0,244362575874,"{""name"":""Pacific Ridge Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+elysian_brewing_tangletown-ak_47_malt_liquor,0,0,244624130048,"{""name"":""AK-47 Malt Liquor"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewing_tangletown"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+midnight_sun_brewing_co-descent_imperial_abbey_ale,0,0,244875984898,"{""name"":""Descent Imperial Abbey Ale"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Beer Description:\r\nThis deep amber Imperial Abbey Ale melds malt and earth, spice and fruit to create a wonderful vehicle to wind down the day. Belgian yeast contributes flavor notes that accent the raisins and grains of paradise used in the brewing process. With strength and stamina, DESCENT is deliberately impetuous in its mission."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,47,1
+bad_frog_brewery_company-amber_lager,0,0,244372799490,"{""name"":""Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bad_frog_brewery_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+yegua_creek_brewing_dallas-oktoberfest,0,0,245747351552,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yegua_creek_brewing_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,25,1
+pint_s_pub_brewery_and_freehouse,0,0,244989362176,"{""name"":""Pint's Pub Brewery and Freehouse"",""city"":""Denver"",""state"":""Colorado"",""code"":""80204"",""country"":""United States"",""phone"":""1-303-534-7543"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""211 West 13th Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.7369,""lon"":-104.991}}",1,21,1
+pelican_pub_brewery-india_pelican_ale,0,0,244990214144,"{""name"":""India Pelican Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pelican_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+carlsberg_sverige_ab-carnegie_stark_porter,0,0,244477394946,"{""name"":""Carnegie Stark-Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlsberg_sverige_ab"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,9,1
+two_brothers_brewing-prairie_path_golden_ale,0,0,245109686275,"{""name"":""Prairie Path Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+barfer_das_kleine_brauhaus-rotgold_pils,0,0,244370571267,"{""name"":""Rotgold-Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barfer_das_kleine_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+goose_island_beer_company_clybourn-geordie_brown_ale,0,0,244625637376,"{""name"":""Geordie Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,44,1
+hoffbrau_steaks_brewery_2-scottish_ale,0,0,244751532032,"{""name"":""Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+boston_beer_works,0,0,244368146433,"{""name"":""Boston Beer Works"",""city"":""Boston"",""state"":""Massachusetts"",""code"":""2215"",""country"":""United States"",""phone"":""1-617-536-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""61 Brookline Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.347,""lon"":-71.0989}}",1,28,1
+de_proef_brouwerij-flemish_primitive_wild_ale_pin_head,0,0,244608008192,"{""name"":""Flemish Primitive Wild Ale (Pin Head)"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+four_peaks_brewing-blind_date_ale,0,0,244607483904,"{""name"":""Blind Date Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""One of a kind ale. Brewed with 600 pounds of Arizona grown Medjool Dates added to the kettle. 1998 Gold Medal GABF. Alcohol content varies as every brew is slightly different. Usually very strong with sherry or port-like flavors. Brewed quarterly. Alcohol content approximately 7-9% by volume.""}",1,3,1
+brauerei_aying_franz_inselkammer_kg,0,0,244496203776,"{""name"":""Brauerei Aying Franz Inselkammer KG"",""city"":""Aying"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8095-/-9065-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Zornedinger Strae 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.9706,""lon"":11.7808}}",1,52,1
+flat_branch_pub_brewing-blackberry_ale,0,0,244606828546,"{""name"":""Blackberry Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flat_branch_pub_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A great summer fruit beer, with 168 pounds of blackberry puree added to a light ale base. The blackberries add a distinct purple haze, and hopping is light to allow the berries to be the featured flavor. The ABV is 5.2% and hop bitterness is 22 BU's."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+alpirsbacher_klosterbru,0,0,244360937472,"{""name"":""Alpirsbacher Klosterbru"",""city"":""Alpirsbach"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7444-/-67-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Marktplatz 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.3457,""lon"":8.4031}}",1,11,1
+isle_of_skye_brewing_company,0,0,244752777217,"{""name"":""Isle of Skye Brewing Company"",""city"":""Isle of Skye"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01470)-542477"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""The Pier""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":56.4907,""lon"":-4.2026}}",1,46,1
+victory_brewing-storm_king_imperial_stout,0,0,245747482624,"{""name"":""Storm King Imperial Stout"",""abv"":9.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""With a huge, Pacific Northwest hop aroma & character upfront, Storm King subsides into massive, roast malt complexity. More flavor than mere words can adequately describe. Rich and substantial, it will warm your heart."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,27,1
+golden_pacific_brewing,0,0,244623867906,"{""name"":""Golden Pacific Brewing"",""city"":""Berkeley"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.8716,""lon"":-122.273}}",1,40,1
+second_street_brewery,0,0,244989165569,"{""name"":""Second Street Brewery"",""city"":""Santa Fe"",""state"":""New Mexico"",""code"":""87505"",""country"":""United States"",""phone"":""1-505-982-3030"",""website"":""http://www.secondstreetbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1814 Second Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":35.6631,""lon"":-105.966}}",1,20,1
+brauereigasthof_adler-spezial,0,0,244476739585,"{""name"":""Spezial"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauereigasthof_adler"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+burton_bridge_brewery-burton_porter,0,0,244476542977,"{""name"":""Burton Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burton_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,7,1
+andrew_s_brewing,0,0,244362117120,"{""name"":""Andrew's Brewing"",""city"":""Lincolnville"",""state"":""Maine"",""code"":""4849"",""country"":""United States"",""phone"":""(207) 763-3305"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Andy Hazen is a workhorse of a brewer. From start to finish, he is a one-man operation. The former cabinetmaker is also a self-reliant Mainer through and through. He was originally an all-grain homebrewer who decided to take it to the next level when his friends expressed interest in his beers. He designed the 12-barrel brewing system himself and enlisted a local welder to help put it together. Hazen notes that when you live in Maine, you have to find some service to provide to others in order to survive. For him, brewing is the service he provides to his local community. Located in the rolling hills of Lincolnville, Maine, Andrew's is housed in a renovated farmhouse next to Hazen's home. Finding the brewery is more than half the battle. Have no fear, however, as everyone knows about Andrew's. Also, be aware that due to some thieving souls, the brewery no longer has any signage to announce its existence to the visiting public. The only indication that a brewery exists in the farmhouse are the occasional keg deliveries in Hazen's front yard. And Hazen hasn't been quick to replace the sign either. While he welcomes visitors, you have to remember to clear a path for the busy brewer. Like many other unsung small brewers, running his 5OO-barrel per year brewery is a seven day a week operation for Hazen. Watching Hazen run the brewery is a little like watching Willy Wonka run the Chocolate Factory. When I visit him during a bottling day, Hazen runs between the bottling line and the packaging supplies in a hurried yet methodical manner. He stands up bottles on the line, starts the machine, slides his way across the brewhouse to the packaging materials, and hand assembles the six-packs that will hold the soon-to-be bottled beer. Andrew's beer is straightforward, unassuming and entirely enjoyable. His product line includes the St. Nick Porter, the Northern Brown Ale, the English Pale Ale, and the summer seasonal Ruby's Golden Ale. A celebration of the Amarillo hop, Hazen's English Pale Ale is a delightfully balanced product that neither over or underwhelms the palate.  from beerscribe.com"",""address"":[],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.3516,""lon"":-69.1401}}",1,14,1
+dockside_brewing-cartwright_pale_ale,0,0,244607025152,"{""name"":""Cartwright Pale Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dockside_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+founders_brewing-founders_red_s_rye,0,0,244627341314,"{""name"":""Founders Red's Rye"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pours a spectacular crimson red with a creamy tan head. Brewed with four varieties of Belgian caramel malts imparting a sweet richness. Red's Rye is impressively balanced with its hop bitterness and huge citrus bouquet achieved from the immense amarillo dry hop. The generous amount of malted rye used accentuates a spicy crisp finish."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,48,1
+el_toro_brewing_company,0,0,244606173185,"{""name"":""El Toro Brewing Company"",""city"":""Morgan Hill"",""state"":""California"",""code"":""95037"",""country"":""United States"",""phone"":""408-782-2739"",""website"":""http://www.eltorobrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Geno and Cindy Acevedo founded El Toro Brewing Company in the summer of 1992. After much planning, research and construction business was begun in March of 1994. The brewery is a small 17-barrel (527 gallon) batch system and operates on the Acevedo's rural residential property.  Within seven months of opening El Toro Brewing Company received its first national recognition at the 1994 Great American Beer Festival (GABF). One of its flagships El Toro Oro Golden Ale won a coveted Gold Medal for English Pale Ale. At the 1996 GABF Poppy Jasper Amber Ale, the brewery's other flagship beer, won a Silver Medal for English Brown Ale. It is a mild yet robust brown ale. The 1997 GABF saw El Toro garner another Gold Medal for the American styled wheat beer named after the brewer's father-in-law, William Jones Wheat Beer.  After 16 years of planning, Geno and Cindy Acevedo of Morgan Hill finally opened a brewpub on November 25 2006. El Toro Brewpub is a two floored building with patio. Inside is the world's only Poppy Jasper Bar. Featuring over 45 feet of gorgeously inlaid and polished Poppy Jasper rock into its surface. To the back of the large mirrored bar you will find over 25 beers and handcrafted sodas on tap. We also have a gleaming copper Pub Brewing system 3 BBL (100 gallon) brewery. Live music and dancing will also be a regular nighttime happening at the brewpub consisting of mostly local bands playing cover type and original Rock, Blues, Jazz and Reggae."",""address"":[""17605 Monterey Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.1553,""lon"":-121.676}}",1,0,1
+brasserie_d_orval-petite_orval,0,0,244379549696,"{""name"":""Petite Orval"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_orval"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,56,1
+bierbrouwerij_de_koningshoeven-tripel,0,0,244373258240,"{""name"":""Tripel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+caldera_brewing-hopportunity_knocks_ale,0,0,244475559936,"{""name"":""Hopportunity Knocks Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""IPA brewed with 100% Centennial hops. Big round mouthfeel, very perfumey. Different from our canned IPA. Gotta love the Pacific NW!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,4,1
+pinehurst_village_brewery-double_eagle_golden_ale,0,0,244989755392,"{""name"":""Double Eagle Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pinehurst_village_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+dick_s_brewing-pale_ale,0,0,244608729089,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,6,1
+high_falls_brewing-dundee_festive_ale,0,0,244751138816,"{""name"":""Dundee Festive Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""So did you ever ask yourself...what exactly is there to be festive about during the holidays? Your brother in-law snoring on the air mattress? (Boy, let’s hope that’s snoring.) The variety of toys with realistic sound effects? Fruit cake?\r\n\r\nDundee Festive Ale may be one of the few exceptions. One sip of the carefully matched seasonal spices and you realize that the holidays are worth paying...waiting for.\r\n\r\nOh, there may be one other thing to be festive about. There’s a 13 to 1 chance against your brother in-law’s plane leaving on time. But at least there’s a chance.\r\n\r\nFestively hearty and full bodied with a mild nutmeg, allspice, cinnamon, and orange peel spice character and subtle crystal malt flavor."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,42,1
+bandana_brewery-rapidan_brown,0,0,244362575875,"{""name"":""Rapidan Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,15,1
+f_x_matt_brewing-saranac_caramel_porter,0,0,244624195584,"{""name"":""Saranac Caramel Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Caramel Porter is a Robust, flavorful porter Reminiscent of a by-gone era. True to brewing tradition, we've used dark caramel malt, as well as Fuggles and East Kent Goldings hops for smooth, yet slightly bitter, roasted flavor, look for hints of the real caramel used in brewing this delicious beer!"",""style"":""Porter"",""category"":""Irish Ale""}",1,41,1
+miller_brewing-milwaukee_s_best_light,0,0,244876050432,"{""name"":""Milwaukee's Best Light"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Milwaukee's Best Light is Miller Brewing Company's lead low-calorie brand in the near-premium segment. Brewed to uncompromising standards using select pale malt, cereal grains and yeast, this is a smooth, highly drinkable beer at an affordable price. Available nationwide, Miller first rolled out Milwaukee's Best Light in 1986 with an ambition to become the beer choice for guys. Our marketing, including sponsorship with the World Series of Poker and award-winning TV spots, takes a humorous approach to reinforce the idea that \""Men should act like men and light beer should taste like beer.\"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,47,1
+barley_creek_brewing-angler_black_lager,0,0,244372799491,"{""name"":""Angler Black Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark and delightful, this is an easy-drinking brew. Once a seasonal favorite now we brew it all the time as part of our variety case. Brewed with five different malts and three different hops, then pitched with Bavarian lager yeast."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,38,1
+port_washington_brewing-old_port_porter,0,0,244989362177,"{""name"":""Old Port Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_washington_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+port_brewing_company-high_tide_ipa,0,0,244990214145,"{""name"":""High Tide IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""ach and every fall, we experience a coastal experience in San Diego known as the \""Super High Tide.\"" This happens later in the Fall Season when the tidal swings reach a range of about 8 feet in difference between low and high tides. When this happens, there are days when the tide just gets too high and flattens out the surf. The lineups shut down and surfers are left to wait until the High Tide recedes.\r\n\r\nWhile waiting for the tides to shift in your favor, might we suggest a High Tide IPA? Brewed only once each year to coincide with the Hop Harvest in Yakima Washington, High Tide IPA is made with 180 lbs of Fresh Hops per batch that are plucked from the vines and sent straight to our brewery. We skip the whole drying and processing stage which means the hops are ultra fresh and full of flavors we can't normally get. Like grapes, Hops are only harvested one time each year and as such, we make what we can when we get them."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+charlie_and_jake_s_brewery_and_bbq-anniversary_ale,0,0,244477394947,"{""name"":""Anniversary Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""charlie_and_jake_s_brewery_and_bbq"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+upstream_brewing_old_market-firehouse_esb,0,0,245109751808,"{""name"":""Firehouse ESB"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""A Silver Medal winner at the 2005 Great \r\nAmerican Beer Festival in the Bitter category, our \r\nExtra Special Bitter (ESB) is a medium-bodied ale \r\nhighly hopped and loaded with flavor."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,26,1
+baron_brewing_company-baron_schwarzbier,0,0,244370636800,"{""name"":""Baron Schwarzbier"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""baron_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Baron Schwarzbier is a classic German black lager, deep black with ruby and brown highlights. At first the Schwarzbier starts with a slight roasty nose and taste, followed by a faint chocolate-malty body with a very crisp, clean, lagered finish. Lagered for an average of 10-12 weeks to provide a very smooth, easy drinking Schwarzbier with full flavor provided by the dark malts. \r\n\r\nAll ingredients for the beer are imported from Germany. Brewed in accordance to the German Beer Purity Law (Reinheitsgebot) of 1516."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,33,1
+gordash_brewing_company-holy_mackerel_special_golden_ale,0,0,244625637377,"{""name"":""Holy Mackerel Special Golden Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordash_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,44,1
+illinois_brewing-amber_plus,0,0,244751532033,"{""name"":""Amber Plus"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""illinois_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+brasserie_brouwerij_cantillon-rose_de_gambrinus,0,0,244368211968,"{""name"":""Rosé de Gambrinus"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,28,1
+de_proef_brouwerij-flemish_primitive_wild_ale_spoon_whacker,0,0,244608073728,"{""name"":""Flemish Primitive Wild Ale (Spoon Whacker)"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+four_peaks_brewing-oatmeal_stout,0,0,244607483905,"{""name"":""Oatmeal Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Oatmeal Stout is definitely a local favorite but it gets its origins from one of London's oldest breweries. The Oatmeal Stout differs from the popular Irish stout in its more subtle roastiness and subdued dryness. The addition of flaked oats rounds out these sometimes harsh characteristics producing a velvet smooth ale. This black stout has a flavor profile unique to all of North America. Subtlety is not a strong point as it is a stout after all, rich and eminently drinkable. \r\n\r\nAlcohol content of approximately 5.0% by volume (ALWAYS ON TAP!!)"",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,3,1
+brauerei_c_a_veltins_gmbh_co-pilsner,0,0,244496269312,"{""name"":""Pilsner"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_c_a_veltins_gmbh_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+21st_amendment_brewery_cafe-double_trouble_ipa,0,0,244360413184,"{""name"":""Double Trouble IPA"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep, golden, rich malt flavor huge citrus, fruity grassy, ethanol sweetness aroma with a profound bitterness, yet balanced malt back bone with grapefruit, mellow citric overtones. Dry hopped three times in the fermenter. Brewed with over 65 lbs of hops for 300 gallons of beer. The beer to bring world peace and end the war. Bronze Medal - 2006 Imperial IPA Festival at the Bistro in Hayward, California."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,10,1
+fratellos_restaurant_and_brewery-winnebago_wheat,0,0,244606894080,"{""name"":""Winnebago Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,1,1
+anchor_brewing-old_foghorn_2001,0,0,244360937473,"{""name"":""Old Foghorn 2001"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+jaipur_restaurant_and_brewpub,0,0,244752777218,"{""name"":""Jaipur Restaurant and Brewpub"",""city"":""Omaha"",""state"":""Nebraska"",""code"":""68144"",""country"":""United States"",""phone"":""1-402-392-7331"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10922 Elm Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2328,""lon"":-96.0825}}",1,46,1
+water_street_brewery-bavarian_weiss_beer,0,0,245747482625,"{""name"":""Bavarian Weiss Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,27,1
+goose_island_beer_company_clybourn-maduro,0,0,244623933440,"{""name"":""Maduro"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,40,1
+skagit_river_brewing-skibbereen_stout,0,0,244989231104,"{""name"":""Skibbereen Stout"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,20,1
+breckenridge_bbq_of_omaha-mountain_wheat,0,0,244476805120,"{""name"":""Mountain Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_bbq_of_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+burton_bridge_brewery-empire_india_pale_ale,0,0,244476542978,"{""name"":""Empire India Pale Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burton_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,7,1
+ball_und_brauhaus_watzke,0,0,244362117121,"{""name"":""Ball- und Brauhaus Watzke"",""city"":""Dresden"",""state"":""Sachsen"",""code"":""1139"",""country"":""Germany"",""phone"":"""",""website"":""http://www.watzke.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kötzschenbroder Str. 1""]}",1,14,1
+eastern_shore_brewing-ameri_hefe,0,0,244607025153,"{""name"":""Ameri-Hefe"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eastern_shore_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,2,1
+glacial_lakes_brewing-red,0,0,244627406848,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glacial_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+empyrean_brewing_company-collapsar_oatmeal_stout,0,0,244606238720,"{""name"":""Collapsar Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,0,1
+brasserie_de_l_abbaye_des_rocs-blanche_des_honnelles,0,0,244379549697,"{""name"":""Blanche des Honnelles"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+big_ridge_brewing-light_lager,0,0,244373258241,"{""name"":""Light Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+captain_lawrence_brewing_company-golden_delicious,0,0,244475559937,"{""name"":""Golden Delicious"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""There’s nothing quite likes Mom’s apple pie…But I am willing to bet this beer is pretty darn close.  An American Tripel, dry-hoped with Amarillo hops and aged in Apple Brandy barrels from one of this country’s oldest distilleries.  The tropical aroma of the hops and the delicate apple aroma from the barrels are a perfect match.  Straight from the Captain’s cellar to yours, we hope you enjoy."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,4,1
+pumphouse_brewery_restaurant,0,0,244989820928,"{""name"":""Pumphouse Brewery & Restaurant"",""city"":""Longmont"",""state"":""Colorado"",""code"":""80501"",""country"":""United States"",""phone"":""1-303-702-0881"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""540 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.1688,""lon"":-105.102}}",1,22,1
+dockside_brewing-marina_light_lager,0,0,244608729090,"{""name"":""Marina Light Lager"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dockside_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+hoppy_brewing_company-stony_face_red_ale,0,0,244751138817,"{""name"":""Stony Face Red Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppy_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoppy’s gift to those who like their beers Malty. Dark Caramel and Chocolate Malts lend their deep crimson silkiness, and judicious additions of Nugget and Cascade hops give just enough bitterness for balance. Ask your server’s favorite beer and it’s probably this one."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,42,1
+barley_brothers_brewery_and_grill-bighorn_ipa,0,0,244362641408,"{""name"":""Bighorn IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_brothers_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+fish_brewing_company_fish_tail_brewpub-organic_india_pale_ale,0,0,244624195585,"{""name"":""Organic India Pale Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""Fish Tale Organic India Pale Ale is a medium-bodied beer with a rich golden color. The organic pale and crystal malts lay down a firm malt body. This provides the backbone for an assertive hop profile featuring organic Pacific Gem. The moment the Mighty Fish Brewers sampled this pungent and resinous New Zealand hop, they knew it would be perfect for their Organic I.P.A. The result: A Cascadian treasure."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,41,1
+milly_s_tavern-weathertop_doppelbock,0,0,244876050433,"{""name"":""Weathertop Doppelbock"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milly_s_tavern"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,47,1
+barley_island_brewing-hazelnut_brown,0,0,244372799492,"{""name"":""Hazelnut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_island_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+portland_brewing,0,0,244989427712,"{""name"":""Portland Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":""97210"",""country"":""United States"",""phone"":""1-503-226-7623"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2730 NW 31st Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.5415,""lon"":-122.713}}",1,21,1
+prairie_rock_brewing_elgin-prairie_light,0,0,244990214146,"{""name"":""Prairie Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prairie_rock_brewing_elgin"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+cheshire_cat_brewery,0,0,244477460480,"{""name"":""Cheshire Cat Brewery"",""city"":""Arvada"",""state"":""Colorado"",""code"":""80002"",""country"":""United States"",""phone"":""1-303-431-9000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7803 Ralston Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.8023,""lon"":-105.084}}",1,9,1
+walnut_brewery,0,0,245747351552,"{""name"":""Walnut Brewery"",""city"":""Boulder"",""state"":""Colorado"",""code"":""80302"",""country"":""United States"",""phone"":""(303) 447-1345"",""website"":""http://www.walnutbrewery.com/"",""type"":""brewery"",""updated"":""2011-03-01 13:26:24"",""description"":"""",""address"":[""1123 Walnut Street""]}",1,26,1
+baron_brewing_company,0,0,244370636801,"{""name"":""Baron Brewing Company"",""city"":""Seattle"",""state"":""Washington"",""code"":""98108"",""country"":""United States"",""phone"":""206.764.1213"",""website"":""http://www.baronbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Mike Baker and Jeff Smiley founded Baron Brewing in the beginning of 2003. A brewery has been in the works for sometime. Lots of discussions on what if we had a brewery were had, over lots of good German beer. The opportunity came for us to travel to Germany to really get involved with the German brewing process and ideology - as well as sample the best beer on earth. After that trip, the direction of the brewery was set. German beer had to be re-discovered by the population. After many discussions on opening a brewery and a trip to Germany, the dream became reality. We found an existing brewery to purchase - Lunar Brewing. After purchasing Lunar and getting approved for all the necessary licensing, Baron is ready to go. On June 14th, the world of Seattle will have the chance to finally taste and purchase Baron Beer. The first style of many to be released is our flagship beer - Munich Lager.That is all for the history. We are growing on a daily basis and plan to be around for quite some time."",""address"":[""1605 S 93rd Building E Unit L""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.5203,""lon"":-122.312}}",1,33,1
+granite_city_food_brewery_saint_cloud,0,0,244751663104,"{""name"":""Granite City Food & Brewery - Saint Cloud"",""city"":""Saint Cloud"",""state"":""Minnesota"",""code"":""56301"",""country"":""United States"",""phone"":""1-320-203-9000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3945 Second Street South""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.5498,""lon"":-94.2067}}",1,44,1
+iron_hill_brewery_wilmingon-kryptonite_imperial_ipa,0,0,244751597568,"{""name"":""Kryptonite Imperial IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""American style double IPA, full bodied malt flavor supports a ridiculous amount of hops, giving it pronounced bitterness and overwhelming hop flavor and aroma. Made with 5 pounds of hops per barrel."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,43,1
+brasserie_dupont-biere_de_miel,0,0,244368211969,"{""name"":""Bière de Miel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dupont"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+delafield_brewhaus,0,0,244608139264,"{""name"":""Delafield Brewhaus"",""city"":""Delafield"",""state"":""Wisconsin"",""code"":""53018"",""country"":""United States"",""phone"":""1-262-646-7821"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3832 Hillside Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0481,""lon"":-88.3553}}",1,5,1
+golden_valley_brewery_and_pub-chehalem_mountain_ipa,0,0,244607483906,"{""name"":""Chehalem Mountain IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_valley_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+brauerei_im_fchschen-alt,0,0,244496334848,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_im_fchschen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,52,1
+512_brewing_company-one,0,0,244360413185,"{""name"":""One"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""512_brewing_company"",""updated"":""2010-07-29 14:11:16"",""description"":""Our first anniversary release is a Belgian-style strong ale that is amber in color, with a light to medium body. Subtle malt sweetness is balanced with noticeable hop flavor, light raisin and mildly spicy, cake-like flavors, and is finished with local wildflower honey aromas. Made with 80% Organic Malted Barley, Belgian Specialty grains, Forbidden Fruit yeast, domestic hops and Round Rock local wildflower honey, this beer is deceptively high in alcohol. "",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,10,1
+full_sail_brewing_1-old_boardhead_1999,0,0,244606894081,"{""name"":""Old Boardhead 1999"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+asheville_pizza_and_brewing_co-roland_s_esb,0,0,244361003008,"{""name"":""Roland's ESB"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""asheville_pizza_and_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Cascade hops lend this ale a lively and spirited edge that perfectly complements its effervescent amber maltiness."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,11,1
+keesmann_bru-weissbier,0,0,244752842752,"{""name"":""Weissbier"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keesmann_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,46,1
+william_kuether_brewing,0,0,245747482626,"{""name"":""William Kuether Brewing"",""city"":""Clear Lake"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.2519,""lon"":-92.2713}}",1,27,1
+granville_island_brewing,0,0,244750352384,"{""name"":""Granville Island Brewing"",""city"":""Kelowna"",""state"":""British Columbia"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1125 Richter Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.8945,""lon"":-119.488}}",1,40,1
+slab_city_brewing-shawano_gold,0,0,244989231105,"{""name"":""Shawano Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+breckenridge_brewery-remarkable_vanilla_porter,0,0,244476805121,"{""name"":""Remarkable Vanilla Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Awesome Porter! Smooth, the vanilla makes this beer very drinkable.  Enjoy!!"",""style"":""Porter"",""category"":""Irish Ale""}",1,8,1
+cambridge_brewing-regatta_golden,0,0,244476608512,"{""name"":""Regatta Golden"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cambridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the tradition of the fresh, blond ales of Cologne, Germany, our Golden ale is light in body, crisp and very refreshing. Its soft malt flavor is balanced by delicate, spicy hop flavors and finishes.""}",1,7,1
+baltimore_washington_beer_works,0,0,244362182656,"{""name"":""Baltimore-Washington Beer Works"",""city"":""Baltimore"",""state"":""Maryland"",""code"":""21284"",""country"":""United States"",""phone"":""410.321.1892"",""website"":""http://www.ravenbeer.com/home.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Baltimore-Washington Beer Works, of Baltimore, Maryland is the first to have launched a beer in another country before ever being produced at home. Production first occurred in Germany prior to any in America.  The Raven was originally produced in the Black Forest and still is produced in the Black Forest region of Baden-Württemberg. The small town of Nagold, south of Stuttgart and west of the university town of Tübingen, is where the Anker Brewery can be found.   BWBW was founded by Stephen Demczuk of Baltimore, who was partner in Europe's first beer-of-the-month club, Beer Around the World. He, along with Baltimorean, Jim Seay and German beer importer Mr. Wolfgang Stark, styled a beer that would be appealing to the masses, drinkable and enjoyed by both the lager and ale drinker. From the assistance of master brewer Mr. Hans-Martin Walz of Anker Brewery, came The Raven, a beer brewed in honor of Baltimore's literary genius, Edgar Allan Poe. After more than a year operating in Europe, the world's most competitive beer market, production of The Raven began in Baltimore in June of 1998."",""address"":[""P.O. Box 9829""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.42,""lon"":-76.54}}",1,14,1
+egan_brewing-moll_dubh_irish_ale,0,0,244607025154,"{""name"":""Moll Dubh Irish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,2,1
+gottberg_brew_pub-all_american_lager_discontinued,0,0,244627406849,"{""name"":""All-American Lager (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+engine_house_9-irish_stout,0,0,244606238721,"{""name"":""Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,0,1
+brasserie_dubuisson,0,0,244379549698,"{""name"":""Brasserie Dubuisson"",""city"":""Pipaix"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-069-67-22-21"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Chause de Mons 28""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.5779,""lon"":3.5554}}",1,56,1
+big_river_brewing-nut_brown_ale,0,0,244373258242,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+catawba_valley_brewing_company-firewater_indian_pale_ale,0,0,244475559938,"{""name"":""Firewater Indian Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""catawba_valley_brewing_company"",""updated"":""2011-02-16 12:38:43"",""description"":""This golden straw colored IPA is made with 5 varieties of malts and 6 massive hop additions.  It is outstanding in flavor and aromatics."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,4,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-amber_lager,0,0,244989886464,"{""name"":""Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,22,1
+dragonmead_microbrewery-breath_of_the_dragon_english_bitter,0,0,244608794624,"{""name"":""Breath of the Dragon English Bitter"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This fine English style Best Bitter is made with Imported English Pale Ale, Aromatic and Caramel malts. Galena and Willamette Hops add a moderate bittering level to make this a refreshing example of an English Bitter."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,6,1
+hopworks_urban_brewery-secession_black_india_pale_ale_cda,0,0,244751138818,"{""name"":""Secession Black India Pale Ale (CDA)"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Secession is a Black IPA, or Cacadian Dark Ale.  This emerging beer style is characterized by an alliance of North-west hop flavors as formidable as the Cascade Mountain Range and roasted malts as dark as a moonless night.  Join the party and uncap a revolution!""}",1,42,1
+big_time_brewing-snow_melt_nitrogen_pale,0,0,244362641409,"{""name"":""Snow Melt Nitrogen Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+aldaris-porteris,0,0,244361592832,"{""name"":""Porteris"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aldaris"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,13,1
+flat_branch_pub_brewing,0,0,244624195586,"{""name"":""Flat Branch Pub & Brewing"",""city"":""Columbia"",""state"":""Missouri"",""code"":""65201"",""country"":""United States"",""phone"":""(573) 499-0400"",""website"":""http://www.flatbranch.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""From great seasonal beers like an imperial stout, pumkin ale, or maibock to all-year ales, lagers, and stouts, this micro-brewery has it all!"",""address"":[""115 S. Fifth St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.95,""lon"":-92.3323}}",1,41,1
+mohrenbrauerei_august_huber,0,0,244876115968,"{""name"":""Mohrenbrauerei August Huber"",""city"":""Dornbirn"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0-55-72-/-37-77-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Doktor-Waibel-Strae 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.4123,""lon"":9.7443}}",1,47,1
+bayerische_staatsbrauerei_weihenstephan-kristall_weissbier,0,0,244372865024,"{""name"":""Kristall Weissbier"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bayerische_staatsbrauerei_weihenstephan"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+privatbrauerei_erdinger_weissbru,0,0,244989493248,"{""name"":""Privatbrauerei Erdinger Weissbru"",""city"":""Erding"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8122-/-4090"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Franz-Brombach-Strae 1-20""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.3153,""lon"":11.8911}}",1,21,1
+river_west_brewing-bullfrog_bitter_esb,0,0,244990279680,"{""name"":""Bullfrog Bitter ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+clipper_city_brewing_co-heavy_seas_big_dipa,0,0,244477460481,"{""name"":""Heavy Seas Big DIPA"",""abv"":10.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Big DIPA – Double IPA,  is the first in the Heavy Seas Special Edition Series due to be released in mid June.  Hopped 3 times in the brewing process, Big DIPA has an earthy hop aroma.  In keeping with the Heavy Seas philosophy we've made a big beer with a surprising balance. The best part is that you’ll hardly notice it’s 10.6% ABV (est). The label artwork was created by Kurt Krol, one of our brewers who also helped to develop the recipe."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,9,1
+wisconsin_brewing-rainbow_red_ale,0,0,245747351553,"{""name"":""Rainbow Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wisconsin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,26,1
+bell_s_brewery_inc-third_coast_beer,0,0,244370702336,"{""name"":""Third Coast Beer"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A golden beer brewed with pale malts. Large American hop additions contribute a crisp refreshing bitterness. A tribute to the Great Lakes, T.C.B. is a truly quaffable beer."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,33,1
+hair_of_the_dog_brewing-fred,0,0,244751728640,"{""name"":""Fred"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2002,0,0,244751597569,"{""name"":""Harvest Ale 2002"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,43,1
+brauerei_gasthof_zur_krone-coronator_helle_doppelbock,0,0,244485455872,"{""name"":""Coronator Helle Doppelbock"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gasthof_zur_krone"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,28,1
+desnoes_geddes_ltd-guinness_foreign_extra,0,0,244608139265,"{""name"":""Guinness Foreign Extra"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""desnoes_geddes_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,5,1
+goose_island_beer_company_clybourn-bourbon_county_stout,0,0,244607549440,"{""name"":""Bourbon County Stout"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in honor of the 1000th batch at our original Clybourn brewpub. A liquid as dark and dense as a black hole with thick foam the color of a bourbon barrel. The nose is an intense mix of charred oak, chocolate, vanilla, caramel and smoke. One sip has more flavor than your average case of beer. A great cigar beer."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,3,1
+brauhaus_faust-krausen_naturtrub,0,0,244496334849,"{""name"":""Kräusen Naturtrüb"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_faust"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+aass_brewery-classic_special_brew,0,0,244360478720,"{""name"":""Classic Special Brew"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aass_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+goose_island_beer_company_clybourn-kilgubbin_irish_ale,0,0,244606894082,"{""name"":""Kilgubbin Irish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,1,1
+bbc_brewing_co_llc-cask_hefe,0,0,244361003009,"{""name"":""Cask Hefe"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bbc_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""It is a good clean hefe."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,11,1
+knig_brauerei,0,0,244752842753,"{""name"":""Knig Brauerei"",""city"":""Duisburg"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)203-/-455-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Friedrich-Ebert-Strae 255-263""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.5314,""lon"":6.7418}}",1,46,1
+wolf_pack_brewing-lone_mountain_altbier,0,0,245747613696,"{""name"":""Lone Mountain Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wolf_pack_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,27,1
+great_dane_pub_and_brewing_2-sugar_river_esb,0,0,244750417920,"{""name"":""Sugar River ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+spring_house_brewing_company-seven_gates_pale_ale,0,0,245106868224,"{""name"":""Seven Gates Pale Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The story of the Seven Gates comes from rural Pennsylvania, not far from the Spring House Brewery. According to the legend, a mental asylum for the criminally insane stood in the middle of a dense forest. Surrounding the asylum were seven concentric gates, preventing would-be escapees. One terrifying night, the asylum caught fire, test link causing the inmates to flee into the menacing forest. As the tale goes, the former asylum residents were trapped by the seven gates, and eventually succumbed to the perils of the forest. The locals swear that the tormented souls of the inmates will torture anyone brave enough to attempt passage through the Seven Gates of the forest.\r\n\r\nSpring House Brewing Co. honors the local legend by producing a terrifyingly delicious brew that is as familiar as a friendly forest, yet possesses a mysterious quality that will haunt you from the first taste. The enormous, hopped flavor and the meticulous craftsmanship that goes into each bottle will have you believing that the master brewer must be a direct descendent of the former asylum residents."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,20,1
+brooklyn_brewery-brown_ale,0,0,244476805122,"{""name"":""Brown Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A mix of Northern and Southern English Brown Ales, blending 6 malts into an All-American beer."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,8,1
+castle_springs_brewery-lucknow_india_pale_ale,0,0,244476608513,"{""name"":""Lucknow India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""castle_springs_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+bar_harbor_brewing_company,0,0,244362182657,"{""name"":""Bar Harbor Brewing Company"",""city"":""Bar Harbor"",""state"":""Maine"",""code"":""4609"",""country"":""United States"",""phone"":""(207) 288-4592"",""website"":""http://www.barharborbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""8 Mt. Desert Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.3875,""lon"":-68.2046}}",1,14,1
+elm_city_brewing_co,0,0,244607090688,"{""name"":""Elm City Brewing Co"",""city"":""Keene"",""state"":""New Hampshire"",""code"":""3431"",""country"":""United States"",""phone"":""(603) 355-3335"",""website"":""http://www.elmcitybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""222 West St # 46""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.9324,""lon"":-72.2867}}",1,2,1
+granville_island_brewing_company-island_lager,0,0,244753367040,"{""name"":""Island Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granville_island_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+f_x_matt_brewing-saranac_black_forest,0,0,244606238722,"{""name"":""Saranac Black Forest"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Bavarian black beer with distinctive carmel malt sweetness and rich creamy trademark head. Flavorful, yet smooth; it is very drinkable!"",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,0,1
+brauerei_aying_franz_inselkammer_kg-celebrator,0,0,244497776640,"{""name"":""Celebrator"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_aying_franz_inselkammer_kg"",""updated"":""2010-07-22 20:00:20"",""description"":""Profoundly dark, rich elixir with a complex fruitiness of roasted malt and whole hop flowers. Semi-dry finish."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,56,1
+bj_s_restaurant_and_brewery-brewhouse_blonde,0,0,244373323776,"{""name"":""Brewhouse Blonde"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+cedar_brewing-golden_hawk_wheat_beer,0,0,244475625472,"{""name"":""Golden Hawk Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+redhook_ale_brewery-winterhook_robust_winter_ale_1993,0,0,244989886465,"{""name"":""Winterhook Robust Winter Ale 1993"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+egan_brewing-best_bull,0,0,244608794625,"{""name"":""Best Bull"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+jolly_pumpkin_artisan_ales-biere_de_mars,0,0,244751204352,"{""name"":""Biere de Mars"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A sustaining beer that is brewed to comfort in the gusty ides of March and welcome in a wealth of warmer weather."",""style"":""Old Ale"",""category"":""British Ale""}",1,42,1
+bloomington_brewing_company,0,0,244362641410,"{""name"":""Bloomington Brewing Company"",""city"":""Bloomington"",""state"":""Indiana"",""code"":""47402"",""country"":""United States"",""phone"":""812.323-2112"",""website"":""http://bbc.bloomington.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Established by One World Enterprises in 1989, Lennie's introduced gourmet pizza to Bloomington, and has since become one of the town's most popular and eclectic eateries. Lennie's set another local landmark in 1994, with the addition of the first commercial brewery in Monroe county and the first brewpub in Southern Indiana. Open until Midnight Sunday through Thursday and until 1 a.m. on Friday and Saturday, Lennie's menu topped by award-winning beer from the BBC and an extensive wine offering appeals to those looking for a quick lunch, a relaxing dinner, an enjoyable happy hour, or a few late-night ales."",""address"":[""1795 E 10th St,""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.1716,""lon"":-86.5104}}",1,15,1
+alesmith_brewing-anvil_ale,0,0,244361658368,"{""name"":""Anvil Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+flossmoor_station_brewery-old_420_wheat_wine,0,0,244624261120,"{""name"":""Old 420 Wheat Wine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+moylan_s_brewery_restaurant-moylans_hopsickle_imperial_ale,0,0,244876115969,"{""name"":""Moylans Hopsickle Imperial Ale"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""In celebration of the hop,,,,, This is a \""Hop\"" tribute, worthy of a Kings Imperial Court! Enjoy the blast of fresh Tomahawk, Chinook and Anthanum Hops as they stimulate the taste buds in a truly Imperial Fashion. Pucker up!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,47,1
+bbc_brewing_co_llc-bourbon_barrel_smoked_porter,0,0,244372865025,"{""name"":""Bourbon Barrel Smoked Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bbc_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Think of Guinness but with a \""smooth bite\"" to it. This is a wonder beer for those of us who enjoy a porter."",""style"":""Porter"",""category"":""Irish Ale""}",1,38,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-esb,0,0,244989493249,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+rothaus_brauerei-pilsner,0,0,244990279681,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rothaus_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+cooper_s_cave_ale_company-cooper_s_cave_tavern_ale,0,0,244477526016,"{""name"":""Cooper's Cave Tavern Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooper_s_cave_ale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Tavern Ale is a traditional English Bitter, dry bodied and light in color. This sessions ale utilizes Northdown and Kent Golding Hops. Tavern Ale is the creation of Assistant Brewer Adrian Bethel."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,9,1
+wychwood_brewery-scarecrow_ale,0,0,245747417088,"{""name"":""Scarecrow Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,26,1
+bellows_brew_crew-dunkle,0,0,244370702337,"{""name"":""Dunkle"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+hereford_hops_restaurant_and_brewpub_1-peninsula_porter,0,0,244751794176,"{""name"":""Peninsula Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_restaurant_and_brewpub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+kalamazoo_brewing-great_lakes_amber_ale,0,0,244751597570,"{""name"":""Great Lakes Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kalamazoo_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+brewery_de_troch-chapeau_mirabelle_lambic,0,0,244485521408,"{""name"":""Chapeau Mirabelle Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_de_troch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,28,1
+diamondback_brewery-framboise,0,0,244608204800,"{""name"":""Framboise"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamondback_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,5,1
+goose_island_beer_company_fulton_street-bourbon_county_stout_2007,0,0,244607549441,"{""name"":""Bourbon County Stout 2007"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+brewdog_ltd-hop_rocker,0,0,244496334850,"{""name"":""Hop Rocker"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,52,1
+abita_brewing_company-satsuma_wit,0,0,244360478721,"{""name"":""Satsuma Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:56:18"",""description"":""This Wit beer has a sweet and subtle citrus flavor with a touch of spice that is cool and refreshing."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,10,1
+abbaye_de_leffe-leffe_blonde,0,0,244361134080,"{""name"":""Leffe Blonde"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_de_leffe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,12,1
+granite_city_food_brewery_omaha-northern_light_lager,0,0,244734361600,"{""name"":""Northern Light Lager"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,1,1
+beach_brewing-hornet_tail_ipa,0,0,244361068544,"{""name"":""Hornet Tail IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,11,1
+labatt_ontario_breweries-labatt_bleue_dry,0,0,244752842754,"{""name"":""Labatt Bleue Dry"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Labatt Bleue Dry, the second addition to the Bleue family, is brewed with the same care and attention to detail as Labatt Bleue. Labatt Bleue Dry is mashed longer than regular beers to leave less carbohydrate (sugar) in the finished beer, giving a clean, crisp finish. Using select aromatic hops and a blend of the finest quality North American barley malts, this lager is clean-flavoured with no aftertaste."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,46,1
+wolf_tongue_brewery,0,0,245747613697,"{""name"":""Wolf Tongue Brewery"",""city"":""Nederland"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Closed."",""address"":[""35 E. First St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.9619,""lon"":-105.51}}",1,27,1
+great_divide_brewing-st_bridget_s_porter,0,0,244750417921,"{""name"":""St. Bridget's Porter"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""St. Bridget, a legendary Irish saint, created a sensation by turning her bathwater into beer. What better way to celebrate her worthy miracle than with our zymurgistic tribute to her feat: St. Bridget’s Porter. St. Bridget’s is a smooth and elegant brown porter. Brimming with coffee and chocolate characteristics from dark barley malts, St. Bridget’s is carefully hopped to provide the perfect complement to its malty robustness. This beer is a “must have” beer for all porter lovers.\r\n\r\nPrepare yourself for a religious experience"",""style"":""Porter"",""category"":""Irish Ale""}",1,40,1
+staatliches_hofbrauhaus_in_munchen-maibock,0,0,245106933760,"{""name"":""Maibock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""staatliches_hofbrauhaus_in_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,20,1
+brooklyn_brewery-oktoberfest,0,0,244476805123,"{""name"":""Oktoberfest"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Please enjoy Brooklyn Oktoberfest, a rich, malty version of the beer brewed for the fall festival which originated in Germany with the betrothal of the Crown Prince of Bavaria in 1810. Brooklyn Oktoberfest is in the marzen style, an amber lager beer brewed in March and stored cold through the summer for sale in autumn."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+cervecera_nacional,0,0,244476608514,"{""name"":""Cervecera Nacional"",""city"":""El Dorado"",""state"":"""",""code"":"""",""country"":""Panama"",""phone"":""507-236-1400"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Va Ricardo J. Alfaro y Transistmica""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.4316,""lon"":-78.6569}}",1,7,1
+bayerische_staatsbrauerei_weihenstephan,0,0,244362248192,"{""name"":""Bayerische Staatsbrauerei Weihenstephan"",""city"":""Freising"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8161-/-536-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Alte Akademie 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.3952,""lon"":11.7288}}",1,14,1
+elysian_brewing_tangletown,0,0,244607090689,"{""name"":""Elysian Brewing - TangleTown"",""city"":""Seattle"",""state"":""Washington"",""code"":""98103"",""country"":""United States"",""phone"":""1-206-547-5929"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2106 North 55th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6688,""lon"":-122.334}}",1,2,1
+great_dane_pub_and_brewing_1-old_kentucky_stout,0,0,244753432576,"{""name"":""Old Kentucky Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+f_x_matt_brewing-saranac_black_tan,0,0,244606304256,"{""name"":""Saranac Black & Tan"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A beer lover's dream! This classic irish stout and amber lager blend is malty, yet pleasantly bitter with many complex flavor notes. Look for a deep brown-black color and full-body.""}",1,0,1
+brauerei_fssla-zwergla,0,0,244497842176,"{""name"":""Zwergla"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_fssla"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+bluegrass_brewing_company_inc-altbier,0,0,244373323777,"{""name"":""Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bluegrass_brewing_company_inc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+central_city_brewing_company-iceberg_copper_bock,0,0,244475625473,"{""name"":""Iceberg Copper Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,4,1
+rock_bottom_restaurant_brewery_milwaukee-belgian_trippel,0,0,244989886466,"{""name"":""Belgian Trippel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_milwaukee"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+eldridge_pope_and_co,0,0,244608794626,"{""name"":""Eldridge, Pope and Co."",""city"":""Dorchester"",""state"":""Dorset"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,6,1
+karlovacka_pivovara-crno_pivo,0,0,244751204353,"{""name"":""Crno Pivo"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karlovacka_pivovara"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+boulder_beer_company-mojo_india_pale_ale,0,0,244362641411,"{""name"":""MoJo India Pale Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+anchor_brewing-our_special_ale_1997,0,0,244361723904,"{""name"":""Our Special Ale 1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+flying_dog_brewery-dogtoberfest_octoberfest,0,0,244624261121,"{""name"":""Dogtoberfest Octoberfest"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Dogtoberfest are shrouded in mystery, but scholars think it has everything to do with an insane German king and a crazed Oompah band. You can read the full historical record of Dogtoberfest at FlyingDogAles.com. Dogtoberfest is deep mahogany in color with an intriguing caramel finish and brewed with 100% imported German ingredients for a true German flavor."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,41,1
+mudshark_brewing-dry_heat_hefeweizen,0,0,244876181504,"{""name"":""Dry Heat Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mudshark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""70% Wheat Malt Makes This A Light & Refreshing Ale For A Hot Day!"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,47,1
+beermann_s_beerwerks_brewpub-lincolnshire_mild,0,0,244372865026,"{""name"":""Lincolnshire Mild"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beermann_s_beerwerks_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,38,1
+rahr_sons_brewing_company-rahr_s_red,0,0,244989493250,"{""name"":""Rahr's Red"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Rahr's Red is a delicious, medium-bodied red lager. Notes of caramel with a sound malt character. Not too hoppy, very smooth."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,21,1
+roy_pitz_brewing_company-ludwig_s_revenge,0,0,244990279682,"{""name"":""Ludwig's Revenge"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roy_pitz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This brew was inspired by the historical burning of our hometown of Chambersburg, PA in July 1864. During the burning, the brewery in town, \""Ludwigs Brewery\"" operated by George Ludwig was burned to the ground by Confederate soldiers under Gen. McCausland. In remembrance of this event we created a German style rauchbier, or dark smoked lager. This beer uses all its ingredients from Bamberg, Germany, which is where the style was born and in by coincidence, the same area where Ludwig himself was born and taught to brew. It is made with a special birch wood smoked malt that imparts a light smoky aroma, taste, and dryness to the palate. The pilsner malt and noble German hops are used to balance this dryness making it very enjoyable as well as different. We believe this beer resembles how Ludwig himself might have brewed it over 100 years ago.""}",1,23,1
+crescent_city_brewhouse,0,0,244477526017,"{""name"":""Crescent City Brewhouse"",""city"":""New Orleans"",""state"":""Louisiana"",""code"":""70130"",""country"":""United States"",""phone"":""1-888-819-9330"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""527 Decatur Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":29.9558,""lon"":-90.0641}}",1,9,1
+yuengling_son_brewing-yuengling_black_and_tan,0,0,245747417089,"{""name"":""Yuengling Black and Tan"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Yuengling Original Black & Tan is a pioneer brand that models a traditional English Half & Half. Introduced in 1986, Yuengling produced one of the first hand-crafted draft blends to lead this style of American brewing. Black & Tan combines our popular Dark Brewed Porter and Premium Beer to create a brew that is rich and dark in color, with a well balanced flavor that finishes smooth and satisfying. It has a faint sweetness with hints of caramel and coffee from the dark roasted malts. One sip and you'll appreciate how Yuengling raised the bar with our Original Black & Tan.""}",1,26,1
+birra_forst-sixtus,0,0,244370702338,"{""name"":""Sixtus"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birra_forst"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,33,1
+hoffbrau_steaks_brewery_2-rodeo_red,0,0,244751794177,"{""name"":""Rodeo Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+knigsegger_walderbru,0,0,244751597571,"{""name"":""Knigsegger WalderBru"",""city"":""Knigseggwald"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7587-/-9504-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hauptstrae 6""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.9262,""lon"":9.4204}}",1,43,1
+brewery_ommegang-abbey_dubbel,0,0,244485521409,"{""name"":""Abbey Dubbel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_ommegang"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,28,1
+dinkelacker_schwaben_bru-cd_pils,0,0,244608204801,"{""name"":""CD-Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dinkelacker_schwaben_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,5,1
+gordon_biersch_brewing-gordon_biersch_hefeweizen,0,0,244607549442,"{""name"":""Gordon Biersch Hefeweizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,3,1
+brewdog_ltd-tactical_nuclear_penguin,0,0,244496400384,"{""name"":""Tactical Nuclear Penguin"",""abv"":32.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""This is the worlds strongest ever beer, ever (yes ever).\r\n\r\nNo Penguins  were harmed in the making of this beer; some humans did get very, very cold though. It was worth it.\r\n\r\nThe Antarctic name, inducing schizophrenia, of this Ÿber-imperial stout originates from the amount of time it spent exposed to extreme cold. This beer was initially double barrel aged for 14 months; maturing in the deep, rich oak of Scottish whisky casks. After this epic maturation the beer was then frozen, then frozen again, then frozen again.\r\n\r\nThis is an extremely strong beer, it should be enjoyed in small servings and with an air of aristocratic nonchalance. In exactly the same manner that you would enjoy a fine whisky, a Frank Zappa album or a visit from a friendly yet anxious ghost."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,52,1
+agassiz_brewing-catfish_cream_ale,0,0,244360478722,"{""name"":""Catfish Cream Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""agassiz_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+abita_brewing_company-wheat,0,0,244361199616,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:52:34"",""description"":""Abita Wheat is a lager, not ale, and contains a generous amount of wheat which produces a clean, simple flavor."",""style"":""Vienna-Style Lager"",""category"":""German Lager""}",1,12,1
+green_mountain_beverage,0,0,244734361601,"{""name"":""Green Mountain Beverage"",""city"":""Middlebury"",""state"":""Vermont"",""code"":""5753"",""country"":""United States"",""phone"":""1-802-873-9045"",""website"":""http://www.gmbeverage.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Green Mountain Beverage is nestled in a valley near the historic Green Mountains in Middlebury, Vermont. This is where we operate our Green Mountain Cidery (our own word we created from a derivative of brewery) and we have become the number one producer of premium alcoholic draft ciders in the U.S. Throughout these pristine areas of the Green Mountains, people are committed to preserving nature's beauty and still today carry on the long standing tradition of taking pride in their work and the products they create which are truly special. Here at Green Mountain Beverage, we also carry on these traditions. Our ciders are a unique combination of nature's best ingredients, our skills, commitment and pride in our work."",""address"":[""153 Pond Lane""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.0344,""lon"":-73.1735}}",1,1,1
+blue_corn_caf_and_brewery_albuquerque,0,0,244361068545,"{""name"":""Blue Corn Caf and Brewery - Albuquerque"",""city"":""Albuquerque"",""state"":""New Mexico"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.0845,""lon"":-106.651}}",1,11,1
+labatt_ontario_breweries-labatt_blue,0,0,244752908288,"{""name"":""Labatt Blue"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Labatt Blue is the best-selling Canadian beer in the world. Introduced in 1951 as Labatt Pilsener, it was named for the colour of its label by fans of the Winnipeg Blue Bombers football team. Blue was the first brand in Canada with a twist-off cap and won the silver medal in the International Lager category at the 1998 Brewing Industry International Awards. Labatt Blue, brewed using specially selected aromatic hops, is a well-balanced, fully matured, full-flavoured beer with a fruity character and a slightly sweet aftertaste."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+great_divide_brewing-wild_raspberry_ale,0,0,244750483456,"{""name"":""Wild Raspberry Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""What better way to surprise a beer lover than with a fruit beer that tastes like beer? Nine years ago, we began our quest to provide beer lovers with a worthy fruit beer, by rolling out Wild Raspberry Ale. Our mantra is that real fruit makes real beer, so we ferment Wild Raspberry Ale with hundreds of pounds of real red and black raspberries. We steadfastly refuse to fall prey to extracts and cheap syrups. Sure, squirting syrup into a keg of beer and rolling it around on the floor is easy, but the taste is...  fake! Over the past nine years, we have stayed true to our commitment to real fruit, no matter what the time, expense, or late season frosts have thrown our way. One year, Mother Nature delivered a late cold snap that was so severe, we had to pre-order 85% of the harvestable U.S. black raspberry crop, just to meet the demand for Wild Raspberry Ale.\r\n\r\nOur efforts do not go unrewarded – Wild Raspberry Ale is a truly effervescent, ruby red ale that achieves the almost impossible balance between malted barley and tart raspberry fruitiness. Its naturally tart character makes Wild Raspberry the ultimate accompaniment to spicy Mexican food or on its own as a stand-alone session beer."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,40,1
+taylor_brewing-weisen,0,0,245106999296,"{""name"":""Weisen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,20,1
+brooklyn_brewery-winter_ale,0,0,244476870656,"{""name"":""Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A seasonal winter beer from Brooklyn"",""style"":""Winter Warmer"",""category"":""Other Style""}",1,8,1
+cervejaria_sudbrack,0,0,244476674048,"{""name"":""Cervejaria Sudbrack"",""city"":""Blumenau"",""state"":""Santa Catarina"",""code"":"""",""country"":""Brazil"",""phone"":""55-(47)-3488-7371"",""website"":""http://www.eisenbahn.com.br/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rua Bahia, 5181""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":-26.8914,""lon"":-49.1223}}",1,7,1
+bell_s_brewery_inc-batch_7000,0,0,244362248193,"{""name"":""Batch 7000"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""Batch 7000 is part of our commemorative series celebrating our progress with special brews. Our 7,000th batch is a special recipe to be brewed only once."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,14,1
+empyrean_brewing_company-festive_ale_2006,0,0,244607090690,"{""name"":""Festive Ale 2006"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+great_dane_pub_and_brewing_1-uber_apa,0,0,244753432577,"{""name"":""Uber APA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+faultline_brewing_1-hefe_weizen,0,0,244606304257,"{""name"":""Hefe Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,0,1
+breckenridge_bbq_of_omaha-strong_scotch_ale,0,0,244497842177,"{""name"":""Strong Scotch Ale"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_bbq_of_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,56,1
+boston_beer_company-samuel_adams_boston_lager,0,0,244373389312,"{""name"":""Samuel Adams Boston Lager"",""abv"":4.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Samuel Adams Boston Lager® is the best example of the fundamental characteristics of a great beer, offering a full, rich flavor that is both balanced and complex. It is brewed using a decoction mash, a time consuming, traditional four vessel brewing process discarded by many contemporary brewers. This process brings forth a rich sweetness from the malt that makes it well worth the effort. Samuel Adams Boston Lager® also uses only the finest of ingredients including two row barley, as well as German Noble aroma hops. The exclusive use of two row barley not only imparts a full, smooth body but also gives the beer a wide spectrum of malt flavor ranging from slightly sweet to caramel to slightly roasted. The Noble hops varieties, Hallertau Mittelfruh and Tettnang Tettnanger, add a wide range of floral, piney and citrus notes, which are present from the aroma, through the flavor, to the lingering smooth finish. We take great pride in the Noble hops used in our beers. They are hand selected by Jim Koch and our other brewers from the world's oldest hops growing area. Among the world's most expensive, they cost twenty times as much as other hops."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+city_brewing_company_llc-amber_ale,0,0,244475625474,"{""name"":""Amber Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""city_brewing_company_llc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,4,1
+rockyard_brewing,0,0,244989952000,"{""name"":""Rockyard Brewing"",""city"":""Castle Rock"",""state"":""Colorado"",""code"":""80109"",""country"":""United States"",""phone"":""1-303-814-9273"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""880 West Castleton Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.4091,""lon"":-104.87}}",1,22,1
+elysian_brewery_public_house-elysian_fields_pale_ale,0,0,244608860160,"{""name"":""Elysian Fields Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,6,1
+klosterbru_bamberg-bamberger_schwarzla,0,0,244751204354,"{""name"":""Bamberger Schwärzla"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbru_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,42,1
+brasserie_de_l_abbaye_de_scourmont_trappistes-cinq_cents_white,0,0,244362641412,"{""name"":""Cinq Cents (White)"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_de_scourmont_trappistes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+andechser_klosterbrauerei-hell,0,0,244361723905,"{""name"":""Hell"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""andechser_klosterbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+founder_s_restaurant_brewing,0,0,244624261122,"{""name"":""Founder's Restaurant & Brewing"",""city"":""Alexandria"",""state"":""Virginia"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.8048,""lon"":-77.0469}}",1,41,1
+new_belgium_brewing-ranger_india_pale_ale,0,0,244876181505,"{""name"":""Ranger India Pale Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ever met a New Belgium Beer Ranger? They are our beloved folks out in the field. Spanning all 26 of our states from the Pacific to the Atlantic, our Beer Rangers do their best to protect, to pour and to partake. And explore many a beer from many a brewery, they do. The fellows up in the Northwest kept calling for “more hops!” Soon it became a common theme across the land. Rangers, fans and craft lovers everywhere were searching for hoppier beers. \r\n\r\nSo, here it finally is – New Belgium’s foray into the true American India Pale Ales. Bring out the hops! This clear amber beauty bursts at the starting gate with an abundance of hops: Cascade (citrus), Chinook (floral/citrus), and Simcoe (fruity) lead off the beer, with Cascade added again for an intense dry hop flavor. Brewed with pale and dark caramel malts that harmonize the hop flavor from start to finish, Ranger is a sessionable splendor for all you hopinistas. Thank your Beer Ranger!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+bethlehem_brew_works-cassis_reserve_lambic_06,0,0,244372865027,"{""name"":""Cassis Reserve Lambic ‘06"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bethlehem_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Aged for over a year! This traditional classic Belgisn style lambic is brewed using several varieties of Belgian lambic yeast and a generous amount of black currant concentrate to create a complex tart flavor. This brew is sure to become a Brew Works favorite!"",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,38,1
+reaperale,0,0,244989558784,"{""name"":""ReaperAle"",""city"":""Foothill Ranch"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.6864,""lon"":-117.66}}",1,21,1
+s_a_damm-estrella_damm,0,0,244990345216,"{""name"":""Estrella Damm"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""s_a_damm"",""updated"":""2010-07-22 20:00:20"",""description"":""Estrella means star in Spanish and as its name suggests the brand has become a star to the people of Barcelona. It has evolved with the city reflecting its character - sophisticated and passionate yet at the same time relaxed and welcoming."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,23,1
+cricket_hill-cricket_hill_hopnotic,0,0,244477591552,"{""name"":""Cricket Hill Hopnotic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cricket_hill"",""updated"":""2010-07-22 20:00:20"",""description"":""No mere beverage could satisfy the thirst of the courageous and gallant soldiers who stood guardover the colonies of the British Empire. Their thirst could only be quenched by a full-bodied hearty Ale; an Ale balanced with rich flavorful hops. We are proud to offer our interpretation of this English style India Pale Ale for those who loong for the time when once your duty was complete, the taste of a fine Ale was reward enough for a job well done."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,9,1
+mikeb,0,0,91386755481600,"{""click"":""to edit"",""new in 2.0"":""there are no reserved field names""}",1,26,1
+bison_brewing-organic_belgian_ale,0,0,244370702339,"{""name"":""Organic Belgian Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+hoffbrau_steaks_brewery_2-shawnee_amber_ale,0,0,244751794178,"{""name"":""Shawnee Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,44,1
+krogh_s_restaurant_and_brewpub-log_cabin_nut_brown,0,0,244751663104,"{""name"":""Log Cabin Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,43,1
+brewmasters_restaurant_and_brewery_south-kenosha_gold,0,0,244485586944,"{""name"":""Kenosha Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+dogfish_head_craft_brewery-palo_santo_marron,0,0,244608204802,"{""name"":""Palo Santo Marron"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Palo Santo Marron (Holy Tree Brown)\r\n\r\nAn unfiltered, unfettered, unprecedented brown ale aged in handmade wooden brewing vessels. The caramel and vanilla complexity unique to this beer comes from the exotic Paraguayan Palo Santo wood from which these tanks were crafted. Palo Santo means \""holy tree\"" and it's wood has been used in South American wine-making communities. \r\n\r\nThis beer is a 12% abv, highly roasty, and malty brown ale aged on the Palo Santo wood.  It was a huge hit at our Rehoboth Beach brewpub when first released in November of 2006, so it's coming back... into full production!\r\n\r\n At 10,000 gallons each, these are the largest wooden brewing vessels built in America since before Prohibition.\r\n\r\nClick below to watch \""Take Time,\"" the short film we released with the first full-production batch of Palo Santo Marron in February 2008.\r\n\r\nIt's all very exciting. We have wood. Now you do too."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,5,1
+granite_city_food_brewery_omaha,0,0,244735016960,"{""name"":""Granite City Food & Brewery - Omaha"",""city"":""Omaha"",""state"":""Nebraska"",""code"":""68114"",""country"":""United States"",""phone"":""1-402-393-5000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1001 North 102nd Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2672,""lon"":-96.0714}}",1,3,1
+brewdog_ltd-tokyo,0,0,244496465920,"{""name"":""Tokyo*"",""abv"":18.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,52,1
+alltech_s_lexington_brewing_company-limestone_bavarian_style_bock_discontinued,0,0,244360478723,"{""name"":""Limestone Bavarian Style Bock (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alltech_s_lexington_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,10,1
+alltech_s_lexington_brewing_company-limestone_english_style_porter_discontinued,0,0,244361199617,"{""name"":""Limestone English Style Porter (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alltech_s_lexington_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,12,1
+hop_back_brewery-entire_stout,0,0,244734427136,"{""name"":""Entire Stout"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hop_back_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,1,1
+bootleggers_steakhouse_and_brewery-summer_wheat,0,0,244361068546,"{""name"":""Summer Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bootleggers_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,11,1
+laconner_brewing-extra_special_bitter,0,0,244752908289,"{""name"":""Extra Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""laconner_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+grizzly_peak_brewing-iambic_lambic,0,0,244750483457,"{""name"":""Iambic Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grizzly_peak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,40,1
+the_alchemist-shut_the_hell_up,0,0,245106999297,"{""name"":""Shut The Hell Up"",""abv"":3.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""An American mild ale brewed with Horizon hops. The crisp, bitter finish is helpd up by a balanced malt body."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,20,1
+brouwerij_de_regenboog-vuuve,0,0,244476870657,"{""name"":""Vuuve"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_regenboog"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+climax_brewing_copmany-climax_nut_brown_ale,0,0,244476674049,"{""name"":""Climax Nut Brown Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""This style of beer is based on the English Mild, which was a combination of a stout and a lighter beer favored by coal miners in Scotland, Ireland and North England.\r\nWe've brought together the grains used to make both a Stout and a Pale Ale and balanced them in our Nut Brown Ale to produce a beer with a chocolate and molasses flavor and hints of caramel and coffee in the background."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+bitburger_brauerei-premium_beer,0,0,244362248194,"{""name"":""Premium Beer"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bitburger_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""Bitburger guarantees premium quality and enjoyment. Drawing on almost 200 years of expertise, the full-bodied, light, Bitburger Premium Beer is of course brewed according to the German Purity Law. Its popular, dry-finished, hoppy taste has secured Bitburger Premium Beer position as Germany's no. 1 draught beer.\r\n\r\n-http://www.bitburger.com/bitburger_beers/bitburger_premium_beer/product_bitburger_premium_beer/index.html"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,14,1
+affligem_brouwerij,0,0,244380205056,"{""name"":""Affligem Brouwerij"",""city"":""Opwijk"",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":""052/35 83 57"",""website"":""http://www.affligembeer.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.9699,""lon"":4.1892}}",1,59,1
+flyers_restraunt_and_brewery-spitfire_best_bitter,0,0,244607156224,"{""name"":""Spitfire Best Bitter"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An English style ale, copper in color with subtle English malt hints balanced nicely with fresh Washington grown Yakima Valley hops."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,2,1
+greenshields_brewery_and_pub-nut_brown_ale,0,0,244753498112,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greenshields_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,48,1
+fish_brewing_company_fish_tail_brewpub-leviathan_2004,0,0,244606369792,"{""name"":""Leviathan 2004"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+brewmasters_restaurant_and_brewery_south-southport_amber,0,0,244497907712,"{""name"":""Southport Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,56,1
+boston_beer_company-samuel_adams_cherry_wheat,0,0,244373389313,"{""name"":""Samuel Adams Cherry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Ale brewed with Cherries, crisp and fruity with a hint of honey.  Samuel Adams Cherry Wheat® follows the centuries old American tradition of brewing beer with native ingredients, in this case Michigan cherries as well as a touch of honey. The sweet fruitiness of the cherries is balanced against the crisp, cereal note from the malted wheat and the subtle citrus flavor from the Noble hops. The end result is a sweet, refreshing beer that is light on the palate but long on complexity."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,39,1
+coast_range_brewing-barleywine,0,0,244475691008,"{""name"":""Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_range_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+ross_valley_brewing,0,0,244989952001,"{""name"":""Ross Valley Brewing"",""city"":""Fairfax"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.9871,""lon"":-122.589}}",1,22,1
+emmett_s_tavern_and_brewery-german_pilsner,0,0,244608860161,"{""name"":""German Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""emmett_s_tavern_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+loaf_and_stein_brewing,0,0,244873691136,"{""name"":""Loaf and Stein Brewing"",""city"":""Eagle River"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.9172,""lon"":-89.2443}}",1,42,1
+brauerei_beck-beer,0,0,244479819776,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_beck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+barrel_house_brewing_co-duveneck_s_dortmunder,0,0,244361723906,"{""name"":""Duveneck's Dortmunder"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barrel_house_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Frank Duveneck was a famous Cincinnati painter who produced such masterpieces as Whistling Boy andOld Man In a Fur Cap. Our Dortmunder is a medium- bodied golden lager showcasing a delicious malt profile balanced with Noble German hops. This beer is designed to satisfy even the stodgiest of old beer curmudgeons!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+founders_brewing-curmudgeon,0,0,244624326656,"{""name"":""Curmudgeon"",""abv"":9.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Old Ale conjures up thoughts of classic sea fairing ports, there local pubs and the weathered fisherman that frequent them. In traditional style Curmudgeon is brewed with an intense focus on the malt bill creating a very strong, rich, malty characteristic and a sweetness indicative of its cousin the barleywine. We are especially proud of the balance in this beer making it deceptively smooth and drinkable at 9.3% alcohol by volume."",""style"":""Old Ale"",""category"":""British Ale""}",1,41,1
+nor_wester_brewery_and_public_house-hefe_weizen,0,0,244876181506,"{""name"":""Hefe Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nor_wester_brewery_and_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+big_ridge_brewing-red_truck_ale,0,0,244372930560,"{""name"":""Red Truck Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,38,1
+red_star_brewery_grille-iron_horse_stout,0,0,244989558785,"{""name"":""Iron Horse Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_star_brewery_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+santa_rosa_brewing,0,0,244990345217,"{""name"":""Santa Rosa Brewing"",""city"":""Santa Rosa"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.4405,""lon"":-122.714}}",1,23,1
+dillon_dam_brewery-dam_straight_lager,0,0,244609974272,"{""name"":""Dam Straight Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dillon_dam_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+blacksburg_brewing_company-blacksburger_pils,0,0,244370767872,"{""name"":""Blacksburger Pils"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blacksburg_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,33,1
+hop_back_brewery,0,0,244751859712,"{""name"":""Hop Back Brewery"",""city"":""Salisbury"",""state"":""Wiltshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01725)-510986"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Unit 21-24 Batten Road Industrial Estate""]}",1,44,1
+lake_louie_brewing-premium_ale,0,0,244751663105,"{""name"":""Premium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_louie_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+brewmasters_restaurant_and_brewery_south-weissenheimer_wheat,0,0,244485586945,"{""name"":""Weissenheimer Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,28,1
+dogfish_head_craft_brewery-raison_d_etre,0,0,244608270336,"{""name"":""Raison D'Etre"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A deep, mahogany ale brewed with beet sugar, green raisins, and Belgian-style yeast. As complex as a fine, red wine. Voted \""American Beer of the Year\"" in January 2000 by Malt Advocate Magazine."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,5,1
+great_dane_pub_and_brewing_1-imperial_stout,0,0,244735016961,"{""name"":""Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,3,1
+bridgeport_brewing-old_knucklehead_1997,0,0,244496465921,"{""name"":""Old Knucklehead 1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+amerisports_brew_pub-hofbrauhaus_brewery_biergarten_vienna_velvet,0,0,244360544256,"{""name"":""Hofbrauhaus Brewery & Biergarten Vienna Velvet"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amerisports_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+anchor_brewing-small_beer,0,0,244361265152,"{""name"":""Small Beer"",""abv"":3.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,12,1
+hopworks_urban_brewery-hub_lager,0,0,244734492672,"{""name"":""HUB Lager"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Czech style pilsner is all malt all the time-no choicest rice or corn syrup here! Whole flower Czech Saaz hops balance the delicate honey flavor of our organic Canadian grown pilsner malt creating a golden beer with depth of character."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,1,1
+brasserie_bnifontaine,0,0,244361068547,"{""name"":""Brasserie Bnifontaine"",""city"":""Bnifontaine"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.21.08.68.68"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""13, rue Pasteur""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.4852,""lon"":2.8306}}",1,11,1
+left_hand_brewing_company-warrior_ipa,0,0,244752908290,"{""name"":""Warrior IPA"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,46,1
+heartland_brewery_union_square-full_moon_barley_wine_ale,0,0,244750483458,"{""name"":""Full Moon Barley Wine Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+the_bruery-loakal_red,0,0,245106999298,"{""name"":""Loakal Red"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2011-01-06 22:26:41"",""description"":""75% American Red Ale, 25% Ale Aged in American Oak Barrels.  A brash American Red ale, dripping with citrusy Centennial hops, mellowed by a touch of oak.  Aromas of toffee, citrus, crushed herbs, vanilla and fresh sawn oak.  Complex!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,20,1
+brouwerij_lindemans-cuvee_rene_grand_cru_gueuze_lambic,0,0,244476870658,"{""name"":""Cuvée René Grand Cru Gueuze Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_lindemans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,8,1
+clipper_city_brewing_co-chesapeake_amber_ale,0,0,244476674050,"{""name"":""Chesapeake Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+boddington_s_brewery,0,0,244362313728,"{""name"":""Boddington's Brewery"",""city"":""Manchester"",""state"":""Manchester"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.4807,""lon"":-2.2344}}",1,14,1
+allagash_brewing-four,0,0,244380270592,"{""name"":""Four"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+flying_fish_brewing_company-farmhouse_summer_ale,0,0,244607156225,"{""name"":""Farmhouse Summer Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A tribute to the highly drinkable \""every day\"" beers from French-speaking Belgium. Contains Belgian two-row pale malt and 7% wheat. This beer is lightly filtered with an earthy, spicy hop character from imported Styrian Goldings hops and a beautiful rich creamy head from the wheat."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,2,1
+hale_s_ales_3-red_menace_big_amber,0,0,244753498113,"{""name"":""Red Menace Big Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+fuller_smith_turner_pbc-vintage_ale_1999,0,0,244606369793,"{""name"":""Vintage Ale 1999"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,0,1
+broughton_ales-old_jock_ale,0,0,244497907713,"{""name"":""Old Jock Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broughton_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+boulder_beer_company-flashback_anniversary_ale,0,0,244373389314,"{""name"":""Flashback Anniversary Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Flashback Anniversary Ale is an India-Brown Ale with 6.8% ABV. This is the first beer we’ve made here that uses one single hop variety (Cascade) in the recipe in five separate additions. The fresh Cascade hop aroma and flavor is perfectly balanced with the dark roasted grains, making Flashback a very unique beer. We’re calling it an India Brown Ale to help illustrate its flavor to the consumer. It’s hoppy like an IPA but dark and roasty like a Brown Ale. Put them together and voila! Flashback at its finest!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+coastal_fog_brewing-hefeweizen,0,0,244475691009,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coastal_fog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,4,1
+routh_street_brewery_and_grille-big_black_stout,0,0,244989952002,"{""name"":""Big Black Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,22,1
+epic_brewing_company,0,0,244608860162,"{""name"":""Epic Brewing Company"",""city"":""Auckland"",""state"":"""",""code"":""2145"",""country"":""New Zealand"",""phone"":""+64 21 632 337"",""website"":""http://epicbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""186 James Fletcher Drive, Otahuhu""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-36.9489,""lon"":174.821}}",1,6,1
+mad_crab_restaurant_and_brewery-sturgeon_stout,0,0,244873691137,"{""name"":""Sturgeon Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_crab_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+brauerei_und_altbierkche_pinkus_mller,0,0,244479885312,"{""name"":""Brauerei und Altbierkche Pinkus Mller"",""city"":""Mnster"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)251-/-45151"",""website"":""http://www.pinkus-mueller.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kreuzstrae 4-10""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.9657,""lon"":7.6214}}",1,15,1
+bierbrouwerij_st_christoffel-christoffel_blond,0,0,244361789440,"{""name"":""Christoffel Blond"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_st_christoffel"",""updated"":""2010-07-22 20:00:20"",""description"":""Born as “Christoffel Bier” this was the first beer brewed by Christoffel. After the introduction of Christoffel Robertus, this beer was named Blond refering to the colour of the beer.  Blond is a low-fermenting beer with 6% alc.vol.\r\n\r\nBlond has a full body, a very balanced taste and a beautiful bitterness due to a generous addition of fresh hop during the brewing-process. The aroma is fruity and Blond has a fresh taste with a pleasant, hoppy finish."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,13,1
+gaslight_brewery-perfect_stout,0,0,244624326657,"{""name"":""Perfect Stout"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+oconomowoc_brewing-amber_rye_lager,0,0,244876247040,"{""name"":""Amber Rye Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oconomowoc_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+boston_beer_company-samuel_adams_triplebock_1994,0,0,244372930561,"{""name"":""Samuel Adams Triplebock 1994"",""abv"":17.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+redhook_ale_brewery-nut_brown_ale,0,0,244989558786,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,21,1
+schloss_eggenberg-samichlaus_bier_2005,0,0,244990345218,"{""name"":""Samichlaus Bier 2005"",""abv"":14.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schloss_eggenberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,23,1
+dock_street_beer-bohemian_dock_street_pilsner,0,0,244610039808,"{""name"":""Bohemian Dock Street Pilsner"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dock_street_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""Bohemian Dock Street Pilsner is brewed in the style of the original Pilsner beers of Bohemia, in what is now the Czech Republic, in a tradition that dates to 1842. We use costly Bohemian Saaz hops and pale imported malts to produce its rich golden color, and soft malty flavor using traditional techniques of the old world. True Pilsners are the most difficult to brew as there are no dark malts or flavorings used to mask flaws. Pilsner is the best known style of beer in the world. A good pilsner balances hops and malts to a refreshing, clean tasting, every-mood kind of beer. The Bohemian can stand alone or join a party easily."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,9,1
+blacksburg_brewing_company,0,0,244370767873,"{""name"":""Blacksburg Brewing Company"",""city"":""Blacksburg"",""state"":""Virginia"",""code"":""24063"",""country"":""United States"",""phone"":"""",""website"":""http://www.blacksburgbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Blacksburg Brewing Co. (BBC) is an independent specialty brewer of premium beer.  As mandated by the Reinheitsgebot (German Purity Law), our beer is brewed with only 4 ingredients: water, barley malt, hops, and yeast.  The best beer requires the best ingredients, so we purchase them regardless of the cost.  We pay a premium to import the Cadillac of barley malt from Bamberg, and our hops from The Hallertau are the best that money can buy, period."",""address"":[""P.O. Box 315""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.23,""lon"":-80.41}}",1,33,1
+hoppin_frog_brewery-d_o_r_i_s_the_destroyer_double_imperial_stout,0,0,244751859713,"{""name"":""D.O.R.I.S. the Destroyer Double Imperial Stout"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This extreme Double Oatmeal Russian Imperial Stout will overwhelm, satisfy, and destroy your taste buds like no other!! D.O.R.I.S. is even darker, hoppier, and stronger than our gold medal winning B.O.R.I.S. The Crusher Stout. Dry hopped and first wort hopped and first wort hopped with the finest American hops for a great Imperial hops for a great Imperial Stout experience! Enjoy the darkness!"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,44,1
+lowenbrau_brauerei,0,0,244874215424,"{""name"":""Löwenbräu Brauerei"",""city"":""München"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-5200-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Nymphenburger Straße 4""]}",1,43,1
+bricktown_brewery-munich_dunkel,0,0,244485586946,"{""name"":""Munich Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bricktown_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+double_mountain_brewery_taproom-double_mountain_pale_ale,0,0,244608270337,"{""name"":""Double Mountain Pale Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""double_mountain_brewery_taproom"",""updated"":""2010-07-22 20:00:20"",""description"":""It’s easy to forget just how dynamite a well-made pale ale can treat you. Our Pale combines softness from our Pilsner malt,  a touch of sweetness from English crystal malt, and plenty of fruity, resinous Northwest hop flavor. The finish is dry, clean and refreshing."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,5,1
+green_bay_brewing-hinterland_honey_wheat,0,0,244735016962,"{""name"":""Hinterland Honey Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,3,1
+brouwerij_boon-framboise_1997,0,0,244496465922,"{""name"":""Framboise 1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_boon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,52,1
+anchor_brewing-our_special_ale_1996,0,0,244360609792,"{""name"":""Our Special Ale 1996"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+anheuser_busch-budweiser_american_ale,0,0,244361265153,"{""name"":""Budweiser American Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Budweiser American Ale is brewed with barley from America's heartland and dry hopped with Cascade hops from the Pacific Northwest.\r\n\r\nAvailable Fall 2008."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+humboldt_brewing-gold_rush,0,0,244734492673,"{""name"":""Gold Rush"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+abbaye_notre_dame_du_st_remy-rochefort_6,0,0,244379746304,"{""name"":""Rochefort 6"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_notre_dame_du_st_remy"",""updated"":""2010-07-22 20:00:20"",""description"":""eddish colour, almost like autumn leaves, very consistent texture with a slightly spicy aroma and an intense taste of caramel, fruit, and hints of raisins. It is only brewed about once per year, representing approximately 1% of total beer production, thus is quite difficult to obtain."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,58,1
+brasserie_de_silenrieux,0,0,244361134080,"{""name"":""Brasserie De Silenrieux"",""city"":""Cerfontaine-Silenrieux"",""state"":""Namur"",""code"":"""",""country"":""Belgium"",""phone"":""32-071-63-32-01"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue de Noupr s/n""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.2248,""lon"":4.4102}}",1,11,1
+lift_bridge_brewery-farm_girl_saison,0,0,244752973824,"{""name"":""Farm Girl Saison"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lift_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This pale golden, Belgian-influenced ale is for everyone: Farm Girl, wannabe Farm Girl. In the Belgian Farmhouse tradition, this brew has a dry malt finish and a spiciness that only Belgian yeasts can create. Smooth and well rounded... this one can please anyone in any situation, whether you are on the water, in the sun, or hiding from winter's chill."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,46,1
+hoffbrau_steaks_brewery_1-texas_special_101_porter,0,0,244750548992,"{""name"":""Texas Special 101 Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,40,1
+tin_whistle_brewing-killer_beer_dark_honey_ale,0,0,245107064832,"{""name"":""Killer Beer Dark Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tin_whistle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,20,1
+bt_mcclintic_beer_company-mclennium,0,0,244476870659,"{""name"":""McLennium"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bt_mcclintic_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+court_avenue_brewing-vimalt_wheat,0,0,244476674051,"{""name"":""Vimalt Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""court_avenue_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,7,1
+boston_beer_company-samuel_adams_blackberry_witbier,0,0,244362379264,"{""name"":""Samuel Adams Blackberry Witbier"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""We brewed this traditional witbier with orange peel and coriander, and then added a hint of blackberry. The flavor is very complex with malt and cereal notes, intense spice and citrus flavors and a smooth, sweet/tart finish. It will be available in January in its own 6-pack and in the Samuel Adams® Brewmaster's Collection Variety 6 & 12-packs."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,14,1
+america_s_brewing-aurora_amber_ale,0,0,244380270593,"{""name"":""Aurora Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+fordham_brewing-oyster_stout,0,0,244607156226,"{""name"":""Oyster Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fordham_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,2,1
+hale_s_ales_3-troll_porter,0,0,244753498114,"{""name"":""Troll Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+gold_coast_brewery,0,0,244606435328,"{""name"":""Gold Coast Brewery"",""city"":""Sanctuary Cove"",""state"":""Queensland"",""code"":"""",""country"":""Australia"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-27.8539,""lon"":153.359}}",1,0,1
+brouwerij_de_achelse_kluis,0,0,244497907714,"{""name"":""Brouwerij De Achelse Kluis"",""city"":""Achel"",""state"":""Limburg"",""code"":"""",""country"":""Belgium"",""phone"":""32-011-80-07-60"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""De Kluis 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.2986,""lon"":5.4896}}",1,56,1
+21st_amendment_brewery_cafe-bitter_american,0,0,244362903552,"{""name"":""Bitter American"",""abv"":3.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""An American session beer. Loaded with hop character and a malty presence, but lower in alcohol."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,17,1
+boulevard_brewing_company-boulevard_irish_ale,0,0,244373454848,"{""name"":""Boulevard Irish Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Irish Ale, Boulevard’s spring seasonal beer, is our Midwestern tribute to the legendary red ales of old Ireland. Our recipe combines six kinds of pale and roasted barley malts to provide a rich, toasty flavor and tawny reddish hue."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,39,1
+coors_brewing_golden_brewery-keystone_light,0,0,244475756544,"{""name"":""Keystone Light"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,4,1
+rowland_s_calumet_brewery-calumet_kolsch,0,0,244990017536,"{""name"":""Calumet Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rowland_s_calumet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+erie_brewing_company,0,0,244608925696,"{""name"":""Erie Brewing Company"",""city"":""Erie"",""state"":""Pennsylvania"",""code"":""16501"",""country"":""United States"",""phone"":""(814) 459-7741"",""website"":""http://www.eriebrewingco.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1213 Veshecco Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1112,""lon"":-80.113}}",1,6,1
+magic_hat-scumptious_spring_lager_vinyl,0,0,244873756672,"{""name"":""Scumptious Spring Lager (Vinyl)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Magic Hat's seasonal Lager is also called Vinyl""}",1,42,1
+brewdog_ltd-the_physics,0,0,244479950848,"{""name"":""The Physics"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,15,1
+big_time_brewing-coal_creek_porter,0,0,244361789441,"{""name"":""Coal Creek Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_time_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,13,1
+gasthaus_brauerei_max_moritz,0,0,244624326658,"{""name"":""Gasthaus-Brauerei Max & Moritz"",""city"":""Kressbronn am Bodensee"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7543-/-6508"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Weinbichl 6""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6064,""lon"":9.6061}}",1,41,1
+olde_peninsula_brewpub_and_restaurant-winter_wheat,0,0,244876312576,"{""name"":""Winter Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+brasserie_brouwerij_cantillon-lambic_2002,0,0,244372930562,"{""name"":""Lambic 2002"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+rogue_ales-roughstock_ale,0,0,244989558787,"{""name"":""Roughstock Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""a special bottle dedicated to Jim Steen, member of the Professional Rodeo Coyboys Association and rogue extrodinaire."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,21,1
+scotch_irish_brewing,0,0,244990410752,"{""name"":""Scotch Irish Brewing"",""city"":""Carleton Place"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-613-257-7845"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""40 Bennett Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.1279,""lon"":-76.13}}",1,23,1
+doemens_e_v,0,0,244610039809,"{""name"":""Doemens e.V."",""city"":""Grfelfing"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-85805-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Stefanusstrae 8""]}",1,9,1
+borsodi_sorgyar-borsodi,0,0,244370767874,"{""name"":""Borsodi"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""borsodi_sorgyar"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,33,1
+hubcap_brewery_and_kitchen-beaver_tail_brown_ale,0,0,244751859714,"{""name"":""Beaver Tail Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hubcap_brewery_and_kitchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,44,1
+mad_anthony_brewing-old_fort_porter,0,0,244874280960,"{""name"":""Old Fort Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+brooklyn_brewery-black_ops,0,0,244485652480,"{""name"":""Black Ops"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brooklyn Black Ops does not exist. However, if it did exist, it would be a robust stout concocted by the Brooklyn brewing team under cover of secrecy and hidden from everyone else at the brewery. Supposedly “Black ops” was aged for four months in bourbon barrels, bottled flat, and re-fermented with Champagne yeast, creating big chocolate and coffee flavors with a rich underpinning of vanilla-like oat notes. They say there are only 1,000 cases. We have no idea what they’re talking about."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,28,1
+eel_river_brewing-certified_organic_porter,0,0,244608270338,"{""name"":""Certified Organic Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eel_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,5,1
+grumpy_troll_restaurant_and_brewery-lager,0,0,244735082496,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,3,1
+brouwerij_de_dolle_brouwers-bos_keun,0,0,244496465923,"{""name"":""Bos Keun"",""abv"":8.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_dolle_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,52,1
+arthur_guinness_son-guinness_draught,0,0,244360609793,"{""name"":""Guinness Draught"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arthur_guinness_son"",""updated"":""2011-02-28 17:13:18"",""description"":"""",""style"":""Classic Irish-Style Dry Stout"",""category"":""Irish Ale""}",1,10,1
+avery_brewing_company-samael_s_oak_aged_ale,0,0,244361265154,"{""name"":""Samael's Oak-aged Ale"",""abv"":14.5,""ibu"":41.0,""srm"":12.5,""upc"":7,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-12-19 09:47:16"",""description"":""A super-caramelly, oak-aged English-style strong ale. The oak is very apparent in this rich and high gravity ale. Additional depth and complexity result in a woody and cask-like nose, with a pronounced vanilla flavor on the palate. As of 2007, the use of additional roasted malt has resulted in subtle bitternes to balance the natural sweetness."",""style"":""Strong Ale"",""category"":""British Ale""}",1,12,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2005_port,0,0,244734492674,"{""name"":""Harvest Ale 2005 (Port)"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+allentown_brew_works-apricot_ale,0,0,244379811840,"{""name"":""Apricot Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Unfiltered wheat beer brewed with apricots creating a smooth and thirst quenching full flavored fruit beer."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,58,1
+brasserie_de_silly-double_enghien_bruin,0,0,244361134081,"{""name"":""Double Enghien Bruin"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silly"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+lighthouse_brewing,0,0,244875657216,"{""name"":""Lighthouse Brewing"",""city"":""Victoria"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-888-862-7500"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2 - 836 Devonshire Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.4358,""lon"":-123.396}}",1,46,1
+jt_whitney_s_brewpub_and_eatery-dunkle_weiss,0,0,244750548993,"{""name"":""Dunkle Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+titletown_brewing-discombobulator_maibock,0,0,245107064833,"{""name"":""Discombobulator Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,20,1
+bull_bush_pub_brewery-hefeweizen,0,0,244476936192,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,8,1
+de_proef_brouwerij,0,0,244609056768,"{""name"":""De Proef Brouwerij"",""city"":""Lochristi-Hijfte"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-09-/-356.71.02"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Doornzelestraat 20""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1159,""lon"":3.8158}}",1,7,1
+boundary_bay_brewery_and_bistro,0,0,244362379265,"{""name"":""Boundary Bay Brewery and Bistro"",""city"":""Bellingham"",""state"":""Washington"",""code"":""98227"",""country"":""United States"",""phone"":""1-360-647-5593"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1107 Railroad Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.7475,""lon"":-122.481}}",1,14,1
+arcadia_brewing-lake_superior_esb,0,0,244380336128,"{""name"":""Lake Superior ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+fratellos_restaurant_and_brewery-fox_river_golden_ale,0,0,244607221760,"{""name"":""Fox River Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+hanssens_artisanal-oude_kriek,0,0,244753563648,"{""name"":""Oude Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hanssens_artisanal"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,48,1
+golden_gate_park_brewery-buffalo_nutty_brown,0,0,244606435329,"{""name"":""Buffalo Nutty Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_gate_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,0,1
+brouwerij_het_anker-gouden_carolus_noel,0,0,244497907715,"{""name"":""Gouden Carolus Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_het_anker"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+affligem_brouwerij-affligem_dubbel,0,0,244362903553,"{""name"":""Affligem Dubbel"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""affligem_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""A reddish-brown abbey ale brewed with dark malts. The secondary fermentation gives a fruity aroma and a unique, spicy character with a distinctive aftertaste. Secondary fermentation in the bottle. Contains barley malt."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,17,1
+brasserie_de_brunehaut-abbaye_de_saint_martin_triple,0,0,244373454849,"{""name"":""Abbaye de Saint-Martin Triple"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""Three varieties of malt and three of hops create the robust character of this St. Martin triple abbey ale.\r\nAbbye St. Martin Ales are pure Belgium."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,39,1
+cugino_brewing_company,0,0,244475756545,"{""name"":""Cugino Brewing Company"",""city"":""Batavia"",""state"":""Illinois"",""code"":""60510"",""country"":""United States"",""phone"":""1-630-761-8888"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1501 East Wilson""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.8539,""lon"":-88.2776}}",1,4,1
+russell_brewing-blonde_ale,0,0,244990017537,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+estes_park_brewery-estes_park_porter,0,0,244608925697,"{""name"":""Estes Park Porter"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Porters are dark ales without the roasted malt character of a stout. Our porter is a brown porter with a very smooth, balanced profile."",""style"":""Porter"",""category"":""Irish Ale""}",1,6,1
+magic_hat-single_chair_ale,0,0,244873756673,"{""name"":""Single Chair Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""A Commemmorative Brew Single Chair celebrating the uniqueness of the Mad River Glen Cooperative Ski Area in Vermont. \r\n\r\nMedium bodied & ideally balanced for all tastes, Single Chair Ale's tempting light golden color, heady aroma & smooth liquid go down effortlessly and often!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,42,1
+brouwerij_de_ranke-pere_noel,0,0,244479950849,"{""name"":""Père Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_ranke"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+boscos_memphis_brewing,0,0,244361789442,"{""name"":""Boscos Memphis Brewing"",""city"":""Germantown"",""state"":""Tennessee"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.0868,""lon"":-89.8101}}",1,13,1
+gordash_brewing_company-holy_mackerel_mack_in_black,0,0,244624392192,"{""name"":""Holy Mackerel Mack In Black"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordash_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,41,1
+pabst_brewing_company-pabst_blue_ribbon,0,0,244876312577,"{""name"":""Pabst Blue Ribbon"",""abv"":4.74,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""PBR is not just any beer- so you would expect the history to be a bit unusual, and it is. Pabst was originally called \""Select,\"" but people started asking for that \""Blue Ribbon\"" beer in 1882 when we started tying silk ribbons to the bottles. We officially added the words \""Blue Ribbon\"" to the bottle in 1895.\r\n\r\nPabst was the first brewery to put beer in cans back in 1935. This was Blue Ribbon beer but it was called \""Export\"" when sold in the can. Our first cans had a picture of a can opener on the side with instructions on how to open the can of beer, with the can opener.\r\n\r\nToday, this classic American brew has been adopted by a whole new generation of PBR drinkers. Currently, PBR is one of the fastest growing domestic beer brands. When you're this good, quality always comes through-PBR ME ASAP!"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,47,1
+brasserie_dubuisson-scaldis_prestige,0,0,244372996096,"{""name"":""Scaldis Prestige"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dubuisson"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+rothaus_brauerei-hefeweissbier,0,0,244989624320,"{""name"":""Hefeweissbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rothaus_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,21,1
+sleeping_lady_brewing_company,0,0,244990410753,"{""name"":""Sleeping Lady Brewing Company"",""city"":""Anchorage"",""state"":""Alaska"",""code"":""99501"",""country"":""United States"",""phone"":""(907) 277-7727"",""website"":""http://www.alaskabeers.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""717 W. 3rd Ave""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":61.2196,""lon"":-149.896}}",1,23,1
+dogfish_head_craft_brewery-midas_touch_golden_elixir,0,0,244610039810,"{""name"":""Midas Touch Golden Elixir"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This recipe is the actual oldest-known fermented beverage in the world! Our recipe showcases the known ingredients of barley, white Muscat grapes, honey & saffron found in the drinking vessels in King Midas' tomb! Somewhere between a beer, wine and mead, this smooth, dry ale will please with Chardonnay or I.P.A. drinker alike.""}",1,9,1
+boston_beer_company-samuel_adams_triplebock_1995,0,0,244370767875,"{""name"":""Samuel Adams Triplebock 1995"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+issaquah_brewhouse,0,0,244751925248,"{""name"":""Issaquah Brewhouse"",""city"":""Issaquah"",""state"":""Washington"",""code"":""98027"",""country"":""United States"",""phone"":""1-425-557-1911"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""35-C West Sunset Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.53,""lon"":-122.037}}",1,44,1
+mad_anthony_brewing,0,0,244874280961,"{""name"":""Mad Anthony Brewing"",""city"":""Fort Wayne"",""state"":""Indiana"",""code"":""46802"",""country"":""United States"",""phone"":""1-260-426-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2002 Broadway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.0677,""lon"":-85.1524}}",1,43,1
+brouwerij_artois-stella_artois,0,0,244485652481,"{""name"":""Stella Artois"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_artois"",""updated"":""2010-07-22 20:00:20"",""description"":""Stella Artois was first brewed as a Christmas beer in leuven. It was named Stella from the star of Christmas, and Artois after Sebastian Artois, founder of the brewery. It's brewed to perfection using the original Stella Artois yeast and the celebrated Saaz hops. It's the optimum premium lager, with it's full flavour and clean crisp taste."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+egan_brewing-freys_weizen,0,0,244608335872,"{""name"":""Freys Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,5,1
+hale_s_ales_3-wee_heavy_winter_ale,0,0,244735082497,"{""name"":""Wee Heavy Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,3,1
+brouwerij_lindemans-kriek,0,0,244496531456,"{""name"":""Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_lindemans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,52,1
+asheville_pizza_and_brewing_co-shiva_ipa,0,0,244360609794,"{""name"":""Shiva IPA"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""asheville_pizza_and_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A generous portion of American hops create a crisp citrus nose combined with a light, sweet finish – a well balanced beer that destroys the paradigm of an IPA."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,10,1
+back_road_brewery-belle_gunness_stout,0,0,244361330688,"{""name"":""Belle Gunness Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A notorious drink that's as dark as its' namesakes history!!  It is named after the infamous LaPorte, Indiana serial killer herself, Belle Gunness of 1908.  This Irish-style dry stout is amazingly smooth to drink.  You will taste chocolate, coffee and roasty flavors in every sip.  Don't be afraid of the dark.  A true dark beer lover would die to try it.  It definitely would not kill you to dig some up."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+kaiser_bru,0,0,244734558208,"{""name"":""Kaiser-Bru"",""city"":""Neuhaus"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9156-/-88-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Oberer Markt 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.6283,""lon"":11.5498}}",1,1,1
+allguer_brauhaus_ag_kempten-cambonator_doppelbock,0,0,244379811841,"{""name"":""Cambonator Doppelbock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allguer_brauhaus_ag_kempten"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,58,1
+brasserie_mcauslan-griffon_brown_ale,0,0,244477919232,"{""name"":""Griffon Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_mcauslan"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+magic_hat-odd_notion_winter_07,0,0,244875657217,"{""name"":""Odd Notion Winter 07"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+klosterbrauerei_weltenburg-asam_bock,0,0,244750614528,"{""name"":""Asam-Bock"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_weltenburg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,40,1
+trade_winds_brewing-gingerwheat,0,0,245107064834,"{""name"":""Gingerwheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trade_winds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,20,1
+callahan_s_pub_and_brewery-red,0,0,244476936193,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""callahan_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+deschutes_brewery-hop_henge_imperial_ipa,0,0,244609122304,"{""name"":""Hop Henge Imperial IPA"",""abv"":8.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""HOP HENGE IMPERIAL IPA – The Ultimate in Hop Innovation \r\n\r\nHop Henge Imperial IPA returns to the Bond Street Series line-up this April in extreme fashion. Staying true to the experimental nature of the series and the “never settle” philosophy of Deschutes, our brewers went back to the drawing board to create an amplified version of last year’s monument to hops.\r\n\r\nHead Brewer Brett Porter says, “This is a truly exciting and groundbreaking beer. We reformulated everything about the hop recipe to give Hop Henge an extraordinary aroma and flavor similar to a fresh hop beer.” In addition to the Cascade and Centennial hops, Deschutes Brewery is experimenting with a hop variety so new that it has yet to be named.\r\n\r\nThe team here at Bend Public House recommends Hop Henge as the perfect accompaniment for a variety of spicy foods, so be sure to have a bottle handy next time you make a batch of hot wings and go for the five alarm award. The high-octane hoppiness is a wildly refreshing antidote to a wide array of hot foods.\r\n\r\nLimited Availability April through June.\r\n\r\nDon’t miss this amazing hop experiment that is sure to leave your taste buds begging for more.\r\n\r\n-http://www.deschutesbrewery.com/Brews/Bond+Street+Series/default.aspx\r\n\r\nAvailable April through June.\r\n\r\nHop Henge I.P.A. was first brewed in 2006 as an agressive West Coast style I.P.A. In 2007, Hop Henge is going Imperial!  Several pounds of  Centennial, Cascade and Northern Brewer hops are in each barrel with a heavy dry-hop presence to top it off.  A blend of crystal, pale and caraston malts creates an overall biscuity characteristic that is dense and muscular, building the alcohol base to support the monstrous hop profile.\r\n\r\nLike the rest of the Bond Street Series, Hop Henge highlights the creativity and curiosity of our brewers.  Bolder than its English ancestors, with huge hops and a bitter finish, this IPA is no wallflower.\r\n\r\nAlcohol By Volume: 8.1%\r\n\t\r\n\r\nIBU 95\r\n\r\nWhen one of our brewers suggested we name our new IPA Hop Henge, he also came up with the idea of actually recreating Stonehenge, only with hop bales.  We were up for the challenge and even though the weather did not want to cooperate, we pulled it off and threw a party afterwards.\r\n\t\r\n\r\n\r\nphoto: chris mather\r\nRatings, Awards & Notables\r\n\r\nWorld's Best Strong Pale Ale (Imperial IPA)\r\n2007 World Beer Awards\r\n\r\nWorld's 50 Best Beers\r\n2006 International Beer Challenge\r\n\r\nGold Medal, 92 Points\r\n2006 World Beer Championships\r\n\r\nSilver Medal, India Pale Ale Category\r\n2006 Australian International Beer Awards\r\n\r\nModern Brewery Age, February 12, 2007\r\n5 out 5 stars \r\nHop Henge started its life as an India Pale Ale, but this year it was bumped up to “Imperial IPA” status, with a hefty dose of additional hops.\r\n“This one is lovely,” said taster Tom Conti. “They got it just right.”\r\nIt pours out a deep amber, with an appealing rocky head, and rich hop aroma wafting from the glass. “They sure dosed it with a lot of hops...[there’s] a lot of hop bitterness in the taste,” one taster observed.\r\nIn addition to the Imperial-level hopping, Hop Henge also boasts Imperial-level alcohol content, with 8.1% a.b.v.\r\nThis was the top-rated beer during its tasting session, and tasters had to dig deep for new superlatives to describe it. “This is a beautiful beer,” concluded taster Gregg Glaser. “Full of flavor and hops and malt and hops again.”\r\n“Not for the timid,” said taster Robert Lachman.\r\n\r\n-http://www.deschutesbrewery.com/BrewPub/OnTap/125352.aspx"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,7,1
+brasserie_brouwerij_cantillon-cuvee_des_champions_2003_2004,0,0,244362379266,"{""name"":""Cuvée des Champions 2003-2004"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,14,1
+atwater_block_brewing-voodoo_vator,0,0,244380336129,"{""name"":""Voodoo Vator"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This one is black and sweet!  Its malty character is derived from two carmel malts along with Munich malt to create the smoothest high gravity beer this side of the \""pond\""."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,59,1
+frederick_brewing-hempen_ale,0,0,244607221761,"{""name"":""Hempen Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""frederick_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+hc_berger_brewing-colorado_kolsch_ale,0,0,244753563649,"{""name"":""Colorado Kölsch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hc_berger_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+govnor_s_public_house-dingle_dubbel,0,0,244606435330,"{""name"":""Dingle Dubbel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+brouwerij_huyghe-delirium_tremens,0,0,244497973248,"{""name"":""Delirium Tremens"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_huyghe"",""updated"":""2010-07-22 20:00:20"",""description"":""The particular character and the unique taste of \""Delirium Tremens\"" result from the use of three different kinds of yeast. Its very original packing, which resembles cologne ceramics, and the colourful label contribute to its success."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,56,1
+appalachian_brewing_company-broad_street_barleywine,0,0,244362969088,"{""name"":""Broad Street Barleywine"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Barley Wine is dark red in color and has an original gravity of 1.120 (24 Plato). The malt complexity of this classic ale style is incredible.\r\n\r\nThe Broad Street Market is located just blocks from the Appalachian Brewing Company. This indoor farmers market was built in 1863 and is one of the oldest continuously operating farmers markets in the United States. The beautiful brick façade and natural wood doors are typical of the structures in Downtown Harrisburg; including our own building."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,17,1
+brasserie_la_choulette-framboise,0,0,244490043392,"{""name"":""Framboise"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_choulette"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+de_friese_bierbrouwerij_us_heit,0,0,244607614976,"{""name"":""De Friese Bierbrouwerij Us Heit"",""city"":""Bolsward"",""state"":"""",""code"":"""",""country"":""Netherlands"",""phone"":""31-(0)515-577-449"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Snekerstraat 43""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":53.0606,""lon"":5.5342}}",1,4,1
+samuel_smith_old_brewery_tadcaster-winter_welcome_2008_2009,0,0,244990017538,"{""name"":""Winter Welcome 2008-2009"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Winter Warmer"",""category"":""Other Style""}",1,22,1
+f_x_matt_brewing-saranac_season_s_best,0,0,244608925698,"{""name"":""Saranac Season's Best"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with a special blend of domestic and Belgian malts for a delicate nut-like character, you'll love this Lager's rich taste and signature hop aroma. The exceptional full-bodied taste reflects our Brewery's extraordinary commitment to brewing beers of the highest standard of quality."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,6,1
+mckenzie_brew_house-farmhouse_saison,0,0,244873756674,"{""name"":""Farmhouse Saison"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+allagash_brewing-speciale_reserve_ale,0,0,244362706944,"{""name"":""Speciale Reserve Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allagash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+brouwerij_huyghe,0,0,244479950850,"{""name"":""Brouwerij Huyghe"",""city"":""Melle"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-092-52-15-01"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brusselse Steenweg 282""]}",1,15,1
+boulder_beer_company-sweaty_betty_blonde,0,0,244361854976,"{""name"":""Sweaty Betty Blonde"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,13,1
+great_dane_pub_and_brewing_1,0,0,244750680064,"{""name"":""Great Dane Pub and Brewing #1"",""city"":""Madison"",""state"":""Wisconsin"",""code"":""53703"",""country"":""United States"",""phone"":""1-608-284-0000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""123 East Doty Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0745,""lon"":-89.3802}}",1,41,1
+pete_s_place-choc_american_lager,0,0,244999651328,"{""name"":""Choc American Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_place"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+brauerei_aying_franz_inselkammer_kg-altbairisch_dunkel,0,0,244489650176,"{""name"":""Altbairisch Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_aying_franz_inselkammer_kg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+russian_river_brewing,0,0,244989624321,"{""name"":""Russian River Brewing"",""city"":""Santa Rosa"",""state"":""California"",""code"":""95404"",""country"":""United States"",""phone"":""1-707-545-2337"",""website"":""http://www.russianriverbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""At Russian River Brewing Company we focus on traditional aggressively hopped California style ales, Belgian style ales, and barrel aged beers. We brew a full line up of ales and lagers for our pub and for limited distribution."",""address"":[""725 Fourth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.4418,""lon"":-122.712}}",1,21,1
+sly_fox_brewhouse_and_eatery_royersford-helles_bock,0,0,245107916800,"{""name"":""Helles Bock"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,23,1
+dogfish_head_craft_brewery,0,0,244610105344,"{""name"":""Dogfish Head Craft Brewery"",""city"":""Milton"",""state"":""Delaware"",""code"":""19968"",""country"":""United States"",""phone"":""1-888-834-3474"",""website"":""http://www.dogfish.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6 Cannery Village Center""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":38.7683,""lon"":-75.3107}}",1,9,1
+boston_beer_works-kenmore_kolsch,0,0,244370767876,"{""name"":""Kenmore Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+jacob_leinenkugel_brewing_company-creamy_dark,0,0,244751925249,"{""name"":""Creamy Dark"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+mad_river_brewing-steelhead_scotch_porter,0,0,244874346496,"{""name"":""Steelhead Scotch Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+brouwerij_bavik_de_brabandere-petrus_speciale,0,0,244485652482,"{""name"":""Petrus Speciale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+empyrean_brewing_company-festive_ale_2007,0,0,244608335873,"{""name"":""Festive Ale 2007"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+highland_brewing_company,0,0,244735148032,"{""name"":""Highland Brewing Company"",""city"":""Asheville"",""state"":""North Carolina"",""code"":""28803"",""country"":""United States"",""phone"":""(828) 299-7223"",""website"":""http://www.highlandbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Nestled in the Blue Ridge Mountains in Asheville, North Carolina, Highland Brewing Company brews the finest and freshest ales in the Southeast.  For more than a decade, we have produced an impressive array of ales, from the best-selling Gaelic to our popular winter seasonal, Cold Mountain Ale."",""address"":[""12 Old Charlotte Highway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":35.5716,""lon"":-82.4991}}",1,3,1
+brouwerij_st_feuillien,0,0,244496531457,"{""name"":""Brouwerij St-Feuillien"",""city"":""Le Roeulx"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)64-31-18-18"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""20, rue d'Houdeng""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.5018,""lon"":4.1086}}",1,52,1
+avery_brewing_company-hog_heaven_barleywine,0,0,244360675328,"{""name"":""Hog Heaven Barleywine"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This dangerously drinkable garnet beauty is a hop lover's delight.  The intense dry-hop nose and the alcohol content are perfectly balanced for a caramel candy-like malt finish.  This is a serious beer for serious beer afficianados and it only gets better with age.  Cellerable for 3 years."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,10,1
+bandana_brewery-madelia_mild,0,0,244361330689,"{""name"":""Madelia Mild"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,12,1
+klosterbrauerei_neuzelle-black_abbot_schwarzer_abt,0,0,244734558209,"{""name"":""Black Abbot / Schwarzer Abt"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_neuzelle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,1,1
+anchor_brewing-anchor_steam,0,0,244379877376,"{""name"":""Anchor Steam"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+brewdog_ltd-trashy_blonde,0,0,244477984768,"{""name"":""Trashy Blonde"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""A titillating, neurotic, peroxide, punk of a pale ale. Combining attitude, style substance and a little bit of low self esteem for good measure; what would your mother say?\r\n\r\nYou really should just leave it alone...\r\n\r\n...but you just cant get the compulsive malt body and gorgeous dirty blonde colour out of your head. The seductive lure of the sassy passion fruit hop proves too much to resist. All that is even before we get onto the fact that there are no additives preservatives, pasteurization or strings attached.\r\n\r\nAll wrapped up with the customary Brewdog bite and imaginative twist. This trashy blonde is going to get you into a lot of trouble."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,11,1
+mcmenamins_mill_creek-i_m_pale,0,0,244875722752,"{""name"":""I.M. Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+kuhnhenn_brewing,0,0,244750614529,"{""name"":""Kuhnhenn Brewing"",""city"":""Warren"",""state"":""Michigan"",""code"":""48092"",""country"":""United States"",""phone"":""1-586-979-8361"",""website"":""http://www.kbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5919 Chicago Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.5278,""lon"":-83.0472}}",1,40,1
+trade_winds_brewing-hula_berry,0,0,245107130368,"{""name"":""Hula Berry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trade_winds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,20,1
+cameron_s_brewing-auburn_ale,0,0,244476936194,"{""name"":""Auburn Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cameron_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+dillon_dam_brewery,0,0,244609187840,"{""name"":""Dillon Dam Brewery"",""city"":""Dillon"",""state"":""Colorado"",""code"":""80435"",""country"":""United States"",""phone"":""1-970-262-7777"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""100 Little Dam Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":39.6282,""lon"":-106.059}}",1,7,1
+brasserie_val_de_sambre,0,0,244479361024,"{""name"":""Brasserie Val de Sambre"",""city"":""Goze"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-071-56-20-73"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Vandervelde 273""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.3682,""lon"":4.3266}}",1,14,1
+back_road_brewery-midwest_ipa,0,0,244380336130,"{""name"":""Midwest IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""back_road_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""It means India Pale Ale.  It's all about the hops on this one.  Brewers use hops to add bitterness and aroma to their beers.  If not for hops your beer would be too sweet.  Our IPA uses plenty of Chinook and Columbus hops from the Pacific Northwest.  The flavor can best be described as strong resiny grapefruit.  The long drawn out hop flavor is essential to the character of the beer.  So smack your buds on this one all you HOP HEADS."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+golden_city_brewery,0,0,244607287296,"{""name"":""Golden City Brewery"",""city"":""Golden"",""state"":""Colorado"",""code"":""80401"",""country"":""United States"",""phone"":""1-303-279-8092"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""920 Twelfth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7546,""lon"":-105.224}}",1,2,1
+hite_brewery-hite,0,0,244753629184,"{""name"":""Hite"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hite_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Hite lager is golden in colour and is styled upon traditional European and American lagers."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+half_moon_bay_brewing-paddle_out_stout,0,0,244734164992,"{""name"":""Paddle Out Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,0,1
+brouwerij_van_honsebrouck,0,0,244498038784,"{""name"":""Brouwerij Van Honsebrouck"",""city"":""Ingelmunster"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-051-33-51-60"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Oostrozebekestraat 43""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9201,""lon"":3.2579}}",1,56,1
+arcadia_brewing-big_dick_s_olde_ale,0,0,244362969089,"{""name"":""Big Dick's Olde Ale"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Somewhat of a cousin to Barleywine, Big Dick’s is a classic English-style Olde Ale.  Sweet and full-bodied malt flavors are complemented by a fragrant but mild hop bitterness.  Sweet, bready malt aromas combine with rich flavors of dark fruit, brown sugar, caramel, and sweet nuts. A beer for keeping, Big Dick’s Olde Ale will age gracefully, while fruity flavors continue to develop and bitterness will subside.\r\n\r\nThis is not only a BIG beer, it is a Well-Endowed Ale!  We took a traditional English-style Ale and made it our own.  Delightful on its own or as a digestif with a full-bodied cigar, Big Dick’s is also big enough to stand up to many boldly-flavored foods."",""style"":""Old Ale"",""category"":""British Ale""}",1,17,1
+brasserie_lefebvre-blanche_de_bruxelles_mannekin_pis,0,0,244490043393,"{""name"":""Blanche de Bruxelles Mannekin Pis"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_lefebvre"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+deschutes_brewery-cascade_golden_ale,0,0,244607680512,"{""name"":""Cascade Golden Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Gracing the expansive Western skyline in Central Oregon, the Three Sisters—Faith, Hope and Charity—are three prominent peaks in the Cascade mountain range.  Local folklore credits the naming to 19th Century fur trappers."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,4,1
+san_diego_brewing-amber,0,0,244990083072,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+firehouse_grill_brewery-pale_ale,0,0,244608991232,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,6,1
+meantime_brewing_company_limited-london_porter,0,0,244873822208,"{""name"":""London Porter"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""meantime_brewing_company_limited"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,42,1
+allagash_brewing,0,0,244362772480,"{""name"":""Allagash Brewing"",""city"":""Portland"",""state"":""Maine"",""code"":""4103"",""country"":""United States"",""phone"":""1-800-330-5385"",""website"":""http://www.allagash.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Allagash Brewing Company sold its first batch of beer in the summer of 1995. The Allagash story, however, has roots that go much further back then the ten years the Portland, Maine brewery has been in operation. The roots go into the early 1990's when founder Rob Tod saw something missing in the American beer market. They are interwoven in the craft brewing movement that has allowed the creativity of brewers to flourish over the last twenty years, and those same roots have ties that go back centuries-to the monasteries of Belgium, whose own ancient brewing methods are now practiced today by the brewers of Allagash. Allagash began as a one-man operation, with Tod assuming all brewing duties in a small space located in a building on the outskirts of the maritime city of Portland. Tod had worked in brewery settings before and recognized a void within the craft brewing movement. While both German and British styles had become prevalent throughout the U.S., the ever-creative Belgian-styles were very difficult to find. Through his travels, Tod had sampled many of these unique beers and felt that the flavors and traditions of this European nation needed to be shared with the American drinking public. He designed a small 15-barrel brewhouse specifically to embrace the Belgian tradition of beer making, gathered the finest array of authentic raw materials and began his quest towards the production of traditional Belgian style ales. Allagash began with the release of its Allagash White, modeled after the traditional White beers of Belgium. Also referred to as wit beers, they get their unique flavor from the use of wheat in place of barley, Curacao orange peel and the careful sprinkling of coriander and other spices. Allagash combined these ingredients with their very own proprietary Belgian yeast strain to create the remarkably unique and refreshing beer that is today their flagship brand. Allagash White developed a strong cult following around the Portland area where it was available at selected draft accounts. Due to its immediate success, the beer was soon made available in 12-ounce six-packs throughout the state of Maine. With the success of the first brand, Rob realized two things: The public was asking for some new styles and the workload was getting to be too much for one person. Soon after, two experienced brewers were hired and Allagash released their second brew, Allagash Double Ale. Using the philosophy and techniques created by the Trappist Monks of Belgium centuries ago, the staff created this beer using seven different malts, a traditional sugar, and their own Belgian yeast strain. The result was another unique yet balanced beer crafted in the classic Belgian style. To truly appreciate the classic styles and brewing traditions of Belgium, one must experience beer created in the classic Belgian package. This is why Allagash, after an extensive period of research, released their distinctive Reserve line of cork finished 750 ML bottles. This unique line employs the ancient tradition referred to as the méthode champenoise. The technique calls for two fermentations, one in the Brewery's fermenting tanks and the second in the bottle itself. It is this second fermentation that produces a notable increase in carbonation, a softer mouthfeel, and beers of remarkable complexity. This method of bottle conditioning leaves a small amount of yeast in the bottle, creating what is known as a living beer. As a result, these styles have a greatly enhanced shelf life and some styles will age exceptionally, much like a fine wine. Just as the styles originate in Belgium, so does the package itself. To insure authenticity, Allagash imports the bottles and corks directly from the same country that designed the techniques. This enables the beers to reach carbonation levels similar to champagne while allowing the corks to pop characteristically upon serving. Today, Allagash still remains one of very few breweries in North America using this distinctive package. From the very beginning, Allagash has strived to produce the finest Belgian-style and experimental ales this side of the Atlantic. It began as New England's original Belgian-Style brewery and has grown into one of the industry's most distinguished and well-respected brands. Following the time-tested brewing traditions of ancient Belgium, Allagash now produces a broad-ranging portfolio of artisanal beers with uncompromising quality."",""address"":[""100 Industrial Way""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.7028,""lon"":-70.3166}}",1,16,1
+caldera_brewing-pilsener_bier,0,0,244479950851,"{""name"":""Pilsener Bier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A true German-style pilsener, fermented at 43 degrees and cold lagered for eight weeks."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,15,1
+brasserie_de_cazeau,0,0,244361854977,"{""name"":""Brasserie de Cazeau"",""city"":"""",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Farm-brewery located in South Belgium."",""address"":[]}",1,13,1
+grizzly_peak_brewing,0,0,244750680065,"{""name"":""Grizzly Peak Brewing"",""city"":""Ann Arbor"",""state"":""Michigan"",""code"":""48104"",""country"":""United States"",""phone"":""1-734-741-7325"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""120 West Washington Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.2805,""lon"":-83.749}}",1,41,1
+piece-top_heavy_hefeweizen,0,0,244999716864,"{""name"":""Top Heavy Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""piece"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,47,1
+brauerei_herrenhausen-weizen_bier,0,0,244489650177,"{""name"":""Weizen Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_herrenhausen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+s_a_damm-estrella_levante_sin_0_0_alcohol,0,0,244989624322,"{""name"":""Estrella Levante Sin 0.0% Alcohol"",""abv"":1.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""s_a_damm"",""updated"":""2011-07-14 08:54:53"",""description"":"""",""style"":""Baltic-Style Porter"",""category"":""Other Lager""}",1,21,1
+sly_fox_brewhouse_and_eatery_royersford-route_113_ipa,0,0,245107982336,"{""name"":""Route 113 IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":""A big, flavorful IPA for all the hopheads out there, brewed with British Pale and Crystal malts, and hopped with Centennial, Cascade, German Northern Brewer, & UK East Kent Goldings. Bold and spicy."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+east_end_brewing_company-east_end_witte,0,0,244610105345,"{""name"":""East End Witte"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""east_end_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A \""Belgian White\"" wheat beer, gently spiced with (new!) coriander and bitter orange peel. Light bodied with hints of orange and lemon. A great beer for hot weather or for those looking for something lighter all year round."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,9,1
+brasserie_artisanale_de_rulles,0,0,244370767877,"{""name"":""Brasserie Artisanale de Rulles"",""city"":""Habay-Rulles"",""state"":""Luxembourg"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)63-41-18-38"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Maurice Grevisse 36""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.7185,""lon"":5.5571}}",1,33,1
+karl_strauss_brewery_gardens_sorrento_mesa-red_trolley_ale,0,0,244751990784,"{""name"":""Red Trolley Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,44,1
+midnight_sun_brewing_co-bathtub_gin_gruit_ale,0,0,244874346497,"{""name"":""Bathtub Gin Gruit Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This gruit ale was inspired by the Phish song of the same name. A traditional gruit in style, Bathtub Gin was brewed without hops. Instead Ben spiced his beer with botanicals typically used to flavor gin: juniper berries, orris root, angelica root, grains of paradise, lemon peel, orange peel and coriander. The result is intensely fragrant, flavorful and fabulous."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,43,1
+bullfrog_brewery-inspiration_red,0,0,244485718016,"{""name"":""Inspiration Red"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A big addition of caramel and Munich malts give this beer its rich mahogany color along with its juicy palate. Its medium body and wonderful balance of hops from the Pacific Northwest make this a luscious and aromatic brew."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+erie_brewing_company-golden_fleece_maibock,0,0,244608335874,"{""name"":""Golden Fleece Maibock"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""As spring emerges, Golden Fleece Maibock captures center stage. This fine lager is a pleasurable reward for enduring the doldrums of Erie Pennsylvania’s harsh Lake-Effect ice and snowstorms. Celebrate the transition into spring! Golden Fleece Maibock’s deep golden color leads into a sweet malty flavor with a light hop finish. Maibock says, “RAM IT” to winter with 8.5% alcohol by volume – just enough to take the chill off your day."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,5,1
+hops_haven_brew_haus-maslifter_oktoberfest,0,0,244735148033,"{""name"":""Maslifter Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_haven_brew_haus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,3,1
+aass_brewery-genuine_pilsner,0,0,244378894336,"{""name"":""Genuine Pilsner"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aass_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Aass Genuine Pilsner is a premium \""lager\"" produced in accordance with the \""Purity law\"". The malted barely is a pilsnermalt produced in the Sandinavian countries. We use the very best of hops known under the name as Sazer and Hallertau, and the liquid is pure Norwegian mountain water.\r\n\r\nThe pilsner is largered at cool temperatures, and it is allowed to mature for as long at 3 months before bottling. \r\n\r\nThe beer is sold in a caracteristic nice- looking green bottel containing 11.2 fl. oz or 330 ml."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,55,1
+brouwerij_verhaeghe-vichtenaar,0,0,244496531458,"{""name"":""Vichtenaar"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_verhaeghe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+avery_brewing_company,0,0,244360740864,"{""name"":""Avery Brewing Company"",""city"":""Boulder"",""state"":""Colorado"",""code"":""80303"",""country"":""United States"",""phone"":""1-877-844-5679"",""website"":""http://www.averybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Established in 1993, Avery Brewing Co. is a family owned and operated micro-brewery dedicated to brewing the finest quality English and Belgian style ales.. From humble beginnings, brewing 800 barrels of three different beers in 1994, we have progressed to brewing 13,000 barrels of twenty different beers in 2007. We attribute this success to beer drinkers gravitating to beers with more interesting flavor profiles. The unique flavor complexity of Avery beers occurs through a combination of sparing no expense with regard to ingredients and our hopping methods. Sparing no expense means using lots of specialty malts, imported hops, such as Styrian Goldings, and imported Belgian candy sugar."",""address"":[""5763 Arapahoe Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.0166,""lon"":-105.219}}",1,10,1
+barley_creek_brewing-old_99_barley_wine,0,0,244361330690,"{""name"":""Old '99 Barley Wine"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""First brewed in 1998 to be served on our fifth anniversary (December 15, 1999), this beer just gets better every year. And, every year around our anniversary, we brew a new vintage. With an original gravity of 1099, this Barley Wine is dark and sweet, and is served in a snifter like an after-dinner drink. You'll want to savor it slowly."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,12,1
+lafayette_brewing,0,0,244734558210,"{""name"":""Lafayette Brewing"",""city"":""Lafayette"",""state"":""Indiana"",""code"":""47901"",""country"":""United States"",""phone"":""1-765-742-2591"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""622 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.4194,""lon"":-86.89}}",1,1,1
+appalachian_brewing_company-anniversary_maibock,0,0,244379877377,"{""name"":""Anniversary Maibock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Maibock style was traditionally produced in the winter and released in early May to celebrate the coming of Spring. This malty lager is deep golden in color and medium in body. The finish holds a bold sweetness that is balanced by a subtle hop flavor and aroma. \r\n\r\nWe will be releasing this beer every spring in celebration of our Anniversary."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,58,1
+brewery_de_troch-chapeau_tropical_lambic,0,0,244477984769,"{""name"":""Chapeau Tropical Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_de_troch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,11,1
+midnight_sun_brewing_co-panty_peeler_tripel,0,0,244875722753,"{""name"":""Panty Peeler Tripel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Free spirited Panty Peeler pours rambunctiously into your glass, releasing its engaging aroma. Curacao (bitter) orange peel and coriander create a beautiful yet bolder tripel by infusing color, citrus and spice. Belgian yeast adds playful character. Bottle conditioning assures a perfectly heady experience.\r\n\r\nBrewed as a Belgian tripel but with American boldness, Panty Peeler is delicious yet spirited. Originally named Extreme Polar White Bier, it got nicknamed \""Panty Peeler\"" along the way. Then we translated it to French for a while: E'pluche-culotte. Now we're back to calling it Panty Peeler and we've kicked up the coriander and orange peel to represent its original design.\r\n\r\nAvailability:\r\nAK - 22-oz bottles (year-round) and draft (on occasion)\r\nOR - 22-oz bottles (year-round)"",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,46,1
+labatt_ontario_breweries-labatt_crystal,0,0,244750614530,"{""name"":""Labatt Crystal"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Labatt Crystal was introduced to Ontario in the late 1800s as one of the first lagers brewed by Labatt. World-renowned Saaz hops are used to give this beer a clean, almost sweet taste which nicely balances the fuller body, higher bitterness and richer taste typically associated with traditional lagers."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,40,1
+victory_brewing-v_saison,0,0,245746696192,"{""name"":""V-Saison"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our latest release in the V Series of bottle conditioned, Belgian-inspired ales is heady with an earthy, aromatic hop start. Involving hops from the Czech Republic, Germany and England, this flavorful ale slides into flavors of honey and mildly tart fruit. Leaving a refreshing impression of  dryness, this is a quenching, invigorating ale, despite it substantial strength  at 7.5% abv."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,20,1
+cervecera_jerome-rubia,0,0,244476936195,"{""name"":""Rubia"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_jerome"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+egan_brewing-cow_palace_scotch_ale_2000,0,0,244609253376,"{""name"":""Cow Palace Scotch Ale 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,7,1
+brauerei_hrlimann,0,0,244479361025,"{""name"":""Brauerei Hrlimann"",""city"":""Zrich"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-01-/-288-26-26"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brandschenkestrasse 150""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.3642,""lon"":8.5245}}",1,14,1
+barley_creek_brewing,0,0,244380401664,"{""name"":""Barley Creek Brewing"",""city"":""Tannersville"",""state"":""Pennsylvania"",""code"":""18372"",""country"":""United States"",""phone"":""1-570-629-9399"",""website"":""http://www.barleycreek.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Located in Tannersville, right off route 80's exit 299 in between the Crossings Outlet Stores and Camelback Ski area (Camelbeach Water Park, Barley Creek is the Pocono Mountains' Original Brewpub and Restaurant, where you can always find great food, freshly brewed beer, a comfortable atmosphere, friendly people, and a unique place to kick back, relax and have a great time. Bring your friends, bring your family, bring your friends' families. We are open every day at 11:01am, and serve dinner till about 10pm. On Friday and Saturday we are serving dinner till about 11:00pm. The bar stays open a little longer (so you can finish your fun if you ordered food just before the kitchen closed) Cheers!"",""address"":[""RR 1 Box 185""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.0523,""lon"":-75.3354}}",1,59,1
+gottberg_brew_pub-toil_trubbel_dubbel,0,0,244607287297,"{""name"":""Toil & Trubbel Dubbel"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+hoffbrau_steaks_brewery_1-oktoberfest,0,0,244753629185,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,48,1
+hapa_s_brew_haus_and_restaurant-moonset_lager,0,0,244734164993,"{""name"":""Moonset Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+c_b_potts_of_cheyenne-big_horn_hefeweizen,0,0,244498038785,"{""name"":""Big Horn Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,56,1
+baltika_breweries-baltika_6,0,0,244362969090,"{""name"":""Baltika 6"",""abv"":7.0,""ibu"":20.0,""srm"":30.0,""upc"":2147483647,""type"":""beer"",""brewery_id"":""baltika_breweries"",""updated"":""2011-02-15 20:00:29"",""description"":""appearance:  deep, dark brown to black, deep tan head\nsmell/taste: sweet, malty, roasted coffee, molasses\nfull-bodied, smooth, minimal carbonation \n"",""style"":""Baltic-Style Porter"",""category"":""Other Lager""}",1,17,1
+brauerei_gbr_maisel_kg-maisel_s_weisse_kristall,0,0,244490108928,"{""name"":""Maisel's Weisse Kristall"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_gbr_maisel_kg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,39,1
+dick_s_brewing-cream_stout,0,0,244607746048,"{""name"":""Cream Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,4,1
+saxer_brewing,0,0,244990083073,"{""name"":""Saxer Brewing"",""city"":""Lake Oswego"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.4207,""lon"":-122.671}}",1,22,1
+flat_earth_brewing_company-flat_earth_belgian_style_pale_ale,0,0,244608991233,"{""name"":""Flat Earth Belgian-style Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flat_earth_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,6,1
+michigan_brewing-high_seas_ipa,0,0,244873822209,"{""name"":""High Seas IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our interpretation of a legendary style ale is not for the timid. Assertively hoppy and dangerously seductive. A skillful blend of three premium barley malts with generous amounts of Northern Brewer and Cascade Hops creates a special ale to satisfy even the most demanding palate."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,42,1
+amherst_brewing_company-heather_ale,0,0,244362772481,"{""name"":""Heather Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""2003 Silver medal winner herb and spice catagory Great American Beer Fest, made without hops, 100% heather flowers giving it a flowery aroma, subtle sweetness, and crisp, clean finish."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,16,1
+carmel_brewing-amber_ale,0,0,244480016384,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carmel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,15,1
+brasserie_de_l_abbaye_des_rocs-ambree,0,0,244361854978,"{""name"":""Ambree"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+grolsche_bierbrouwerij-grolsch_premium_weizen,0,0,244750811136,"{""name"":""Grolsch Premium Weizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grolsche_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""Grolsch Premium Weizen is the main wheat beer made by Grolsch.\r\nIt is made according to the German Reinheitsgebot (\""German Beer Purity Law\""), meaning that it is made exclusively with (wheat)malt, water, hoppes and barley."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,41,1
+pinehurst_village_brewery-double_eagle_scotch_ale,0,0,244999716865,"{""name"":""Double Eagle Scotch Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pinehurst_village_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+brouwerij_lindemans,0,0,244489650178,"{""name"":""Brouwerij Lindemans"",""city"":""Vlezenbeek"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-025-69-03-90"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lenniksebaan 257""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.818,""lon"":4.2307}}",1,38,1
+sacramento_brewing_company-brewhouse_lager,0,0,244989624323,"{""name"":""Brewhouse Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sacramento_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A light all malt lager with delicate hop finish."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+sprecher_brewing-hefe_weiss,0,0,245108047872,"{""name"":""Hefe Weiss"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This coarse-filtered wheat ale is fermented with a German yeast culture for a refreshingly light spiciness and hints of citrus fruit. A cloudy appearance and an immense creamy head are characteristic of this lightly hopped Bavarian Brew."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,23,1
+eder_heylands,0,0,244610105346,"{""name"":""Eder & Heylands"",""city"":""Großostheim"",""state"":""Bavaria"",""code"":""63762"",""country"":""Germany"",""phone"":""+49 6026 5090"",""website"":""http://www.eder-heylands.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Eder & HeylandS is a privately owned brewery in the north-western part of Bavaria (about 50 km east of Frankfurt). The brewery was founded in 1872 and is ever since managed by the Eder's family."",""address"":[""Aschaffenburger Straße 3-5""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.9211,""lon"":9.0715}}",1,9,1
+brasserie_brouwerij_cantillon-gueuze_bio_organic_gueuze,0,0,244370833408,"{""name"":""Gueuze Bio / Organic Gueuze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,33,1
+kirin_brewery_company_ltd,0,0,244751990785,"{""name"":""Kirin Brewery Company, Ltd"",""city"":"""",""state"":"""",""code"":"""",""country"":""Japan"",""phone"":"""",""website"":""http://www.kirin.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,44,1
+midnight_sun_brewing_co-rondy_brew_2009,0,0,244874346498,"{""name"":""Rondy Brew 2009"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""RondyBrew 2009 is a rendezvous of playful pale malts and feisty American hops, designed to exhilarate your winter-weary soul. This copper-colored ale delivers citrusy and refreshing hop aroma and flavor.\r\n\r\nThis year’s label features Rondy’s hottest event: The Running of the Reindeer. If you’re suffering from cabin fever, get out and run with the herd. But ready, set, RUN because this beer is only available for a limited time.\r\n\r\nRondyBrew adds refreshment and celebration to the festive fare and entertaining events enjoyed during Anchorage’s Fur Rondy Festival."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+bullfrog_brewery,0,0,244485718017,"{""name"":""Bullfrog Brewery"",""city"":""Williamsport"",""state"":""Pennsylvania"",""code"":""17701"",""country"":""United States"",""phone"":""570.326.4700"",""website"":""http://www.bullfrogbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Bullfrog Brewery, located in downtown Williamsport, Pa, is an award-winning microbrewery / restaurant and has quickly grown into one of the largest attractions in Northcentral Pennsylvania. Established in August, 1996, our goal is to provide a pleasant atmosphere and the best in food and beer. The Bullfrog Brewery, in competition with thousands of craft-brewed beers from different breweries around the world, recently won a World Beer Cup Gold Medal and Silver Medal. Along with our award-winning brews we offer live entertainment, ranging from jazz to Celtic music and everything in between. So come on in, explore the site and then make plans to stop in and enjoy the best brewery in all of Northcentral Pennsylvania."",""address"":[""231 W. Fourth Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2404,""lon"":-77.0057}}",1,28,1
+faultline_brewing_1-india_pale_ale_ipa,0,0,244608401408,"{""name"":""India Pale Ale (IPA)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,5,1
+jack_s_brewing-penalty_shot_porter,0,0,244735148034,"{""name"":""Penalty Shot Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+alaus_darykla_kalnapilis-export,0,0,244378894337,"{""name"":""Export"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaus_darykla_kalnapilis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+burton_bridge_brewery-thomas_sykes_barleywine,0,0,244496531459,"{""name"":""Thomas Sykes Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burton_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+backcountry_brewery,0,0,244360740865,"{""name"":""Backcountry Brewery"",""city"":""Frisco"",""state"":""Colorado"",""code"":""80443"",""country"":""United States"",""phone"":""1-970-668-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""720 Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.5765,""lon"":-106.094}}",1,10,1
+biddy_early_brewery-red_biddy_real_biddy,0,0,244361396224,"{""name"":""Red Biddy / Real Biddy"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""biddy_early_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+lakefront_brewery-cattail_ale,0,0,244734623744,"{""name"":""Cattail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+arcadia_brewing-anglers_ale,0,0,244379877378,"{""name"":""Anglers Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+bridgeport_brewing-beer_town_brown,0,0,244478050304,"{""name"":""Beer Town Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+minhas_craft_brewery-berghoff_hefeweizen,0,0,244875788288,"{""name"":""Berghoff Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minhas_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,46,1
+lobkowiczk_pivovar_vysok_chlumec,0,0,244872839168,"{""name"":""Lobkowiczk Pivovar Vysok Chlumec"",""city"":""Vysok Chlumec"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-318-865-321"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""CZ-262 52 Vysok Chlumec""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.6206,""lon"":14.3837}}",1,40,1
+viking_brewing,0,0,245746696193,"{""name"":""Viking Brewing"",""city"":""Dallas"",""state"":""Wisconsin"",""code"":""54733"",""country"":""United States"",""phone"":""1-715-837-1824"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""234 Dallas Street West""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.2585,""lon"":-91.8181}}",1,20,1
+chelsea_brewing_company-henry_hudson_ipa,0,0,244477001728,"{""name"":""Henry Hudson IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chelsea_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+eldridge_pope_and_co-royal_oak_pale_ale,0,0,244609253377,"{""name"":""Royal Oak Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eldridge_pope_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+brauerei_locher_ag,0,0,244479361026,"{""name"":""Brauerei Locher AG"",""city"":""Appenzell"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-071-/-787-13-18"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Alte Eggerstandenstrasse 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.3301,""lon"":9.4135}}",1,14,1
+barley_s_brewing_1-pale_ale,0,0,244380467200,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_s_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+great_divide_brewing-hot_shot_esb,0,0,244734623744,"{""name"":""Hot Shot ESB"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""HotShot ESB is an easy-drinking and remarkably smooth Extra Special Bitter, brewed in the classic-English style. More assertively hopped than ordinary bitters, light copper-colored HotShot showcases clean hop flavors, balanced by its slightly fruity nose and light-caramel malt character.\r\n\r\nWhile HotShot is one of Great Divide’s easiest-drinking and lower alcohol beers, its complex flavor profile makes it the perfect session beer for craft beer lovers."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,2,1
+hoffbrau_steaks_brewery_2-yellow_rose_cream_ale,0,0,244753694720,"{""name"":""Yellow Rose Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+hereford_hops_steakhouse_and_brewpub_3-lichthouse_lager,0,0,244734230528,"{""name"":""Lichthouse Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+c_b_potts_of_cheyenne-big_horn_wyoming_blonde,0,0,244498038786,"{""name"":""Big Horn Wyoming Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+barley_creek_brewing-iron_arm_belgian_style_wheat,0,0,244363034624,"{""name"":""Iron Arm Belgian Style Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian-style summer favorite. Malted wheat, Pale, Munich and Cara Vienna malt, then moderately hopped with Saaz and a double dose of Hallertau. Served unfiltered with an orange wedge, this is fun in a glass."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,17,1
+brauerei_und_altbierkche_pinkus_mller-jubilate_special_reserve_anniversary_ale,0,0,244490174464,"{""name"":""Jubilate Special Reserve Anniversary Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_und_altbierkche_pinkus_mller"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+dogfish_head_craft_brewery-90_minute_ipa,0,0,244607746049,"{""name"":""90 Minute IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Esquire Magazine calls our 90 Minute .IPA., \""perhaps the best I.P.A. in America.\"" An Imperial I.P.A. brewed to be savored from a snifter. A big beer with a great malt backbone that stands up to the extreme hopping rate. This beer is an excellent candidate for use with Randall The Enamel Animal!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,4,1
+seabright_brewery-amber,0,0,244990083074,"{""name"":""Amber"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+george_gale_company-millennium_brew,0,0,244609056768,"{""name"":""Millennium Brew"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""george_gale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+alaskan_brewing-alaskan_pale,0,0,244378632192,"{""name"":""Alaskan Pale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Golden Ale. A blonde, lighter bodied beer with a floral aroma and a crisp, hoppy finish that's not bitter. The hop character of Alaskan Pale is due to dry hopping by hand during the fermentation process.\r\n\r\nA clean, softly malted body with a hint of citrus overtones, followed by a hop-accented dry, crisp finish.\r\n\r\nAlaskan Pale is made from glacier-fed water and a generous blend or European and Pacific Northwest hop varieties and premium two-row pale and specialty malts. Our water originates in the 1,500 square-mile Juneau Ice Field and the more than 90 inches or rainfall we receive each year."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,54,1
+mickey_finn_s_brewery-imperial_delusion,0,0,244873887744,"{""name"":""Imperial Delusion"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+anchor_brewing-porter,0,0,244362772482,"{""name"":""Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,16,1
+cigar_city_brewing-marshal_zhukov_s_imperial_stout,0,0,244480016385,"{""name"":""Marshal Zhukov's Imperial Stout"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cigar_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Russian Imperial Stout is dedicated to Gregory Zhukov. Arguably one of World War II's finest generals and a man bold enough to appreciate the rich, complex flavors of a beer brewed to fortify a body through the Russian winter. Like military geniuses, Russian Imperial Stouts reach their peak with a little age on them, so we release Marshal Zhukov's Russian Imperial Stout in sweltering August so that it will be at peak flavor come January or February.\r\n\r\nOpaque black in color, the aroma has notes of espresso, chocolate, dark sweet toffee with hints of black strap molasses. The flavor starts with an unsweetened chocolate character and supporting notes of herbal dryness from English hop varietals. It then moves into dark toffee sweetness and closes with a slap of roasty espresso. Zhukov's Imperial Stout pairs well with Mushroom Solyanka, dark chocolate, cherries and ground wars in Russia.  Enjoy, comrade."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,15,1
+brauhaus_johann_albrecht_dsseldorf-kupfer,0,0,244478902272,"{""name"":""Kupfer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_dsseldorf"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+harpoon_brewery_boston-harpoon_ufo_hefeweizen,0,0,244750811137,"{""name"":""Harpoon UFO Hefeweizen"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""From Harpoon's site:\r\n\r\n\""UFO Hefeweizen is an American unfiltered wheat beer.  Perhaps UFO’s initial sensory perception is also its most prominent: a cloudy golden color and a dense, frothy head.  The yeast, which has not been filtered out, accounts for the cloudiness of UFO.  Wheat malt tends to create a larger head than barley malt, the cereal grain most often used in brewing.  When served in a traditional wheat beer glass with a lemon, UFO presents an appealing and distinctive visual image.\r\n\r\nThe aroma has a faint but clear citrus-like character.  This is produced by the special yeast and accounts for the Bavarian tradition of serving hefeweizens with a lemon.  The lemon accentuates the yeast’s fruity, tart fragrance.  UFO has a soft mouthfeel and a refreshing, light body.  The wheat malts and subtle hopping give the beer a mild, delicate flavor.  UFO has a clean finish.  Unlike some imported hefeweizens, UFO does not have the spicy, tropical flavors typical of European-brewed style.\r\n\r\nThe overall character is a cloudy appearance with a citrus-like aroma, light body, and clean finish.  Serve with a lemon.\"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,41,1
+pinehurst_village_brewery,0,0,244999782400,"{""name"":""Pinehurst Village Brewery"",""city"":""Aberdeen"",""state"":""North Carolina"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.1315,""lon"":-79.4295}}",1,47,1
+brouwerij_sint_jozef-limburgse_witte,0,0,244489781248,"{""name"":""Limburgse Witte"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sint_jozef"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+salado_creek_brewing_company-honey_bock,0,0,244989689856,"{""name"":""Honey Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""salado_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,21,1
+stevens_point_brewery-augsburger_dark,0,0,245108047873,"{""name"":""Augsburger Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,23,1
+egan_brewing-abbot_pennings_grand_cru,0,0,244610105347,"{""name"":""Abbot Pennings Grand Cru"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+brasserie_d_achouffe-mcchouffe,0,0,244370833409,"{""name"":""McChouffe"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_achouffe"",""updated"":""2010-07-22 20:00:20"",""description"":""Description : Dark Ale, strong, spicy, lightly hoppy, with evoluting taste. Natural Beer, bottle refermented, unfiltered, not pasteurised and without any additives\r\n\r\nAlcohol : 8,5% alc./vol.\r\n\r\nOriginal gravity : 16 °Plato\r\n\r\nStorage : Store the bottles vertically in a cold place, sheltered from light. The yeast deposit can either be drunk or left according to taste\r\n\r\nServe at : 8 to 12°C (botlle)"",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,33,1
+lake_superior_brewing-old_man_winter_warmer_2002,0,0,244751990786,"{""name"":""Old Man Winter Warmer 2002"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_superior_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+midnight_sun_brewing_co-sockeye_red_ipa,0,0,244874412032,"{""name"":""Sockeye Red IPA"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+butte_creek_brewing-organic_porter,0,0,244485718018,"{""name"":""Organic Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""butte_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,28,1
+flying_fish_brewing_company-exit_16_wild_rice_double_ipa,0,0,244608401409,"{""name"":""Exit 16 - Wild Rice Double IPA"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The fourth stop on our multi-year trip to explore New Jersey takes us to one of the most maligned places in the state- the Hackensack Meadowlands. It’s the place usually identified with landfills, pipelines, mob burials (alleged) and sports teams that say they’re from New York.\r\n\r\nAlthough no longer home to forests of giant cedars and salt hay marshes teeming with aquatic life, the Meadowlands is still an amazingly diverse ecosystem providing vital animal and plant habitat. In a nod to a once common food plant here, we’ve brewed this beer with wild rice. We also used brown and white rice, as well as two malts.\r\n\r\nRice helps the beer ferment dry to better showcase the five different hops we’ve added. Lots and lots of them. We then dry-hopped this Double IPA with even more-generous additions of Chinook and Citra hops to create a nose that hints at tangerine, mango, papaya and pine."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,5,1
+john_harvard_s_brewhouse_wilmington-pale_ale,0,0,244735213568,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brewhouse_wilmington"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,3,1
+ali_i_brewing-macadamia_nut_brown,0,0,244378959872,"{""name"":""Macadamia Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ali_i_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+callahan_s_pub_and_brewery-christmas_ale,0,0,244496596992,"{""name"":""Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""callahan_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+barley_john_s_brewpub-sunny_summer_ale,0,0,244360806400,"{""name"":""Sunny Summer Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_john_s_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+bill_s_tavern_brewhouse,0,0,244361396225,"{""name"":""Bill's Tavern & Brewhouse"",""city"":""Cannon Beach"",""state"":""Oregon"",""code"":""97110"",""country"":""United States"",""phone"":""1-503-436-2202"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""188 North Hemlock""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.8981,""lon"":-123.961}}",1,12,1
+liberty_steakhouse_and_brewery-patriot_porter,0,0,244734623745,"{""name"":""Patriot Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+arcadia_brewing-starboard_stout,0,0,244379942912,"{""name"":""Starboard Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,58,1
+broad_ripple_brewing-extra_special_bitter,0,0,244478050305,"{""name"":""Extra Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+new_holland_brewing_company-red_tulip,0,0,244875788289,"{""name"":""Red Tulip"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A red ale with rich and smooth flavors of malted barley, balanced by underlying hints of dark fruit. Brewed in homage to our hometown tulip festival, Red Tulip evokes spring’s renewing spirit. Excellent with roasted pork, red-meats and dried fruit.""}",1,46,1
+magic_hat-odd_notion_spring_08,0,0,244872904704,"{""name"":""Odd Notion Spring 08"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,40,1
+walking_man_brewery,0,0,245746761728,"{""name"":""Walking Man Brewery"",""city"":""Stevenson"",""state"":""Washington"",""code"":""98648"",""country"":""United States"",""phone"":""509.427.5520"",""website"":""http://www.walkingmanbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""240 SW First Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.6922,""lon"":-121.885}}",1,20,1
+clipper_city_brewing_co,0,0,244477001729,"{""name"":""Clipper City Brewing Co."",""city"":""Baltimore"",""state"":""Maryland"",""code"":""21227"",""country"":""United States"",""phone"":""1-410-247-7822"",""website"":""http://www.ccbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""At Clipper City our mission is to bring back the local brewery, and to do it in such a way that we are more than just a fringe player, but a positive part of our area. To accomplish this mission we have created a broad portfolio of products and brands with enough diversity that we have at least one beer that can appeal to everyone. Whether your preference is for a classic American style lager beer, or a big, challenging Hop Cubed Ale, we have a something that will suit your taste. Our goal is to brew beers for people who dare to walk up to the edge of the mountain and actually jump forward.  Our beers are for those who chart a bolder course.   Our brewery is named for the famed Clipper ship - first developed and built in our home port of Baltimore. The Clipper ship is the symbol for a strong nautical and maritime heritage with a commitment to craftsmanship of the highest caliber. It captures both the hardy nature of our working class history and the romance of what lies on the seas ahead. Why be normal when you can be EXTRAARGHdinary?  We believe in bringing beer drinkers the quality and flavor of a handcrafted beer while supporting the local communities we serve."",""address"":[""4615-B Hollins Ferry Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.2308,""lon"":-76.6751}}",1,8,1
+elysian_brewery_public_house-avatar_jasmine_ipa,0,0,244609253378,"{""name"":""Avatar Jasmine IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+brimstone_brewing,0,0,244479426560,"{""name"":""Brimstone Brewing"",""city"":""Frederick"",""state"":""Maryland"",""code"":""20176"",""country"":""United States"",""phone"":""1-888-258-7434"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4607 Wedgewood Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.3628,""lon"":-77.4265}}",1,14,1
+beach_chalet_brewery-alexander_alt,0,0,244380467201,"{""name"":""Alexander Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_chalet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,59,1
+green_bay_brewing-helles_bock,0,0,244734689280,"{""name"":""Helles Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,2,1
+holsten_brauerei-edel,0,0,244753694721,"{""name"":""Edel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""holsten_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+high_point_wheat_beer_company,0,0,244734230529,"{""name"":""High Point Wheat Beer Company"",""city"":""Butler"",""state"":""New Jersey"",""code"":""7405"",""country"":""United States"",""phone"":""(973) 838-7400"",""website"":""http://www.ramsteinbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Founded in 1994, the High Point Brewing Company is the first exclusive wheat beer brewery in America. The founder and driving force of High Point is award-winning homebrewer, Greg Zaccardi. After working as a brewer in southern Germany, Greg returned to the US to open his brewery. His Ramstein beers are made with the same care and precision he learned in Germany. In fact, the wheat, barley, hops and yeast used in Ramstein are all imported directly from Bavaria."",""address"":[""22 Park Place""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.0016,""lon"":-74.3403}}",1,0,1
+capital_brewery-capital_prairie_gold,0,0,244498104320,"{""name"":""Capital Prairie Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,56,1
+beach_chalet_brewery-playland_pale_ale,0,0,244363100160,"{""name"":""Playland Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_chalet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+brauereigasthof_adler,0,0,244490174465,"{""name"":""Brauereigasthof Adler"",""city"":""Herbertingen"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7586-/-378"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ortsstrae 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.0778,""lon"":9.3996}}",1,39,1
+dragonmead_microbrewery-armageddon_grand_cru,0,0,244607811584,"{""name"":""Armageddon Grand Cru"",""abv"":11.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Grand Crus are traditionally known as \""The best beer that a brewery makes.\"" This Belgian-style quad lives up to that name and then some. Available once a year, in May to celebrate our Anniversary."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,4,1
+ship_inn_brewpub-esb,0,0,244990083075,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ship_inn_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+grand_teton_brewing_2,0,0,244736065536,"{""name"":""Grand Teton Brewing #2"",""city"":""Victor"",""state"":""Idaho"",""code"":""83455"",""country"":""United States"",""phone"":""1-208-787-9000"",""website"":""http://www.grandtetonbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""430 Old Jackson Highway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.5984,""lon"":-111.108}}",1,6,1
+anheuser_busch-sun_dog_amber_wheat,0,0,244378632193,"{""name"":""Sun Dog Amber Wheat"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Sun Dog is an unfiltered beer, with a naturally cloudy appearance and fuller texture which allows it to stand up to spicy foods like Thai noodle salads and Cuban sandwiches.  The beer is best served in a tall, wide-mouthed glass which opens up the aromas of the beer and showcases its beautiful long-lasting head of white foam."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,54,1
+minocqua_brewing_company-40_golden_lager,0,0,244873887745,"{""name"":""#40 Golden Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+appalachian_brewing_company-susquehanna_stout,0,0,244362772483,"{""name"":""Susquehanna Stout"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This representation of the classic Irish Dry Stout has a smooth roast flavor due to the use of specially roasted barley. The barley kernels are kilned at very high temperatures until they are dark brown to black in color. \r\nThe Susquehanna River is named after the Susquehannock Indians who settled in our area. This shallow river is over one mile wide in the Harrisburg area and flows from southern New York through Pennsylvania to the Chesapeake Bay."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,16,1
+commonwealth_brewing_1-famous_porter,0,0,244480016386,"{""name"":""Famous Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""commonwealth_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,15,1
+brouwerij_bavik_de_brabandere-petrus_gouden_tripel_ale,0,0,244478967808,"{""name"":""Petrus Gouden Tripel Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+heller_bru_trum,0,0,244750811138,"{""name"":""Heller Bru Trum"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-56060"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dominikanerstrae 6""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.892,""lon"":10.8853}}",1,41,1
+portsmouth_brewery-5_c_s_ipa,0,0,244999782401,"{""name"":""5 C's IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""portsmouth_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our interpretation of a West Coast IPA is golden, medium-bodied ale that is very hop forward.  The use of Cascade, Chinook, Columbus, Centennial and Crystal hops makes this beer a hophead’s dream."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+brouwerij_van_den_bossche-buffalo_belgian_stout,0,0,244489781249,"{""name"":""Buffalo Belgian Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_den_bossche"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+schloss_eggenberg-doppelbock_dunkel,0,0,244989689857,"{""name"":""Doppelbock Dunkel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schloss_eggenberg"",""updated"":""2010-07-22 20:00:20"",""description"":""DoppelBock Dunkel has a pleasant full and creamy body, with a cofeeish aroma. Nicely warming with toffeelike malty sweetness, balanced by a hoppy-bitterness in the finish."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,21,1
+storm_brewing-precipitation_pilsner,0,0,245108047874,"{""name"":""Precipitation Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""storm_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A true North German Style Pilsner. Light in body and packed full of Czech Saaz hops. The distinctive Pilsner aroma and dry, refreshing taste make a great accompaniment to a hot Vanouver day."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,23,1
+egan_brewing-wilsteraner_altbier,0,0,244610170880,"{""name"":""Wilsteraner Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,9,1
+brasserie_de_l_abbaye_de_scourmont_trappistes,0,0,244370833410,"{""name"":""Brasserie de l'Abbaye de Scourmont (Trappistes)"",""city"":""Chimay-Forges"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-060-21-30-63"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Route de Rond Point 294""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.9842,""lon"":4.3111}}",1,33,1
+lion_nathan_australia_hunter_street-hahn_special_vintage_2000,0,0,244874608640,"{""name"":""Hahn Special Vintage 2000"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lion_nathan_australia_hunter_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,44,1
+mill_creek_brewpub-penitentiary_porter,0,0,244874412033,"{""name"":""Penitentiary Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mill_creek_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,43,1
+carver_brewing_co-colorado_trail_nut_brown_ale,0,0,244485718019,"{""name"":""Colorado Trail Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carver_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The slightly roasted flavor and nutty palate with a hint of hops make this beer subtle and drinkable."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,28,1
+founders_brewing-double_trouble_imperial_ipa,0,0,244608466944,"{""name"":""Double Trouble Imperial IPA"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,5,1
+jolly_pumpkin_artisan_ales-oro_de_calabaza,0,0,244735213569,"{""name"":""Oro de Calabaza"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the Franco-Belgian tradition of strong golden ales.  Spicy and peppery with a gentle hop bouquet and the beguiling influence of wild yeast."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,3,1
+alpine_beer_company,0,0,244378959873,"{""name"":""Alpine Beer Company"",""city"":""Alpine"",""state"":""California"",""code"":""91901"",""country"":""United States"",""phone"":""1-619-445-2337"",""website"":""http://www.alpinebeerco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2351 Alpine Boulevard""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":32.8355,""lon"":-116.765}}",1,55,1
+captain_lawrence_brewing_company-sun_block_belgian_style_witte,0,0,244496596993,"{""name"":""Sun Block - Belgian Style Witte"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer was created as a summer thirst quencher, because we all know how hot and humid it can get in New York during the summer. We brewed this beer using both coriander and orange peel in the boil to increase both the aroma and flavor of this beer. Make sure you don’t get burned this summer, drink your Sun Block."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,52,1
+beach_brewing,0,0,244360806401,"{""name"":""Beach Brewing"",""city"":""Orlando"",""state"":""Florida"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":28.5383,""lon"":-81.3792}}",1,10,1
+birra_forst,0,0,244361396226,"{""name"":""Birra Forst"",""city"":""Lagundo / Algund"",""state"":"""",""code"":""0"",""country"":""Italy"",""phone"":""39-0473-260111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Via Val Venosta, 8""]}",1,12,1
+lwenbru_zrich,0,0,244857438208,"{""name"":""Lwenbru Zrich"",""city"":""Zrich"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brandschenkestrasse 150""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.3642,""lon"":8.5245}}",1,1,1
+arthur_guinness_son-guinness_extra_stout,0,0,244379942913,"{""name"":""Guinness Extra Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arthur_guinness_son"",""updated"":""2010-07-22 20:00:20"",""description"":""GUINNESS® Extra Stout is steeped in heritage - a whole costume drama in a bottle. It"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,58,1
+brouwerij_alken_maes-grimbergen_blonde,0,0,244478050306,"{""name"":""Grimbergen Blonde"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_alken_maes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+nordsj_grdsbryggeri,0,0,244875788290,"{""name"":""Nordsj Grdsbryggeri"",""city"":""Motala"",""state"":"""",""code"":"""",""country"":""Sweden"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":58.5366,""lon"":15.0373}}",1,46,1
+manayunk_brewery_and_restaurant-schuylkill_punch,0,0,244872904705,"{""name"":""Schuylkill Punch"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""Ruby colored ale fermented with over 500 pounds of real black and red raspberries for a distinct berry aroma and a tart, sweet flavor. This beer is gently filtered to preserve its delicate profile and is made with both Belgian Ale Yeast and our Proprietary Lager Strain."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,40,1
+wild_goose_brewery_llc,0,0,245746761729,"{""name"":""Wild Goose Brewery, LLC"",""city"":""Fredrick"",""state"":""Maryland"",""code"":""21703"",""country"":""United States"",""phone"":""(301) 694-7899"",""website"":""http://www.wildgoosebrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4607 Wedgewood Blvd.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.3628,""lon"":-77.4265}}",1,20,1
+crabby_larry_s_brewpub_steak_crab_house-calico_jack_amber_ale,0,0,244477067264,"{""name"":""Calico Jack Amber Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, malty beer made with classic American hops for a full and complex flavor. Very smooth in aroma and palate. The caramel overtones leave a nice finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+erie_brewing_company-fallenbock,0,0,244609318912,"{""name"":""Fallenbock"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""History states that the first Oktoberfest was on October 12, 1810: For the commemoration of the marriage between Crown Prince Ludwig and Princess Therese of Saxe-Hildburghausen. Keeping up with Erie Brewing’s German brewing influence, our brewer creates Fallenbock, a classic Oktoberfest lager that is a harmonious marriage of classic malts and hops that has a wonderful clean and crisp flavor to celebrate Autumn and Oktoberfest."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,7,1
+brouwerij_boon,0,0,244479426561,"{""name"":""Brouwerij Boon"",""city"":""Lembeek"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-2-356-66-44"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Fonteinstraat 65""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7123,""lon"":4.2197}}",1,14,1
+beach_chalet_brewery,0,0,244380467202,"{""name"":""Beach Chalet Brewery"",""city"":""San Francisco"",""state"":""California"",""code"":""94121"",""country"":""United States"",""phone"":""1-415-386-8439"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1000 Great Highway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.7694,""lon"":-122.51}}",1,59,1
+grumpy_troll_restaurant_and_brewery,0,0,244734689281,"{""name"":""Grumpy Troll Restaurant and Brewery"",""city"":""Mount Horeb"",""state"":""Wisconsin"",""code"":""53572"",""country"":""United States"",""phone"":""1-608-437-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""105 South Second Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0081,""lon"":-89.7383}}",1,2,1
+hook_norton_brewery-best_bitter,0,0,244753694722,"{""name"":""Best Bitter"",""abv"":3.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_norton_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+hofmark_brauerei,0,0,244734230530,"{""name"":""Hofmark Brauerei"",""city"":""Cham"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9971-/-3301"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hofmarkstrae 15""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.1672,""lon"":12.6399}}",1,0,1
+carlsberg_bryggerierne-elephant,0,0,244498104321,"{""name"":""Elephant"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlsberg_bryggerierne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,56,1
+bell_s_brewery_inc-bell_s_batch_9000,0,0,244363100161,"{""name"":""Bell's Batch 9000"",""abv"":12.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Black, dense, and rich, this is a great ale for the cellar.\"" This big brew is made with molasses and brewer's licorice."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,17,1
+brewdog_ltd-rip_tide,0,0,244490174466,"{""name"":""Rip Tide"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong, silky smooth imperial stout with a deep, dark ruby appearance. Mocha, bitter chocolate, liquorice and dark cherry flavours prevail, before the balanced, warming and encapsulating finish.\r\n\r\nA contemporary Scottish take on an age old Russian classic style originally brewed for the Tsars. Our interpretation brings together hops from both sides of the Atlantic, amazing flavoured malts and dark sugars.\r\n\r\nLike the original BrewDog, this beer would never bite you but would much rather give you a lick on the face. Look Out!\r\n\r\nServing Suggestion: Enjoy with an air of aristocratic nonchalance"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,39,1
+elysian_brewery_public_house-cyclops_barleywine,0,0,244607811585,"{""name"":""Cyclops Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+sierra_nevada_brewing_co-bigfoot_1999,0,0,244990148608,"{""name"":""Bigfoot 1999"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+green_bay_brewing-marzenbier,0,0,244736065537,"{""name"":""Marzenbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,6,1
+asahi_breweries-kuronama,0,0,244378632194,"{""name"":""Kuronama"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""asahi_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,54,1
+mountain_sun_pub_brewery-altmans_alt,0,0,244873887746,"{""name"":""Altmans Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mountain_sun_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,42,1
+arcadia_brewing-cocoa_loco,0,0,244362838016,"{""name"":""Cocoa Loco"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""arcadia_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Great chocolate stoudt."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,16,1
+copper_dragon_brewing,0,0,244480081920,"{""name"":""Copper Dragon Brewing"",""city"":""Carbondale"",""state"":""Illinois"",""code"":""62901"",""country"":""United States"",""phone"":""1-618-549-3348"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.7273,""lon"":-89.2168}}",1,15,1
+brouwerij_bavik_de_brabandere-wittekerke,0,0,244478967809,"{""name"":""Wittekerke"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+holsten_brauerei-astra_urtyp,0,0,244750811139,"{""name"":""Astra Urtyp"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""holsten_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+prescott_brewing_company-liquid_amber,0,0,244999847936,"{""name"":""Liquid Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,47,1
+abbaye_de_leffe,0,0,244369195008,"{""name"":""Abbaye de Leffe"",""city"":""Dinant"",""state"":""Namur"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dinant""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.2606,""lon"":4.9122}}",1,31,1
+brown_street_brewery,0,0,244489781250,"{""name"":""Brown Street Brewery"",""city"":""Rhinelander"",""state"":""Wisconsin"",""code"":""54501"",""country"":""United States"",""phone"":""1-715-369-2100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""16 North Brown Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.638,""lon"":-89.4127}}",1,38,1
+slab_city_brewing-milkhouse_stout,0,0,244989689858,"{""name"":""Milkhouse Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+stout_brothers_public_house-underground_ipa,0,0,245108113408,"{""name"":""Underground IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stout_brothers_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+erie_brewing_company-misery_bay_ipa,0,0,244610170881,"{""name"":""Misery Bay IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The view from Oliver Perry Monument across Lake Erie’s historic Misery Bay provides a constant reminder of the hardships endured during the Battle of Lake Erie. Misery Bay IPA is brewed as a tribute to Misery Bay and Graveyard Pond, final resting place for many brave sailors and soldiers. Misery Bay IPA offers a complex malt profile loaded with American hops at 75 IBU’s, and finishes at 6.5 % alcohol by volume."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,9,1
+brasserie_de_la_senne,0,0,244370833411,"{""name"":""Brasserie de la Senne"",""city"":""Sint-Pieters-Leeuw"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-0497-/-93.23.75"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Victor Nonnemansstraat 40a""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7853,""lon"":4.2437}}",1,33,1
+little_apple_brewing-prairie_pale,0,0,244874608641,"{""name"":""Prairie Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_apple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+millstream_brewing-maifest,0,0,244874412034,"{""name"":""Maifest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millstream_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,43,1
+cedar_brewing-helles_honey_bock,0,0,244485783552,"{""name"":""Helles Honey Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,28,1
+goose_island_beer_company_clybourn-honker_s_ale,0,0,244608466945,"{""name"":""Honker's Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""Honker’s Ale combines a spicy hop aroma with a rich malt middle to create a perfectly balanced ale that is immensely drinkable. A smooth, drinkable English Bitter for those looking for more from their beer."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,5,1
+krogh_s_restaurant_and_brewpub-old_krogh_oatmeal_stout,0,0,244735213570,"{""name"":""Old Krogh Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,3,1
+anheuser_busch-bud_ice_light,0,0,244379025408,"{""name"":""Bud Ice Light"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Introduced in 1994."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+cedar_brewing-summer_alt,0,0,244496662528,"{""name"":""Summer Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,52,1
+bierbrouwerij_bavaria-hollandia,0,0,244360806402,"{""name"":""Hollandia"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_bavaria"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+bj_s_restaurant_and_brewery-bj_s_annual_grand_cru,0,0,244361396227,"{""name"":""BJ's Annual Grand Cru"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,12,1
+magic_hat-jinx,0,0,244857438209,"{""name"":""Jinx"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""An ale for dancing bonfires and falling leaves.\r\nJinx prepares the bones for snow. It's a full bodied strong ale the color of maple's golden leaves in the season's fading sun.  Finished with a touch of peat-smoked whiskey malt, Jinx offers sweet, toasty aromas of caramel, tea, and smoke.  Deep flavors of dark candy sugar and warming alcohol notes are balanced by a spicy hop bitterness."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,1,1
+ballast_point_brewing-sculpin_india_pale_ale,0,0,244380008448,"{""name"":""Sculpin India Pale Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Sculpin IPA is a testament to our humble beginnings as Home Brew Mart. Founded in 1992, the Mart continues to be a catalyst for the San Diego brewing scene, setting the trend for handcrafted ales. Inspired by our customers, employees and brewers, the Sculpin IPA is bright with aromas of apricot, peach, mango and lemon. Its lighter body also brings out the crispness of the hops. This delicious Ballast Point Ale took a Bronze Medal at the 2007 Great American Beer Festival in the Pro Am category. The Sculpin fish has poisonous spikes on its fins that can give a strong sting. Ironically, the meat from a Sculpin is considered some of the most tasty. Something that has a sting but tastes great, sounds like a Ballast Point India Pale Ale."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,58,1
+brouwerij_strubbe,0,0,244478115840,"{""name"":""Brouwerij Strubbe"",""city"":""Ichtegem"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-051-58-81-16"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Markt 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.0923,""lon"":3.01}}",1,11,1
+oggi_s_pizza_and_brewing_vista-irish_stout,0,0,244875788291,"{""name"":""Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,46,1
+marquette_harbor_brewery_and_restaurant-amber_ale,0,0,244872904706,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marquette_harbor_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,40,1
+wild_river_brewing_and_pizza_cave_junction-nut_brown_ale,0,0,245746761730,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_river_brewing_and_pizza_cave_junction"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,20,1
+cucapa_brewing_company-cucapa_honey_ale,0,0,244477067265,"{""name"":""Cucapa Honey Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cucapa_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Craft Amber Ale, brewed using Honey from Northern Mexico."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+erie_brewing_company-mad_anthony_s_ale,0,0,244609318913,"{""name"":""Mad Anthony's Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Anthony Wayne adopted a military career at the outset of the American Revolutionary War, where his military exploits and fiery personality quickly earned him a promotion to the rank of brigadier general and the sobriquet of \""Mad Anthony\"". Erie Brewing Co’s Classic American Pale Ale features a balanced malt and hop flavor, which we feel the Nutty General would approve of despite his revolutionary tendencies."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+brouwerij_de_block-satan_red,0,0,244479426562,"{""name"":""Satan Red"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_block"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+blue_point_brewing,0,0,244380532736,"{""name"":""Blue Point Brewing"",""city"":""Patchogue"",""state"":""New York"",""code"":""11772"",""country"":""United States"",""phone"":""1-631-475-6944"",""website"":""http://www.bluepointbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""161 River Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.7591,""lon"":-73.0215}}",1,59,1
+harpoon_brewery_boston-harpoon_munich_dark,0,0,244734689282,"{""name"":""Harpoon Munich Dark"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""Harpoon Munich Dark is a blend of dark malts that creates a deeper hue than some other beers brewed in this style. The grains which create a malty chocolate-like flavor also add a warm malty nose that mingles with the subtle hop aroma. This medium bodied beer is balanced quite well with a moderately bitter hop finish."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,2,1
+hoppy_brewing_company-hoppy_face_amber_ale,0,0,244753760256,"{""name"":""Hoppy Face Amber Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppy_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Is an award-winning, traditional, all-natural style of beer that falls under the category of a \""West Coast\"" India Pale Ale (IPA). Characterized by its high hop content, high alcohol content and deep amber color, Hoppy Face™ is brewed using water with a high mineral content. Using only the finest 2-row malted barley and great northwestern grown hops, this combination results in a clean, crisp, well-balanced beer. As usual, no artificial preservatives have been added to our beer during and/or after the brewing process...\r\nIt will put a smile on your face!!!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+hoppin_frog_brewery-hop_dam_triple_ipa,0,0,244734230531,"{""name"":""Hop Dam Triple IPA"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Some say “bigger is better!”. At Hoppin’ Frog, we built a massive hop dam to handle the enormous amount of hops added to this colossal American Triple I.P.A. An intense experience of citrus and piney hop character is complimented by layers of rich malt flavor. Behold our new standard for hoppy beers."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,0,1
+cheshire_cat_brewery-ipa,0,0,244498104322,"{""name"":""IPA"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cheshire_cat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,56,1
+bierbrouwerij_de_koningshoeven,0,0,244363100162,"{""name"":""Bierbrouwerij De Koningshoeven"",""city"":""Berkel-Enschot"",""state"":"""",""code"":"""",""country"":""Netherlands"",""phone"":""31-013-5358147"",""website"":""http://www.latrappe.nl/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Eindhovenseweg 3""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.544,""lon"":5.1285}}",1,17,1
+brouwerij_het_anker,0,0,244490240000,"{""name"":""Brouwerij Het Anker"",""city"":""Mechelen"",""state"":""Antwerpen"",""code"":"""",""country"":""Belgium"",""phone"":""32-015-28-71-47"",""website"":""http://www.hetanker.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Guido Gezellelaan 49""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.0325,""lon"":4.473}}",1,39,1
+elysian_brewery_public_house-the_wise_esb,0,0,244607877120,"{""name"":""The Wise ESB"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,4,1
+silver_gulch_brewing_company,0,0,244990148609,"{""name"":""Silver Gulch Brewing Company"",""city"":""Fox"",""state"":""Alaska"",""code"":""99708"",""country"":""United States"",""phone"":""(907) 452-2739"",""website"":""http://www.ptialaska.net/~gbrady/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Silver Gulch Brewing and Bottling Co. has been in operation since February 1998 in the small mining community of Fox, Alaska, located about 10 miles north of Fairbanks on the Steese Highway. Silver Gulch Brewing grew from brewmaster Glenn Brady's home-brewing efforts in 5-gallon batches to its current capacity of 24-barrel (750 gallon) batches."",""address"":[""2195 Old Steese Highway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":64.9583,""lon"":-147.622}}",1,22,1
+heller_bru_trum-aecht_schlenkerla_rauchbier_marzen,0,0,244736131072,"{""name"":""Aecht Schlenkerla Rauchbier Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heller_bru_trum"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+bamberger_mahr_s_bru-hell,0,0,244378697728,"{""name"":""Hell"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+nodding_head_brewpub-ich_bin_ein_berliner_weisse,0,0,244873887747,"{""name"":""Ich Bin Ein Berliner Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+bass_brewers,0,0,244362838017,"{""name"":""Bass Brewers"",""city"":""Burton-upon-Trent"",""state"":""Staffordshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01283)-513347"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""137 High Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":52.8046,""lon"":-1.6281}}",1,16,1
+de_halve_maan-straffe_hendrik_bruin,0,0,244612726784,"{""name"":""Straffe Hendrik Bruin"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_halve_maan"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+brouwerij_liefmans-liefmans_kriekbier,0,0,244479033344,"{""name"":""Liefmans Kriekbier"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_liefmans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,13,1
+hook_norton_brewery-twelve_days,0,0,244750876672,"{""name"":""Twelve Days"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_norton_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+pyramid_alehouse_brewery_and_restaurant_seattle-tilted_kilt_ale,0,0,244999913472,"{""name"":""Tilted Kilt Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,47,1
+abita_brewing_company-satsuma_harvest_wit,0,0,244369260544,"{""name"":""Satsuma Harvest Wit"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Real Louisiana Satsumas, golden wheat, oats and the finest barley create Abita Satsuma Harvest Wit. Pale and cloudy, like the haze on a hot summer day, this white beer has a sweet and subtle citrus flavor with a touch of spice that is cool and refreshing. \r\n\r\nAbita Satsuma Harvest Wit is very versatile and can compliment a number of dishes. This brew pairs well with salads, fish, shrimp and lobster, as long as the dishes are not too spicy. Thai dishes, which often have citric notes in their flavor profile, would also perfectly compliment the orange flavors in Abita Satsuma Harvest Wit."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,31,1
+c_b_potts_of_cheyenne-big_horn_buttface_amber,0,0,244489846784,"{""name"":""Big Horn Buttface Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,38,1
+southern_star_brewing_company-buried_hatchet_stout,0,0,245107130368,"{""name"":""Buried Hatchet Stout"",""abv"":8.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_star_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Jet-black in color, this monster smells of coffee and chocolate.  The taste is much of the same, with hints of creamy toffee and roasted malt.  Smooth and delicious, this medium bodied ale is all about the malts, but has enough hop bitterness to be balanced."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+taylor_brewing-palpitations_porter,0,0,245108113409,"{""name"":""Palpitations Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,23,1
+fish_brewing_company_fish_tail_brewpub-monkfish_tripel,0,0,244610236416,"{""name"":""Monkfish Tripel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+brasserie_de_saint_sylvestre,0,0,244370898944,"{""name"":""Brasserie De Saint Sylvestre"",""city"":""St-Sylvestre-Cappel"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.28.40.15.49"",""website"":""http://www.brasserie-st-sylvestre.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""121, rue de la Chapelle""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7975,""lon"":2.5412}}",1,33,1
+marble_brewery,0,0,244874674176,"{""name"":""Marble Brewery"",""city"":""Albuquerque"",""state"":""New Mexico"",""code"":""87102"",""country"":""United States"",""phone"":""505.243.2739"",""website"":""http://marblebrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Marble Brewery is located in beautiful Downtown Albuquerque area, conveniently located near Interstate 25 and just a stone's throw from the railroad tracks. Our spacious tap room and extensive bar is complimented by an equally expansive patio that offers plenty of shaded, picnic-style seating. For both beer lovers and curious and thirsty tourists, a visit to Marble Brewery is a must when in Albuquerque."",""address"":[""111 Marble Ave NW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.0928,""lon"":-106.647}}",1,44,1
+millstream_brewing-schokolade_bock,0,0,244874477568,"{""name"":""Schokolade Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millstream_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,43,1
+cervecera_hondurea,0,0,244485783553,"{""name"":""Cervecera Hondurea"",""city"":""San Pedro Sula"",""state"":"""",""code"":"""",""country"":""Honduras"",""phone"":""504-550-0100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Carretera a Puerto Corts""]}",1,28,1
+goose_island_beer_company_clybourn,0,0,244608532480,"{""name"":""Goose Island Beer Company - Clybourn"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60614"",""country"":""United States"",""phone"":""1-800-466-7363"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1800 North Clybourn Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.9137,""lon"":-87.6543}}",1,5,1
+lakefront_brewery-eastside_dark,0,0,244735279104,"{""name"":""Eastside Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+anheuser_busch-green_valley_stone_mill_pale_ale,0,0,244379025409,"{""name"":""Green Valley Stone Mill Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+clipper_city_brewing_co-loose_cannon_hop3_ale,0,0,244496662529,"{""name"":""Loose Cannon Hop3 Ale"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Loose Cannon Hop3 Ale - called Hop 3 (hop cubed) ale to reflect the enormous amount of hops in this beer: over 3 pounds per barrel! Also the beer is hopped 3 ways - in the kettle, in the hop back, and dry hopped. Winner of the Overall Best of Show Award in the Maryland State Governor's Cup 2005 Competition and voted the #1 IPA by Mahaffey’s Pub. We are very excited about this new product and have decided to make this beer available year round!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,52,1
+brasserie_de_la_senne-stouterik_the_brussels_stout,0,0,244360871936,"{""name"":""Stouterik / The Brussels Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_la_senne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+21st_amendment_brewery_cafe-21a_ipa,0,0,244376535040,"{""name"":""21A IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep golden color. Citrus and piney hop aromas. Assertive malt backbone supporting the overwhelming bitterness. Dry hopped in the fermenter with four types of hops giving an explosive hop aroma. Many refer to this IPA as Nectar of the Gods. Judge for yourself. Now Available in Cans!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,49,1
+blue_cat_brew_pub,0,0,244361461760,"{""name"":""Blue Cat Brew Pub"",""city"":""Rock Island"",""state"":""Illinois"",""code"":""61201"",""country"":""United States"",""phone"":""1-309-788-8247"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""113 18th Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.5118,""lon"":-90.5746}}",1,12,1
+main_street_beer_company_1-sweet_stout,0,0,244857503744,"{""name"":""Sweet Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_beer_company_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,1,1
+big_bang_brewery_closed-space_aged_lager,0,0,244380008449,"{""name"":""Space-Aged Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_bang_brewery_closed"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+browar_okocim,0,0,244478115841,"{""name"":""Browar Okocim"",""city"":""Brzesko"",""state"":"""",""code"":"""",""country"":""Poland"",""phone"":""48-0146865000"",""website"":""http://www.okocim.pl/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""ul. Browarna 14""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.9622,""lon"":20.6003}}",1,11,1
+oggi_s_pizza_and_brewing_vista,0,0,244875853824,"{""name"":""Oggi's Pizza and Brewing - Vista"",""city"":""Vista"",""state"":""California"",""code"":""92083"",""country"":""United States"",""phone"":""1-760-295-3581"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""425 South Melrose Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.2029,""lon"":-117.255}}",1,46,1
+mendocino_brewing_hopland-black_hawk_stout,0,0,244872970240,"{""name"":""Black Hawk Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,40,1
+woodforde_s_norfolk_ales-norfolk_nog_old_dark_ale,0,0,245746827264,"{""name"":""Norfolk Nog Old Dark Ale"",""abv"":99.99,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""woodforde_s_norfolk_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,20,1
+de_leyerth_brouwerijen-urthel_tonicum_finiboldhus,0,0,244609646592,"{""name"":""Urthel Tonicum Finiboldhus"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_leyerth_brouwerijen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+f_x_matt_brewing-saranac_pale_ale,0,0,244609384448,"{""name"":""Saranac Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A beer that would make the English jealous! This true English Pale Ale is rich and fruity, yet finishes crisp. You'll love the copper amber color and medium body."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+brouwerij_liefmans,0,0,244479492096,"{""name"":""Brouwerij Liefmans"",""city"":""Oudenaarde"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-055-31-13-92"",""website"":""http://www.liefmans.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 Aalststraat""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8439,""lon"":3.617}}",1,14,1
+boscos_memphis_brewing-dunkel,0,0,244380532737,"{""name"":""Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boscos_memphis_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+heartland_brewery_union_square-indiana_pale_ale,0,0,244734754816,"{""name"":""Indiana Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+hoptown_brewing-copper_wheat,0,0,244753825792,"{""name"":""Copper Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoptown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+issaquah_brewhouse-oak_stout,0,0,244734230532,"{""name"":""Oak Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""issaquah_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+costal_extreme_brewing_company,0,0,244498104323,"{""name"":""Costal Extreme Brewing Company"",""city"":""Middletown"",""state"":""Rhode Island"",""code"":""2842"",""country"":""United States"",""phone"":""(401) 849-5232"",""website"":""http://www.newportstorm.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""307 Oliphant Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.537,""lon"":-71.2796}}",1,56,1
+big_sky_brewing-moose_drool_brown_ale,0,0,244363100163,"{""name"":""Moose Drool Brown Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""It's chocolate brown in color with a creamy texture. A malty beer with just enough hop presence to keep it from being too sweet. The aroma mostly comes from the malt with a hint of spice added by the hops. Moose Drool is brewed with pale, caramel, chocolate, and whole black malts; and Kent Goldings, Liberty, and Willamette hops. It has an original gravity of 13 degrees Plato, and is 4.2% alcohol by weight, 5.3% by volume."",""style"":""Porter"",""category"":""Irish Ale""}",1,17,1
+bullfrog_brewery-smoked_porter,0,0,244490240001,"{""name"":""Smoked Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A big, RICH dark ale with a complex combination of beechwood smoked malts, chocolate, coffee and caramel flavors rounding out the beers smooth creamy body."",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+engine_house_9-imperial_pale,0,0,244607877121,"{""name"":""Imperial Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,4,1
+socorro_springs_brewing,0,0,245107458048,"{""name"":""Socorro Springs Brewing"",""city"":""Socorro"",""state"":""New Mexico"",""code"":""87801"",""country"":""United States"",""phone"":""1-505-838-0650"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1012 North California Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.0701,""lon"":-106.893}}",1,22,1
+illinois_brewing,0,0,244736131073,"{""name"":""Illinois Brewing"",""city"":""Bloomington"",""state"":""Illinois"",""code"":""61701"",""country"":""United States"",""phone"":""1-309-829-2805"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""102 North Center Street #111""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.4787,""lon"":-88.9946}}",1,6,1
+bandana_brewery-anniversary_ale,0,0,244378697729,"{""name"":""Anniversary Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,54,1
+northwoods_brewpub_grill-white_weasel_beer,0,0,244873953280,"{""name"":""White Weasel Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+bear_republic_brewery-heritage_scottish_ale,0,0,244362838018,"{""name"":""Heritage Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,16,1
+de_leyerth_brouwerijen-urthel_hop_it,0,0,244612792320,"{""name"":""Urthel Hop-It"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_leyerth_brouwerijen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,15,1
+brouwerij_roman-ename_tripel,0,0,244479033345,"{""name"":""Ename Tripel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_roman"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+independence_brewing_co-jasparilla,0,0,244750876673,"{""name"":""Jasparilla"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""independence_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Brilliantly golden, Jasperilla is a unique take on an old ale. Biscuity malt flavors meld with subtle plum and berry notes, produced by a special blend of English Old Ale and Chico yeasts. Brewed once a year, and aged for six months prior to release, the Jasperilla is smooth despite its 9% abv.\r\nJasper dressed as Hosehead from Strange Brew\r\n\r\nWe named this beer after our dog Jasper because he has brought so much joy to our lives. We got Jasper from a local dog rescue group called Mixed Breed Rescue. He has been a constant source of smiles and kept our spirits high through many late nights and long hours at the brewery.\r\n\r\nJasperilla is so good and smooth that you'll beg like a dog for more, roll over for a belly rub, howl at the moon...you get the picture."",""style"":""Old Ale"",""category"":""British Ale""}",1,41,1
+rahr_sons_brewing_company-rahr_s_bucking_bock,0,0,244999913473,"{""name"":""Rahr's Bucking Bock"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Bucking Bock - it's a traditional German Spring Bock Beer - golden in color and mildly hopped...... Kick'n in at 8% alcohol - it has a smooth malty character that will surely thaw you out after a long cold winter. Spring is here and so is Rahr's Bucking Bock!"",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,47,1
+amherst_brewing_company-cascade_ipa,0,0,244369326080,"{""name"":""Cascade IPA"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Light in color, medium body, with a hop bitterness and Cascade hop finish."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,31,1
+captain_lawrence_brewing_company-captain_lawrence_xtra_gold,0,0,244489846785,"{""name"":""Captain Lawrence Xtra Gold"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is the result of the marriage between two very distinct beer styles; the Belgian Tripel & American IPA. We have taken the best qualities from both styles and allowed them to shine through. The fruity and spicy notes from the imported Belgian yeast strain & the pungent flavors and aromas of the American grown Amarillo hops flow seamlessly together to create this flavorful ale.  Straight from the Captain’s cellar to yours, we hope you enjoy."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,38,1
+southern_tier_brewing_co-farmer_s_tan_imperial_pale_lager,0,0,245107195904,"{""name"":""Farmer's Tan Imperial Pale Lager"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Neolithic humans evolved from nomadic hunters into a more settled agricultural society, changing life forever. The ‘founder’ crops they raised included wheat and barley. It is little surprise that the first examples of brewing appeared during this age.\r\n\r\nBrewers owe much to the epoch. Similarly, we thank our farmer friends of today for cultivating the ingredients the are responsible for the beers we now enjoy. Their laborious days spent ourdoors under the hot sun earn them respect, as well as a mark of distinction: the farmer's tan. Yes, the inevitable red and white hallmark of hard work."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,21,1
+terrapin_beer_company-terrapin_coffee_oatmeal_imperial_stout,0,0,245108113410,"{""name"":""Terrapin Coffee Oatmeal Imperial Stout"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Black as night, this coffee stout is thick, rich and full of real coffee flavor. Brewed with the Terrapin Wake-n-Bake coffee blend created by Terrapin & Jittery Joe’s Coffee."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,23,1
+fitger_s_brewhouse_brewery_and_grill-witchtree_esb,0,0,244610236417,"{""name"":""Witchtree ESB"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+brasserie_du_bouffay-ambr,0,0,244370898945,"{""name"":""Ambr"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_du_bouffay"",""updated"":""2011-10-04 00:25:39"",""description"":"""",""style"":""Out of Category"",""category"":""Other Style""}",1,33,1
+marzoni_s_brick_oven_brewing_co-locke_mountain_light,0,0,244874674177,"{""name"":""Locke Mountain Light"",""abv"":3.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marzoni_s_brick_oven_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Refreshing Light-Bodied Golden Lager"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,44,1
+minocqua_brewing_company,0,0,244874477569,"{""name"":""Minocqua Brewing Company"",""city"":""Minocqua"",""state"":""Wisconsin"",""code"":""54548"",""country"":""United States"",""phone"":""1-715-356-2600"",""website"":""http://www.minocquabrewingcompany.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""238 Lake Shore Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.8722,""lon"":-89.7097}}",1,43,1
+coast_brewing-beau_rivage_bock,0,0,244485783554,"{""name"":""Beau Rivage Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+granite_city_food_brewery_saint_cloud-london_banker_esb,0,0,244735737856,"{""name"":""London Banker ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+left_coast_brewing-hop_juice_double_ipa,0,0,244735279105,"{""name"":""Hop Juice Double IPA"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Here at Left Coast Brewing Co. we pride ourselves on being one of the first breweries to pioneer a Double IPA style beer. In 2003, we brewed our first Double IPA, and haven't looked back since. This hop monster uses Premium American 2- Row and a touch of light crystal malt to create a solid malt foundation. The recipe calls for hops to be used in every step of the brewing process; in the mash, in a hop back, in the fermenter, and in the bright tanks. We use hop extract, hop pellets and hop flowers, hence the name Hop Juice. Hop Juice spends more than 4 weeks dry hopping in the fermenter and the bright beer tank. It is approximately 9.4% abv and has massive IBUs. Hop usage is over 4lbs per barrel. Hopeheads, step up to the plate!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,3,1
+atwater_block_brewing-salvation,0,0,244379025410,"{""name"":""Salvation"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our version of India Pale Ale. Brewed with European malts and Northwest hops and then generously Dry Hopped with Cascade Hops for a nice citrus finish. Truly a Salvation for all Hop Heads."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,55,1
+coast_brewing-biloxi_light,0,0,244496662530,"{""name"":""Biloxi Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,52,1
+brasseries_kronenbourg,0,0,244477591552,"{""name"":""Brasseries Kronenbourg"",""city"":""Strasbourg"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.88.27.44.88"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""68 route d'Oberhausbergen""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.593,""lon"":7.7149}}",1,10,1
+alaskan_brewing-alaskan_esb,0,0,244376600576,"{""name"":""Alaskan ESB"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Extra Special Bitter Ale. Alaskan ESB is darker and hoppier and is brewed and fermented at different temperatures than our popular Alt-style Amber. It has an exquisite copper color derived from Crystal malt and an aggressive, yet pleasant hop character.\r\n\r\nMalty with roasted overtones, Alaskan ESB has a crisp finish resulting from the use of premium Northwest hops.\r\n\r\nAlaskan ESB is made from glacier-fed water and a generous blend of the finest quality European and Pacific Northwest hop varieties and premium two-row and specialty malts. Our water originates in the 1,500 square-mile Juneau Ice Field and from the more than 90 inches of rainfall we receive each year."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,49,1
+brasserie_clarysse-st_hermes_abbey_ale,0,0,244361461761,"{""name"":""St.Hermes Abbey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_clarysse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+main_street_station_casino_brewery_and_hotel,0,0,244857569280,"{""name"":""Main Street Station Casino, Brewery and Hotel"",""city"":""Las Vegas"",""state"":""Nevada"",""code"":""89101"",""country"":""United States"",""phone"":""1-800-713-8933"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 North Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.1755,""lon"":-115.145}}",1,1,1
+blue_cat_brew_pub-river_back_jack_ipa,0,0,244380008450,"{""name"":""River Back Jack IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_cat_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,58,1
+bube_s_brewery-bube_s_kolsch,0,0,244478115842,"{""name"":""Bube's Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Clean, crisp, easy drinking Colonge, Germany style ale. Kolsch's smoothness comes from special Kolsch yeast, German Hallertau hops, a slow fermentation and lager like conditioning.""}",1,11,1
+on_tap_bistro_brewery-patriot_pale_ale,0,0,244875853825,"{""name"":""Patriot Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+michigan_brewing-golden_pheasant,0,0,244872970241,"{""name"":""Golden Pheasant"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brightly filtered, highly carbonated, golden premium-style lager. It is lightly hopped with Polish Lublin hops. The beer will appeal to those who prefer the lighter American style beers."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,40,1
+youngs_company_brewery-oatmeal_stout,0,0,245746827265,"{""name"":""Oatmeal Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""youngs_company_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,20,1
+devil_s_canyon-full_boar,0,0,244609712128,"{""name"":""Full Boar"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""devil_s_canyon"",""updated"":""2011-07-28 19:06:02"",""description"":"""",""style"":""Out of Category"",""category"":""Other Style""}",1,8,1
+faultline_brewing_1-belgian_abbey,0,0,244609384449,"{""name"":""Belgian Abbey"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+brouwerij_lindemans-framboise,0,0,244479492097,"{""name"":""Framboise"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_lindemans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,14,1
+boston_beer_company-samuel_adams_hallertau_imperial_pilsner,0,0,244380598272,"{""name"":""Samuel Adams Hallertau Imperial Pilsner"",""abv"":8.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""An amazing treat for hops lovers.\r\n\r\nSamuel Adams Hallertau Imperial Pilsner is a celebration of the extraordinary Hallertau Mittelfrueh hop variety. This rare Noble Bavarian hop, considered to be one of the best in the world, is prized for its quality and aromatic characteristics.\r\n\r\nThe beer, which is a deep golden color with a rich, creamy head, gives off an intense and complex Noble hop aroma unlike any other brew. With the first sip, beer enthusiasts will experience an explosion of hop flavor. The intensity of deep citrus, spicy Noble hop flavor is balanced with the slight sweetness from the malt. Due to the quality of the hops, this beer remains balanced and smoothly drinkable from beginning to end. The lingering \""hop signature\"" is an amazing treat for hops lovers.""}",1,59,1
+herkimer_pub_brewery-kolsch,0,0,244734754817,"{""name"":""Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""herkimer_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+hoptown_brewing-paint_the_town_red,0,0,244753825793,"{""name"":""Paint the Town Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoptown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+jack_russell_brewing-best_bitter_ale,0,0,244734296064,"{""name"":""Best Bitter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_russell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+denmark_brewing-continental_pilsner,0,0,244630093824,"{""name"":""Continental Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denmark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+blue_cat_brew_pub-off_the_rail_pale_ale,0,0,244363165696,"{""name"":""Off The Rail Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_cat_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+burgerbrau_wolnzach-nikolausbier_altfrankisches_dunkel,0,0,244490240002,"{""name"":""Nikolausbier Altfränkisches Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burgerbrau_wolnzach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+fish_brewing_company_fish_tail_brewpub-old_woody_2005,0,0,244607877122,"{""name"":""Old Woody 2005"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,4,1
+southampton_publick_house-double_white,0,0,245107523584,"{""name"":""Double White"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southampton_publick_house"",""updated"":""2010-07-22 20:00:20"",""description"":""What do brewmasters do in their free time? If you're Phil Markowski, the obsesseive brewmaster of Southampton, you brew at home, of course! Phil turned his fascination with Belgian-style white ales into a quest to master one of the most challenging beers to brew. Using rustic ingredients like un-malted wheat, Phil experimented over his stove until he felt it was perfect. Take one taste and you'll agree, Phil got it \""white.\"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,22,1
+inbev,0,0,244736196608,"{""name"":""InBev"",""city"":""Leuven"",""state"":"""",""code"":""3000"",""country"":""Belgium"",""phone"":"""",""website"":""http://www.inbev.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""In a few words InBev is the world's leading brewer, realizing 14.4 billion euro in 2007. The company has a strong, balanced portfolio, holding the number one or number two position in over 20 key markets  more than any other brewer. It has a key presence in both developed and developing markets. Headquartered in Leuven, Belgium, InBev employs almost 89 000 people worldwide. With sales in over 130 countries, the company works through six operational zones: North America, Western Europe, Central and Eastern Europe, Asia Pacific, Latin America North, and Latin America South."",""address"":[""Brouwerijplein 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8865,""lon"":4.7069}}",1,6,1
+bell_s_brewery_inc-expedition_stout,0,0,244378763264,"{""name"":""Expedition Stout"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""The vintage port of American stout. A good ale for the cellar. Well suited for November storms and trips across the Sahara."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,54,1
+oaken_barrel_brewing-razz_wheat,0,0,244873953281,"{""name"":""Razz-Wheat"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oaken_barrel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,42,1
+bell_s_brewery_inc-big_porch_ale,0,0,244362838019,"{""name"":""Big Porch Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is brewed especially for the Grand Hotel located on Mackinaw Island, Michigan."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,16,1
+denver_chophouse_and_brewery-pale_ale,0,0,244612857856,"{""name"":""Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+brouwerij_st_bernardus-abt_12,0,0,244479098880,"{""name"":""Abt 12"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""The absolute top quality in the hierarchy of the St. Bernardus beers. It is also the beer with the highest alcohol content (10.50 %).\r\nA dark ivory coloured beer with a high fermentation. \r\n\r\nThe show piece of the brewery. Thanks to its soft and unconditionally genuine aroma, the beer can be smoothly tasted.  The Abt has a very fruity flavour."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,13,1
+iron_hill_brewery_wilmingon,0,0,244750876674,"{""name"":""Iron Hill Brewery - Wilmingon"",""city"":""Wilmington"",""state"":""Delaware"",""code"":""19805"",""country"":""United States"",""phone"":""1-302-658-8200"",""website"":""http://www.ironhillbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We're passionate about producing distinctive, full-flavored handcrafted beers, accompanied by freshfromscratch New American cuisine in a comfortable, casual atmosphere. Our goal has always been to provide food and beer that is inspired, consistently crafted and presented by a knowledgeable and courteous service staff."",""address"":[""620 South Madison Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.745,""lon"":-75.5561}}",1,41,1
+rahr_sons_brewing_company-rahr_s_summertime_wheat,0,0,244999913474,"{""name"":""Rahr's Summertime Wheat"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""There is nothing more refreshing than a cold SUMMERTIME WHEAT at the end of a hot Texas day. This refreshing, lightly hopped ale has unique banana and clove-like characteristics. It is unfiltered so the yeast character comes through with a light but full body."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,47,1
+anchor_brewing-christmas_ale_2003,0,0,244369326081,"{""name"":""Christmas Ale 2003"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+cervecera_jerome-cerveza_negra,0,0,244489846786,"{""name"":""Cerveza Negra"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_jerome"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+stone_brewing_co-vertical_epic_10_10_10,0,0,245107261440,"{""name"":""Vertical Epic 10.10.10"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-12-20 15:55:46"",""description"":""Fermented with the legendary Ardennes strain of Belgian yeast, 10.10.10 is a Belgian Strong Pale Ale brewed with pale malt and triticale (a cross of wheat and rye), hopped with German Perle hops, and steeped with chamomile during the whirlpool stage. In secondary fermentation, we added a juice blend of Muscat, Gewurztraminer, and Sauvignon Blanc grape varieties."",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,21,1
+the_cambridge_house,0,0,245108178944,"{""name"":""The Cambridge House"",""city"":""Granby"",""state"":""Connecticut"",""code"":""6035"",""country"":""United States"",""phone"":""(860) 653-BREW"",""website"":""http://www.cambridgebrewhouse.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The best brewery in the Connecticut river valley.  Hands down!  It serves 2 beers that have won a total of 3 gold medals at big beer fests."",""address"":[""357 Salmon Brook Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.9658,""lon"":-72.793}}",1,23,1
+founders_hill_brewing-heritage_wheat,0,0,244610301952,"{""name"":""Heritage Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_hill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+brauerei_spezial-rauchbier_marzen,0,0,244487684096,"{""name"":""Rauchbier Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_spezial"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+metropolitan_brewing,0,0,244874739712,"{""name"":""Metropolitan Brewing"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60640"",""country"":""United States"",""phone"":"""",""website"":""http://www.metrobrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5121 N Ravenswood Ave,""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.975,""lon"":-87.674}}",1,44,1
+moose_s_tooth_pub_and_pizzeria-dark_knight,0,0,244874543104,"{""name"":""Dark Knight"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moose_s_tooth_pub_and_pizzeria"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark Knight (Baltic Porter) A Baltic porter is kind of a cross between an English porter and an Imperial Stout. Ours features a rich maltiness with hints of caramel, toffee and chocolate in both the flavor and aroma. Restrained hopping contributes a smooth full finish.""}",1,43,1
+dark_horse_brewing_co-one_oatmeal_stout,0,0,244485849088,"{""name"":""One Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Number one in a series of five stouts produced to help ease you through the cold and grey midwestern winters. This beer is full bodied with hints of chocolate, roasted barley, coffee flavors and a nice creamy head."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,28,1
+granville_island_brewing_company-cypress_honey_lager,0,0,244735803392,"{""name"":""Cypress Honey Lager"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granville_island_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+lift_bridge_brewery,0,0,244735279106,"{""name"":""Lift Bridge Brewery"",""city"":""Stillwater"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.liftbridgebrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.0565,""lon"":-92.8222}}",1,3,1
+augustiner_brau_munchen-dunkel,0,0,244379090944,"{""name"":""Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""augustiner_brau_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+coors_brewing_golden_brewery-coors_light,0,0,244496728064,"{""name"":""Coors Light"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Coors Light is Coors Brewing Company's largest-selling brand and the fourth best-selling beer in the U.S. Introduced in 1978, Coors Light has been a favorite in delivering the ultimate in cold refreshment for more than 25 years. The simple, silver-toned can caught people's attention and the brew became nicknamed the \""Silver Bullet\"" as sales climbed."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,52,1
+brauhaus_faust,0,0,244477657088,"{""name"":""Brauhaus Faust"",""city"":""Miltenberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9371-/-9713-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hauptstrae 219""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.6993,""lon"":9.2492}}",1,10,1
+alaskan_brewing-winter_ale,0,0,244376600577,"{""name"":""Winter Ale"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alaskan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""English Olde Ale. Traditionally malty with the warming sensation of alcohol, Olde Ales are brewed in the fall as winter warmers.\r\n\r\nBrewed in the style of an English Olde Ale, this ale balances the sweet heady aroma of spruce tips with the clean crisp finish of noble hops. Its malty richness is complemented by the warming sensation of alcohol.\r\n\r\nAlaskan Winter is made from glacier-fed water, Sitka spruce tips and a generous blend of the finest quality European and Pacific Northwest hop varieties and specialty malts. Our water originates in the 1,500-square-mile Juneau Ice Field and from the more than 90 inches of rainfall we receive each year."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,49,1
+brasserie_de_brunehaut-mont_st_aubert,0,0,244361527296,"{""name"":""Mont St. Aubert"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic Belgian Bière de Garde - full of fruity esters, alcohol phenols, Belgian malts, noble hops and a dry, refreshing after-taste.  Award-wining Mont Saint-Aubert received 'World's Best\"" recognition in the Bière de Garde category during the 2009 World Beer Awards (London).\r\nIn 2008 Mont Saint-Aubert took Silver medals in the Belgian-Style Pale Strong Ale category at the Brewers Association World Beer Cup and the Australian International Beer Awards.""}",1,12,1
+meantime_brewing_company_limited-india_pale_ale,0,0,244857569281,"{""name"":""India Pale Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""meantime_brewing_company_limited"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+bonfire_brewery-promethean_porter,0,0,244380073984,"{""name"":""Promethean Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bonfire_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,58,1
+bull_bush_pub_brewery-fall_fest,0,0,244478181376,"{""name"":""Fall Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,11,1
+otter_creek_brewing_wolaver_s_organic_ales-otter_creek_imperial_india_pale_ale,0,0,244875853826,"{""name"":""Otter Creek Imperial India Pale Ale"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Originally brewed for thirsty British troops stationed on the subcontinent of India, India Pale Ales had to withstand the sea voyage around Africa. Brewers need to take full advantage of two preservatives at the time: hops and alcohol. They increased their hopping rates, doubled  their malt useage to increase alcohol content, and dry-hopped the brew before it set out on its voyage.\r\nOur Imperial IPA carries on this tradition- and then some!  The fruity and citrusy hop aroma intermingles perfectly with an assertive malty backbone.  Our brewers added a generous supply of hops to this brew throughout the entire process to provide an enormous hop flavor and balance the elevated alcohol content.\r\n\r\nThis beer is 11% alcohol by volume, and 135 IBU!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,46,1
+minocqua_brewing_company-beekeepers_honey_ale,0,0,244872970242,"{""name"":""Beekeepers Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+aberdeen_brewing-scottish_ale,0,0,244372275200,"{""name"":""Scottish Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aberdeen_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+dogfish_head_craft_brewery-olde_school_barleywine,0,0,244609777664,"{""name"":""Olde School Barleywine"",""abv"":15.04,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,8,1
+firehouse_brewing-barely_blond,0,0,244609384450,"{""name"":""Barely Blond"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+brouwerij_verhaeghe-echte_kriek,0,0,244479557632,"{""name"":""Echte Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_verhaeghe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+boston_beer_works-ipa,0,0,244380598273,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+hofbru_kaltenhausen_salzachtal-edelweiss_dunkel_weissbier,0,0,244734754818,"{""name"":""Edelweiss Dunkel Weissbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hofbru_kaltenhausen_salzachtal"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+humboldt_brewing-stout,0,0,244753825794,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+kessler_brewing-doppelbock,0,0,244734296065,"{""name"":""Doppelbock"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kessler_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,0,1
+deschutes_brewery-hop_trip_fresh_hop_pale_ale,0,0,244630159360,"{""name"":""Hop Trip Fresh Hop Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This Fresh Hop Pale Ale is all about celebrating the hop harvest in the fall.  Fresh picked hops have to be added to the brew immediately and in abundance.  Roughly 270 pounds of Crystal hops from Doug Weathers' farm outside Salem, Oregon will be added to the 50 barrel batch in addition to some dry kilned whole flower hops.  That adds up to approximately 5.5 pounds of hops per barrel brewed.  Another deliciously interesting beer in our Bond Street Series."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,56,1
+boiler_room_brewpub,0,0,244363165697,"{""name"":""Boiler Room Brewpub"",""city"":""Laughlin"",""state"":""Nevada"",""code"":""89029"",""country"":""United States"",""phone"":""1-702-298-4000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2100 Casino Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.1584,""lon"":-114.573}}",1,17,1
+cedar_brewing-dunkelweisse,0,0,244490305536,"{""name"":""Dunkelweisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+fratellos_restaurant_and_brewery-oatmeal_stout,0,0,244607942656,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,4,1
+southampton_publick_house-english_pale_ale,0,0,245107589120,"{""name"":""English Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southampton_publick_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,22,1
+issaquah_brewhouse-bourbon_barrel_stout,0,0,244736196609,"{""name"":""Bourbon Barrel Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""issaquah_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+big_river_brewing-pilsner,0,0,244378763265,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+okanagan_spring_brewery-premium_lager,0,0,244873953282,"{""name"":""Premium Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""okanagan_spring_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+boston_beer_company-samuel_adams_spring_ale,0,0,244362838020,"{""name"":""Samuel Adams Spring Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+deschutes_brewery-buzzsaw_brown,0,0,244612857857,"{""name"":""Buzzsaw Brown"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""By 1915, Bend, Oregon, was alive with the sound of the buzz saw, as two of the country's largest pine sawmills set up shop on the banks of the Deschutes River.  The mills are  gone now, but the smokestacks still stand testament to Bend's humble beginnings. \r\n\r\nBuzzsaw Brown is an easy-drinking beer that is refreshing after a hard day’s work. The timber mills in Bend may be closed, but whether your adventure includes a day of scaling rock faces, hitting 18 holes or skiing the slopes in spring, Buzzsaw Brown is the perfect end to a fun-filled day.\r\n\r\n“Buzzsaw Brown is one of my favorite beers,” says Deschutes Brewery Brewmaster Larry Sidor. “The unique combination of European and American malts makes it a very food friendly beer that pairs well with a wide variety of flavors.”"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,15,1
+brouwerij_st_bernardus-prior_8,0,0,244479098881,"{""name"":""Prior 8"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""This noble delicious beer with a high fermentation has a ruby purple colour with a full malty and fruity taste (8% alcohol content). \r\n\r\nThis beer has a beautiful round froth due to the second fermentation with a taste that creates a perfect balance between sweet and sour."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,13,1
+james_page_brewing-iron_range_amber_lager,0,0,244750942208,"{""name"":""Iron Range Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""james_page_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+railway_brewing-ipa_pale_ale,0,0,244999979008,"{""name"":""IPA Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""railway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+andechser_klosterbrauerei-weissbier_dunkel,0,0,244369391616,"{""name"":""Weißbier Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""andechser_klosterbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+circle_v_brewing-bullseye_bitter_esb,0,0,244489846787,"{""name"":""Bullseye Bitter ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""circle_v_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+straub_brewery,0,0,245107261441,"{""name"":""Straub Brewery"",""city"":""St. Mary's"",""state"":""Pennsylvania"",""code"":""15857"",""country"":""United States"",""phone"":""814-834-2875"",""website"":""http://www.straubbeer.com/index.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""303 Sorg Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.4277,""lon"":-78.5539}}",1,21,1
+the_livery-double_paw,0,0,245108178945,"{""name"":""Double Paw"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""A single malt and single hop version of an American Brewers classic style. This is definitely our hoppiest beer and quickly becoming a hop head cult classic!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,23,1
+gasthaus_brauerei_max_moritz-hefeweizen,0,0,244610301953,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthaus_brauerei_max_moritz"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,9,1
+bridgeport_brewing-haymaker_extra_pale_ale,0,0,244487749632,"{""name"":""Haymaker Extra Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+millstream_brewing-colony_oatmeal_stout,0,0,244874739713,"{""name"":""Colony Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millstream_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,44,1
+new_belgium_brewing-2_below,0,0,244874543105,"{""name"":""2° Below"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pull on your wool socks and crack open a 2° Below Ale. This tasty winter warmer started life as a small batch beer brewed for the Al Johnson Uphill Downhill – a telemark ski race in Crested Butte, Colorado. The Uphill Downhill celebrates the exploits of Al Johnson, letter carrier extraordinaire, who delivered mail by ski in the late 1800’s. Dry hopping during fermentation creates a floral nose with a hint of pepper and spicy, subtle undertones. 2° Below provides a bright, hoppy palate and a cheery warm afterglow."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,43,1
+deschutes_brewery-green_lakes_organic_ale,0,0,244618231808,"{""name"":""Green Lakes Organic Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Discover Deschutes Brewery’s intriguing amber ale, our Ode to Mother Earth. Experience its mellow malt profile intertwined with subtly surprising hop flavors. Green Lakes Organic Ale is brewed with five types of 100% organic malted barley and balanced with Liberty and Salmon-Safe Sterling hops. Easy to drink. Easy on the Environment. Downright Delicious. Who knew celebrating Mother Earth could taste so good.\r\n\r\nAfter working with Oregon Tilth for nearly six months, Deschutes Brewery received organic certification for its 50 barrel brew house and can now brew tasty organic ales for year-round enjoyment.\r\n\r\nFish need cool clean water. So do you. That’s why we sourced Salmon-Safe certified Sterling hops for our first organic beer. The way these flavorful, rich hops are grown makes sure that streams are shaded and there is not runoff to nearby waterways. That way the rivers stay cool and clean for migrating salmon. Not only is our Green Lakes beer organic, it helps protect our rivers as well."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+great_lakes_brewing-eliot_ness_amber_lager,0,0,244735803393,"{""name"":""Eliot Ness Amber Lager"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An amber lager with rich, fragrant malt flavors balanced by crisp, noble hops."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+loaf_and_stein_brewing-red_ale,0,0,244858290176,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""loaf_and_stein_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,3,1
+aviator_brewing_company,0,0,244379090945,"{""name"":""Aviator Brewing Company"",""city"":""Fuquay Varina"",""state"":""North Carolina"",""code"":""27526"",""country"":""United States"",""phone"":""(919)567-BEER"",""website"":""http://www.aviatorbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""209 Technology Park Lane""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.6197,""lon"":-78.8085}}",1,55,1
+coronado_brewing_company-island_pale_ale_ipa,0,0,244496728065,"{""name"":""Island Pale Ale (IPA)"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Islander IPA is a powerful West Coast IPA. This beer bites back with an intense hoppy zing and high alcohol content. The Islander IPA is dry hopped with tons of Centennial & Chinook hops and its fruity aroma will win your approval."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,52,1
+brauhaus_johann_albrecht_konstanz-nickelbier,0,0,244477722624,"{""name"":""Nickelbier"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_konstanz"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,10,1
+allguer_brauhaus_ag_kempten_brausttte_leuterschach-sailerbrau_rauchenfels_steinweizen,0,0,244376666112,"{""name"":""Sailerbräu Rauchenfels Steinweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allguer_brauhaus_ag_kempten_brausttte_leuterschach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+brasserie_de_l_abbaye_des_rocs-speciale_noel,0,0,244361527297,"{""name"":""Spéciale Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+mikkeller-beer_geek_breakfast,0,0,244857569282,"{""name"":""Beer Geek Breakfast"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mikkeller"",""updated"":""2010-07-22 20:00:20"",""description"":""Breakfast is the most important meal of the day, many say, and if you are a beer geek there is no better way to start the day than with a powerful, complex morning stout. The unique mix of oats and coffee gives this beer large body and power, while the coffee, at the same time, creates a nice balance."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,1,1
+bonfire_brewery,0,0,244380073985,"{""name"":""Bonfire Brewery"",""city"":""Northville"",""state"":""Michigan"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.4311,""lon"":-83.4833}}",1,58,1
+capital_brewery-capital_oktoberfest,0,0,244478181377,"{""name"":""Capital Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,11,1
+panther_brewing_company-three_stooges_beer,0,0,244999323648,"{""name"":""Three Stooges Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""panther_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,46,1
+moab_brewery-scorpion_pale_ale,0,0,244873035776,"{""name"":""Scorpion Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moab_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+abita_brewing_company-turbodog,0,0,244372340736,"{""name"":""Turbodog"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Abita Turbodog is a dark brown ale brewed with Willamette hops and a combination of British pale, crystal and chocolate malts.\r\n\r\nThis combination gives Turbodog its rich body and color and a sweet chocolate-toffee like flavor. Turbodog began as a specialty ale but has gained a huge loyal following and has become one of our three flagship brews.\r\n\r\nJust a bit stronger than our other brews, so . . .beware of the dog!"",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,37,1
+estes_park_brewery-trail_ridge_red,0,0,244609777665,"{""name"":""Trail Ridge Red"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our red is a special bitter. This means it has medium body and mild bitterness. These balance well with the rich copper color. We use American hops."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+flat_earth_brewing_company,0,0,244609449984,"{""name"":""Flat Earth Brewing Company"",""city"":""St. Paul"",""state"":""Minnesota"",""code"":""55116"",""country"":""United States"",""phone"":"""",""website"":""http://flatearthbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""After years of careful planning  and mortgaging everything  the Flat Earth Brewing Company was brought to life in 2007 by head brewer Jeff Williamson and his wife Cathie. In search of a calmer life and an even better beer, Jeff turned his passion for brewing into a career. After a temporary stint at Northern Brewer and a job as an assistant brewer at Minneapolis Town Hall Brewery, Flat Earth opened in Saint Paul and set out to create beers not normally found in the upper Midwest. Flat Earth's distinctive brews are often inspired by the couple's travels and time spent in conversation with family and friends. The company's brewing on the edge philosophy is reflected in its stylish interpretation of traditional brewing assumptions. Today, Flat Earth Brewing produces a variety of artisan ales and lagers every month. As the beers roll out of the brewery, you're sure to see a theme develop around their names  a hint of conspiracy, perhaps. The names are meant to get people thinking and talking. Whether you enjoy Flat Earth beers at home or out with friends, there are no secrets when it comes to good beer."",""address"":[""2035 Benson Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.9084,""lon"":-93.1538}}",1,7,1
+carmel_brewing-hefeweizen,0,0,244479557633,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carmel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+boulder_beer_company-singletrack_copper_ale,0,0,244380663808,"{""name"":""Singletrack Copper Ale"",""abv"":4.97,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+humboldt_brewing-pale_ale,0,0,244734820352,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+kenya_breweries-tusker_premium_lager,0,0,244753825795,"{""name"":""Tusker Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kenya_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_xh,0,0,244734296066,"{""name"":""Hitachino Nest XH"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark ale with a tan head. Subtle sake flavor from cask aging."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,0,1
+egan_brewing-princess_of_darkness_porter,0,0,244630224896,"{""name"":""Princess of Darkness Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,56,1
+21st_amendment_brewery_cafe-watermelon_wheat,0,0,244377124864,"{""name"":""Watermelon Wheat"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""The definition of summer in a pint glass. This unique, American-style wheat beer, is brewed with 400 lbs. of fresh pressed watermelon in each batch. Light turbid, straw color, with the taste and essence of fresh watermelon. Finishes dry and clean. Now Available in Cans!"",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,50,1
+bonaventure_brewing_co-bonaventure_pale_ale,0,0,244363165698,"{""name"":""Bonaventure Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bonaventure_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Light amber color and a mild malty background. Well-hopped featuring Cascade hops with a distinct floral finish."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+celis_brewery-grand_cru,0,0,244490371072,"{""name"":""Grand Cru"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""celis_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+gordon_biersch_brewing-gordon_biersch_czech_lager,0,0,244607942657,"{""name"":""Gordon Biersch Czech Lager"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,4,1
+st_peter_s_brewery-cream_stout,0,0,245107589121,"{""name"":""Cream Stout"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,22,1
+jt_whitney_s_brewpub_and_eatery,0,0,244736196610,"{""name"":""JT Whitney's Brewpub and Eatery"",""city"":""Madison"",""state"":""Wisconsin"",""code"":""53711"",""country"":""United States"",""phone"":""1-608-274-1776"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""674 South Whitney Way""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.0519,""lon"":-89.4737}}",1,6,1
+blue_corn_caf_and_brewery_albuquerque-plaza_porter,0,0,244378763266,"{""name"":""Plaza Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_corn_caf_and_brewery_albuquerque"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,54,1
+old_dominion_brewing_co,0,0,244874018816,"{""name"":""Old Dominion Brewing Co."",""city"":""Dover"",""state"":""Delaware"",""code"":""19901"",""country"":""United States"",""phone"":""(302) 678-4810"",""website"":""http://www.olddominion.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1284 McD Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.154,""lon"":-75.4884}}",1,42,1
+brauerei_grieskirchen_ag,0,0,244480081920,"{""name"":""Brauerei Grieskirchen AG"",""city"":""Grieskirchen"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0-72-48/607-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Stadtplatz 14""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.2351,""lon"":13.8292}}",1,16,1
+dock_street_beer-rye_ipa,0,0,244612857858,"{""name"":""Rye IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dock_street_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""An aggressively hopped American Style Pale Ale brewed with Simcoe and Amarillo hops. The use of 20% rye gives this ale a unique dry and spicy character."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+brouwerij_van_steenberge-augustijn_ale,0,0,244479164416,"{""name"":""Augustijn Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+john_harvard_s_brew_house_harvard_square-framingham_maibock,0,0,244750942209,"{""name"":""Framingham Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brew_house_harvard_square"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,41,1
+real_ale_brewing_company-full_moon_pale_rye_ale,0,0,245000044544,"{""name"":""Full Moon Pale Rye Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""real_ale_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Tawny red and full of malt and hops, Full Moon's unique flavor truly satisfies. The smooth sweetness of malted rye and barley is complemented by generous helpings of Willamette and Cascade hops, resulting in an assertive American amber ale."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,47,1
+anheuser_busch-redbridge,0,0,244369391617,"{""name"":""Redbridge"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Redbridge beer doesn’t need to make promises to stand out from the crowd; its very essence sets it apart. Redbridge is made without wheat or barley, so the approximately 3.2 million consumers who are unable to drink beer made with barley due to Celiac Disease or because they follow a wheat-free or gluten-free diet can once again enjoy a great tasting beer. Redbridge is a rich, full-bodied lager brewed from sorghum for a well-balanced, moderately hopped taste."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+coastal_fog_brewing-pale,0,0,244489912320,"{""name"":""Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coastal_fog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,38,1
+thirsty_dog_brewing-orthus_belgian_dubbel,0,0,245107261442,"{""name"":""Orthus Belgian Dubbel"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Orthus was the two-headed hell hound brother of Cerberus, the three-headed dog that guarded the gates of hell. Orthus is a Belgian Dubbel brown in color, 7 grains, 3 hops, Trappist high gravity yeast. Very Drinkable."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,21,1
+the_round_barn_winery_brewery-round_barn_summer_wheat,0,0,245108178946,"{""name"":""Round Barn Summer Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_round_barn_winery_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An unpretentious American pale wheat beer, our Summer Wheat pours a cloudy golden-orange, just like a sunset over Lake Michigan. Its assertive wheat flavor is complimented with hints of citrus zest. Garnish with a slice of orange or lemon. Round Barn beer is bottle conditioned, decant into a weizen glass before drinking for the best taste experience."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,23,1
+glen_ellyn_sports_brew-g_e_lite,0,0,244610301954,"{""name"":""G.E. Lite"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+brouwerij_girardin,0,0,244487749633,"{""name"":""Brouwerij Girardin"",""city"":""Sint-Ulriks-Kapelle"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-024-52-64-19"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lindenbergstraat 10""]}",1,33,1
+minneapolis_town_hall_brewery-smoked_porter,0,0,244874805248,"{""name"":""Smoked Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+o_gara_s_bar_grill-sligo_red,0,0,244874543106,"{""name"":""Sligo Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_gara_s_bar_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+dragonmead_microbrewery-final_absolution,0,0,244618231809,"{""name"":""Final Absolution"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Dragonmead's signature product! This is the ultimate Belgian style. The very high gravity of this beer is balanced by the smoothness of its finish. Banana and Clove aromas come from the Belgian yeast strain combining with the generous dose of Belgian Candi Sugar. The Saaz hops help to give this beer a balanced bitterness with no noticeable hop aroma."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,28,1
+grumpy_troll_restaurant_and_brewery-trailside_wheat,0,0,244735803394,"{""name"":""Trailside Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,5,1
+martini_brauerei-weissbier_dunkel,0,0,244858355712,"{""name"":""Weissbier Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""martini_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+bell_s_brewery_inc-octoberfest_beer,0,0,244379156480,"{""name"":""Octoberfest Beer"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A coppery amber lager that showcases a full bodied, malty flavor that is balanced by a refreshing bitterness derived from fine noble hops."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,55,1
+crested_butte_brewery_pub,0,0,244496728066,"{""name"":""Crested Butte Brewery &  Pub"",""city"":""Crested Butte"",""state"":""Colorado"",""code"":""81224"",""country"":""United States"",""phone"":""1-970-349-5026"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""226 Elk Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.8698,""lon"":-106.987}}",1,52,1
+brewery_vivant-vivant_tripel,0,0,244477722625,"{""name"":""Vivant Tripel"",""abv"":9.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_vivant"",""updated"":""2011-06-22 12:22:12"",""description"":""A classic golden ale, with subtle esters of banana and bubblegum. This beer pours with a creamy head and ends with a sweetness of light Belgian candi sugars. Our brewmaster aged this ale for an extended period to round out the flavors. A great traditional Belgian brew. "",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,10,1
+anchor_brewing-anchor_summer_beer,0,0,244376666113,"{""name"":""Anchor Summer Beer"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Anchor Summer is the first American wheat beer in modern times. Our first brew of this light and refreshing beer was in the summer of 1984.\r\n\r\nAnchor Summer is an all-malt beer, and over 50% of its malt comes from malted wheat. It is fermented with a Triticum aestivum, AKA wheat traditional top-fermenting \""ale\"" yeast because we prefer the clean flavors developed by this yeast. We believe that this style best celebrates the refreshingly light flavor of malted wheat. You may notice that the head on this beer is unusually abundant, with a consistency similar to whipped egg whites. This is due to protein contributed by the wheat.\r\n\r\nThe brewers at Anchor are proud to have revived not only rich hearty dark beers, but also this light crisp style of a modern American wheat beer.\r\n\r\nSummer getaway Wheat malt contributes to an unusual lightness and dryness to the palate, and this—combined with the distinctive flavor of the wheat—makes for a perfect thirst-quenching beverage. It is the ideal drink for beer lovers who appreciate tradition and character in their beer, but also seek a lighter, refreshing style, perfect for warm weather.\r\n\r\n-http://www.anchorbrewing.com/beers/summerbeer.htm"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,49,1
+brasserie_duyck-jenlain_blonde,0,0,244478312448,"{""name"":""Jenlain Blonde"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_duyck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+moosehead_breweries-moosehead_lager,0,0,244857634816,"{""name"":""Moosehead Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosehead_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,1,1
+boston_beer_company-samuel_adams_noble_pils,0,0,244380073986,"{""name"":""Samuel Adams Noble Pils"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Samuel Adams Noble Pils is one of the only brews made with all five Noble hops from the world’s growing regions. its bright flavor and lively, citrus hop character reminds us that the warm days of spring are just a few weeks away."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,58,1
+carlsberg_sverige_ab,0,0,244478181378,"{""name"":""Carlsberg Sverige AB"",""city"":""Falkenberg"",""state"":"""",""code"":"""",""country"":""Sweden"",""phone"":""46-08-757-70-00"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""rstadvgen""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":56.9002,""lon"":12.5405}}",1,11,1
+pivovar_herold_beznice,0,0,244999389184,"{""name"":""Pivovar Herold Beznice"",""city"":""Beznice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-318-682-047"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Nadrazni ul.""]}",1,46,1
+murphy_s_wagon_wheel,0,0,244873035777,"{""name"":""Murphy's Wagon Wheel"",""city"":""Hastings"",""state"":""Nebraska"",""code"":""68901"",""country"":""United States"",""phone"":""1-402-463-3011"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""107 North Lincoln Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.5843,""lon"":-98.3912}}",1,40,1
+adnams_co-adnam_s_suffolk_special_bitter,0,0,244372340737,"{""name"":""Adnam's Suffolk Special Bitter"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""adnams_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Adnams Suffolk Special Bitter, at 4.5% alcohol by volume, is a dry, crisp, refreshing, and distinctly hoppy example of its style.\r\n\r\nThis beer is also available in some markets in tradtional cask form, as Adnams Bitter. At only 3.7% alcohol, Adnams Bitter is the classic English 'ordinary,' though we think you'll agree that there's full of flavor.\r\n\r\nDespite its rich heritage and enduring fame, Adnams is not a company willing to rest on its laurels. Its continued commitment to quality and innovative packaging designs has made it Britain’s fastest growing brewery over the last two years. To top it off, Adnams’ head brewer was recently chosen as Britain’s Brewer of the Year by a panel of his peers."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,37,1
+faultline_brewing_1-stout,0,0,244609777666,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,8,1
+founders_brewing-centennial_ipa,0,0,244609449985,"{""name"":""Centennial IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Selected as a benchmark for the Beer Judge Certification Program used in all American based beer judgings. Centennial IPA has quickly become the IPA of choice. Pour yourself a pint of this complex flavorful ale and bask in the frothy head's floral bouquet. Relish the immense citrus accents, achieved by the abundance of dry hopping. This ale's sweet, malty undertones balance the hop character with a finish that never turns too bitter."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+carver_brewing_co-old_oak_amber_ale,0,0,244479623168,"{""name"":""Old Oak Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carver_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A well balanced American Amber Ale. Smooth malt character balanced with a healthy dose of Cascade hops aged on oak chips - our most popular beer."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,14,1
+brasserie_dupont-saison_vielle_provision,0,0,244498956288,"{""name"":""Saison Vielle Provision"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dupont"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+industrias_la_constancia_ilc-regia_extra,0,0,244734820353,"{""name"":""Regia Extra"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""industrias_la_constancia_ilc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_sweet_stout,0,0,244753891328,"{""name"":""Hitachino Nest Sweet Stout"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+knig_brauerei-pilsener,0,0,244734296067,"{""name"":""Pilsener"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""knig_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+etna_brewing,0,0,244630224897,"{""name"":""Etna Brewing"",""city"":""Etna"",""state"":""California"",""code"":""96027"",""country"":""United States"",""phone"":""1-530-467-5277"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""131 Callahan""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.4559,""lon"":-122.846}}",1,56,1
+3_fonteinen_brouwerij_ambachtelijke_geuzestekerij-oude_geuze,0,0,244377124865,"{""name"":""Oude Geuze"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""3_fonteinen_brouwerij_ambachtelijke_geuzestekerij"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,50,1
+boston_beer_company-samuel_adams_chocolate_bock,0,0,244363231232,"{""name"":""Samuel Adams Chocolate Bock"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,17,1
+cervecera_cuauhtmoc_moctezuma-tecate,0,0,244490371073,"{""name"":""Tecate"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+gottberg_brew_pub-tin_lizzie_hefeweizen,0,0,244607942658,"{""name"":""Tin Lizzie Hefeweizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,4,1
+stieglbrauerei_zu_salzburg_gmbh-paracelsus_zwickl,0,0,245107589122,"{""name"":""Paracelsus Zwickl"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""Paracelsus Zwickl is a natural beer specialty with a mellow impression on the tongue. The aftertaste unfolds a slight bitterness. Zwickl-beer is not filtered and therefore shows some cloudiness due to rests of yeast, minerals and trace elements.\r\n\r\nThis very special beer is brewing at its best using a sophisticated recipe combined with love and dedication. Stiegl only uses excellent ingredients from Austrian agricultural suppliers, applying biological techniques. As a result of this Paracelsus Zwickl beer was awarded the Bio-Austria certificate. Bio-production is subject to strict yearly controls by “Austria-Bio-Guaranty”.\r\n\r\n“Bier is a really divine medicine”. This quotation comes from Paracelsus (1493 – 1541). He was a well known physician, forward thinker and visionary who lived in Salzburg for many years. He found out that beer had healing powers.""}",1,22,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2006,0,0,244736262144,"{""name"":""Harvest Ale 2006"",""abv"":11.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,6,1
+brasserie_d_achouffe-biere_de_mars,0,0,244378828800,"{""name"":""Bière de Mars"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_achouffe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+olde_peninsula_brewpub_and_restaurant-haymarket_ale,0,0,244874018817,"{""name"":""Haymarket Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,42,1
+brauerei_hrle,0,0,244480147456,"{""name"":""Brauerei Hrle"",""city"":""Leutkirch im Allgäu"",""state"":""Baden-Württemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7561-/-9828-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Am Hopfengarten 5""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.8243,""lon"":10.0239}}",1,16,1
+edelweissbrauerei_farny-humpis_original_naturtrub,0,0,244612857859,"{""name"":""Humpis-Original Naturtrub"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""edelweissbrauerei_farny"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+browar_zywiec-porter,0,0,244479164417,"{""name"":""Porter"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""browar_zywiec"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,13,1
+jolly_pumpkin_artisan_ales-noel_de_calabaza,0,0,244750942210,"{""name"":""Noel de Calabaza"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep mahogany and malty, layered hops, figs, raisins, sugar plums, cashews betwixt rum laden truffles.""}",1,41,1
+rock_bottom_restaurant_brewery_denver-falcon_pale_ale,0,0,245000044545,"{""name"":""Falcon Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_denver"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,47,1
+appalachian_brewing_company-trail_blaze_organic_brown_ale,0,0,244369391618,"{""name"":""Trail Blaze Organic Brown Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Trail Blaze Organic American Brown Ale exhibits a beautiful deep copper color and an evident hop bitterness & aroma.  This is balanced against roasted caramel-like characteristics and hints of chocolate. \r\n\r\nOur first in a series of organic beers is named for the markers that keep a hiker on the correct path.  Many of the hiking trails in our area have simple to very distinguished trail blazes.  After a long hike, there is nothing better at the end of the trail than ABC organic ale."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,31,1
+commonwealth_brewing_1-golden_ale,0,0,244489912321,"{""name"":""Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""commonwealth_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,38,1
+thirsty_dog_brewing-stud_service_stout,0,0,245107326976,"{""name"":""Stud Service Stout"",""abv"":3.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional dry Irish Stout. Very Flavorful while low in calories and alcohol. An easy drinking “session beer” that has a nice caramel flavor an smooth finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,21,1
+three_floyds_brewing-robert_the_bruce_scottish_ale,0,0,245108244480,"{""name"":""Robert the Bruce Scottish Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A big malty body from chocolate and roasted malts, well balanced with just the right combination of hops. Robust yet smooth, a true malt-lover's delight."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,23,1
+glenwood_canyon_brewing_company-dos_rios_vienna_lager,0,0,244610367488,"{""name"":""Dos Rios Vienna Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glenwood_canyon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+brouwerij_van_hoegaarden-hoegaarden,0,0,244487749634,"{""name"":""Hoegaarden"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_hoegaarden"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoegaarden is the authentic Belgian wheat or white beer. It has a unique and extremely complex brewing process whereby the brand is first top fermented and then is refermented within the bottle - ending up in a unique cloudy-white appearance. The brand's unique appearance is mirrored by its one-of-a-kind taste - sweet and sour beer with a little bitterness, slightly spicy, with a strong touch of coriander and a hint of orange, perfect for warm summer days, instead of other refreshing beverages. Refreshing, a little quirky, and decidedly different - naturally."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,33,1
+mishawaka_brewing-raspberry_wheat_ale,0,0,244874805249,"{""name"":""Raspberry Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mishawaka_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,44,1
+otto_s_pub_and_brewery-spruce_creek_lager,0,0,244874608640,"{""name"":""Spruce Creek Lager"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This light refreshing American lager has a malty smooth character and low hop bitterness."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,43,1
+einbecker_brauhaus_ag,0,0,244618297344,"{""name"":""Einbecker Brauhaus AG"",""city"":""Einbeck"",""state"":""Niedersachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)5561-/-797-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Papenstrae 4-7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.8162,""lon"":9.8643}}",1,28,1
+heineken_hungaria,0,0,244735868928,"{""name"":""Heineken Hungária"",""city"":""Sopron"",""state"":"""",""code"":"""",""country"":""Hungary"",""phone"":"""",""website"":""http://www.heinekenhungaria.hu/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Known before Soproni Sörgyár"",""address"":[]}",1,5,1
+mcmenamins_mill_creek-irish_stout,0,0,244858421248,"{""name"":""Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,3,1
+brasserie_de_silenrieux-sara_buckwheat_ale,0,0,244379156481,"{""name"":""Sara Buckwheat Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silenrieux"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+de_proef_brouwerij-zoetzuur_flemish_ale,0,0,244628455424,"{""name"":""Zoetzuur Flemish Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+brooklyn_brewery,0,0,244477722626,"{""name"":""Brooklyn Brewery"",""city"":""Brooklyn"",""state"":""New York"",""code"":""11211"",""country"":""United States"",""phone"":""1-718-486-7422"",""website"":""http://www.brooklynbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""79 North Eleventh Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.7215,""lon"":-73.9575}}",1,10,1
+anchor_brewing-old_foghorn_1998,0,0,244376666114,"{""name"":""Old Foghorn 1998"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+brasserie_la_caracole-saxo,0,0,244478377984,"{""name"":""Saxo"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_caracole"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+new_belgium_brewing-fat_tire_amber_ale,0,0,244857634817,"{""name"":""Fat Tire Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Named in honor of our founder Jeff's bike trip through Belgium, Fat Tire Amber Ale marks a turning point in the young electrical engineer's home brewing. \r\n\r\nBelgian beers use a far broader pallet of ingredients (fruits, spices, esoteric yeast strains) than German or English styles. Jeff found the Belgian approach freeing. Upon his return, Jeff created Fat Tire and Abbey Belgian Ale, (assuming Abbey would be his big gun). He and his wife, Kim traveled around sampling their homebrews to the public. \r\n\r\nFat Tire's appeal quickly became evident. People liked everything about it. Except the name. Fat Tire won fans is in its sense of balance: toasty, biscuit-like malt flavors coasting in equilibrium with hoppy freshness."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,1,1
+boston_beer_company-samuel_adams_white_ale,0,0,244380139520,"{""name"":""Samuel Adams White Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Spicy yet smooth. Brewed with 10 exotic spices.\r\nThis beer's roots are in Belgium, and the classic Wit biers produced by Belgium's brewers. The style gets its name from the white, milky appearance of this unfiltered wheat ale. The brewers of Samuel Adams® beer, taking inspiration from the Belgians, have created a classic of their own. On the malt side, we use malted two row Pale barley, malted wheat, and Munich malt to give this beer a crisp, malty, cereal finish and smooth mouth feel. The hops used are Noble Tettnang Tettnanger hops. At the end of the kettle boil, we add a proprietary spice blend to give Samuel Adams® White Ale a unique and complex flavor, without being overpowering or cloying. The spice blend includes orange and lemon peel, dried plum, grains of paradise, coriander, anise, hibiscus, rose hips, tamarind, and vanilla. It is this special blend of spices that gives Samuel Adams® White Ale its unique character, complexity and refreshing drinkability. The beer is coarse filtered, leaving a white haze from the malt proteins. Our proprietary top fermenting ale yeast ferments the beer, imparting its signature character - bright and slightly fruity."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,58,1
+central_city_brewing_company-steelhead_stout,0,0,244478181379,"{""name"":""Steelhead Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,11,1
+privatbrauerei_erdinger_weissbru-oktoberfest_weizen,0,0,244999389185,"{""name"":""Oktoberfest Weizen"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_erdinger_weissbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+new_zealand_breweries_limited-speight_s_gold_medal_ale,0,0,244873035778,"{""name"":""Speight's Gold Medal Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_zealand_breweries_limited"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,40,1
+21st_amendment_brewery_cafe-563_stout,0,0,244371423232,"{""name"":""563 Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep black color, toasted black burnt coffee flavors and aroma. Dispensed with Nitrogen through a slow-flow faucet giving it the characteristic cascading effect, resulting in a rich dense creamy head."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+adnams_co-adnams_tally_ho,0,0,244372406272,"{""name"":""Adnams Tally Ho"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""adnams_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The original winter warmer, Tally-Ho is actually a barley wine brewed to a nineteenth century recipe. It's sweet; it's heart-warming; it's rich - but watch out, it's got a kick like a drayman's horse!"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,37,1
+firestone_walker_brewing_company-firestole_pale_31,0,0,244609843200,"{""name"":""Firestole Pale 31"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firestone_walker_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""One of the most award-winning American style pale ales in the country. This is the American beer style that started a revolution in taste. We’ve taken the classic British pale ale and elevated it with a wonderful dose of northwest American hops. A crisp floral hop aroma precedes a medium-bodied clean finishing ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,8,1
+founders_brewing-rubaeus,0,0,244609515520,"{""name"":""Rubaeus"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""As promised Founders Brewing Company has created something unlike the rest. Amongst this summers over croweded race to cloudy wheat beers, we have decided to embark down a path all our own. Using only fresh rasberries, rubaeus translates into intese flavors combined with a no hesitation malt bill. In fermentation we add fresh rasberries at five separate stages to achieve the ulttimate balance between tartness and sweetness."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,7,1
+cerveceria_la_constancia,0,0,244479623169,"{""name"":""Cervecería La Constancia"",""city"":""San Salvador"",""state"":"""",""code"":"""",""country"":""El Salvador"",""phone"":""2231-5143"",""website"":""http://www.laconstancia.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,14,1
+brasserie_fantme-dark_white,0,0,244499021824,"{""name"":""Dark White"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_fantme"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+jacob_leinenkugel_brewing_company-fireside_nut_brown,0,0,244734820354,"{""name"":""Fireside Nut Brown"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,2,1
+kona_brewing-pipeline_porter,0,0,244753891329,"{""name"":""Pipeline Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pipeline Porter is smooth and dark with a distinctive roasty aroma and earthy complexity from its diverse blends of premium malted barley. This celebration of malt unites with freshly roasted 100% Kona coffee grown at Cornwell Estate on Hawaii’s Big Island, lending a unique roasted aroma and flavor. A delicate blend of hops rounds out this palate-pleasing brew."",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+lafayette_brewing-black_angus_oatmeal_stout,0,0,244734296068,"{""name"":""Black Angus Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lafayette_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,0,1
+f_x_matt_brewing-saranac_brown_ale,0,0,244630290432,"{""name"":""Saranac Brown Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Brown Ale is brewed with American malt and hops, and traditional ale yeast. Look for a sweet, chocolaty taste, with balanced bitterness resulting in a full flavored but smoothly drinkable beer."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,56,1
+anchor_brewing-christmas_ale_2007,0,0,244377124866,"{""name"":""Christmas Ale 2007"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+boulder_beer_company-cold_hop,0,0,244363296768,"{""name"":""Cold Hop"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,17,1
+cigar_city_brewing-jai_alai_ipa,0,0,244490436608,"{""name"":""Jai Alai IPA"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cigar_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Jai Alai IPA is a monster interpretation of an American IPA. In fact, it is so big that it equals the alcohol of some double IPAs on the market. Our IPA uses 6 different hop varietals, with Simcoe hops only being used for dry hopping. The rest of the hop additions are blended at different IBU's (International Bittering Units) in groups of three hops per addition in order to create more hop complexity. At CCB, we love hops but also feel that balance is important for IPAs. So Jai Alai features a sturday caramel malt component which helps to create balance, staving off hop astringency. Ultimately, Jai Alai is a very strong interpretation of a single American IPA. We hope that it makes Tampa Bay natives happy because this is head brewer Wayne Wamble's favorite Cigar City beer and he'd love to share one with you!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,39,1
+great_dane_pub_and_brewing_2-stone_of_scone_scotch_ale,0,0,244735344640,"{""name"":""Stone of Scone Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,4,1
+stone_brewing_co-9th_anniversary_ipa,0,0,245107654656,"{""name"":""9th Anniversary IPA"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,22,1
+knigsegger_walderbru-walderbrau_export,0,0,244736262145,"{""name"":""WalderBräu Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""knigsegger_walderbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+brasserie_d_ecaussinnes,0,0,244378828801,"{""name"":""Brasserie d'Ecaussinnes"",""city"":""Ecaussinnes"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-067-/-34-22-77"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""rue Restaumont, 118""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.5593,""lon"":4.1365}}",1,54,1
+oskar_blues_grill_and_brew-gordon,0,0,244874084352,"{""name"":""Gordon"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Gordon is a hybrid version of strong ale, somewhere between an Imperial Red and a Double IPA. We make it with six different malts and three types of hops, then dry-hop it with a mutha lode of Amarillo hops. It is 8.7% alcohol by volume, and has 85 International Bittering Units. \r\n\r\nIt features a gooey, resiny aroma and a luscious mouthfeel. Gordon is brewed with dash of chocolate malt in it, to round out its load of hops and balance the beer. The result is an assertive yet exceptionally smooth version of strong beer.\r\n\r\nWe brew Gordon in tribute to the late Gordon Knight. In addition to opening some of Colorado’s first microbreweries, Knight was a Vietnam vet, grade-A citizen, and huge promoter of craft beer. He lost his life in 2002 while fighting a wild fire outside of Lyons, Colorado.\r\n\r\nOriginally our winter seasonal beer, it has become a cult favorite of extreme-beer lovers, so we now brew occasional batches of Gordon throughout the year. Released in bottles in 2003 and 2004, Gordon is now sold in four packs of hand-labeled cans and on draft in select markets.\r\n\r\n--http://www.oskarblues.com/brew/"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,42,1
+breckenridge_brewery-471_double_ipa,0,0,244480212992,"{""name"":""471 Double IPA"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,16,1
+egan_brewing-hefeweizen,0,0,244612923392,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,15,1
+butte_creek_brewing,0,0,244479164418,"{""name"":""Butte Creek Brewing"",""city"":""Chico"",""state"":""California"",""code"":""95928"",""country"":""United States"",""phone"":""1-530-894-7906"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""945 West Second Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7245,""lon"":-121.848}}",1,13,1
+kulmbacher_mnchshof_bru-original_pils,0,0,244751007744,"{""name"":""Original Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_mnchshof_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+rock_bottom_restaurant_brewery_minneapolis-eric_the_red,0,0,245000044546,"{""name"":""Eric the Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,47,1
+bamberger_mahr_s_bru-ungespundet_lager_hefetrub,0,0,244369457152,"{""name"":""Ungespundet Lager Hefetrub"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+coors_brewing_golden_brewery-coors_extra_gold_lager,0,0,244489977856,"{""name"":""Coors Extra Gold Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Coors' Extra Gold Lager is a rich, full-flavored lager that has a deep golden color.  Extra Gold Lager starts with the slow aging of its roasted malts, which are then combined with its other premium ingredients and slow-brewed to produce this exceptional, refined lager."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+titletown_brewing-belgian_summer_ale,0,0,245107326977,"{""name"":""Belgian Summer Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+timmermans-timmermans_faro,0,0,245108244481,"{""name"":""Timmermans  Faro"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+gottberg_brew_pub-princess_of_darkness_porter,0,0,244610367489,"{""name"":""Princess of Darkness Porter"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,9,1
+brouwerij_van_hoegaarden-original_white_ale,0,0,244487815168,"{""name"":""Original White Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_hoegaarden"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoegaarden, both unique and very refreshing, is an authentic Belgian wheat beer. In fact, it is the original “Wit” beer! First brewed in 1445, this top-fermented beer is refermented in the bottle or keg. Hoegaarden has a distinctive, cloudy yellow colour and a uniquely refined taste that balances a slight spiciness from a touch of coriander and orange peel.""}",1,33,1
+nebraska_brewing_company-brunette_nut_brown_ale,0,0,244874805250,"{""name"":""Brunette Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,44,1
+pete_s_brewing-wicked_ale,0,0,244998209536,"{""name"":""Wicked Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pete's Wicked Ale is an experience out of the ordinary. Our tantalizing ruby-brown ale with distinctive malts and aromatic Brewers Gold hops is sure to stir up an urge to get loose."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,43,1
+elliott_bay_brewery_and_pub-riot_ale,0,0,244618362880,"{""name"":""Riot Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elliott_bay_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+hoffbrau_steaks_brewery_2-dunkel_weizen,0,0,244735868929,"{""name"":""Dunkel Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+mia_and_pia_s_pizzeria_and_brewhouse-kalamath_basin_ipa,0,0,244858421249,"{""name"":""Kalamath Basin IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mia_and_pia_s_pizzeria_and_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+brasserie_de_silly-scotch,0,0,244379222016,"{""name"":""Scotch"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_silly"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+dogfish_head_craft_brewery-60_minute_ipa,0,0,244628520960,"{""name"":""60 Minute IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship beer. A session India Pale Ale brewed with Warrior, Amarillo & 'Mystery Hop X.' A powerful East Coast I.P.A. with a lot of citrusy hop character. THE session beer for beer geeks like us!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,52,1
+brouwerij_de_block,0,0,244477788160,"{""name"":""Brouwerij De Block"",""city"":""Merchtem-Peizegem"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-052-37-21-59"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Nieuwbaan 92""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.985,""lon"":4.2226}}",1,10,1
+anderson_valley_brewing-horn_of_the_bear_barleywine,0,0,244376731648,"{""name"":""Horn of the Bear Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+brauerei_hrlimann-hexen_brau,0,0,244478377985,"{""name"":""Hexen Bräu"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_hrlimann"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,12,1
+new_holland_brewing_company-full_circle,0,0,244857700352,"{""name"":""Full Circle"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A kölsch-style beer, Full Circle is a refreshing celebration of our brewery’s belief in balance. The soft, well-rounded malt character, light hop profile and crisp finish bring us back around to the familiar tastes of classic, thirst-quenching beer. We recommend Full Circle with fish and just about anything from the grill.""}",1,1,1
+brasserie_bnifontaine-castelain_st_amand_french_country_ale,0,0,244380139521,"{""name"":""Castelain St.Amand French Country Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_bnifontaine"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+cervecera_centro_americana_s_a,0,0,244478246912,"{""name"":""Cervecera Centro Americana S.A."",""city"":""Guatemala City"",""state"":"""",""code"":"""",""country"":""Guatemala"",""phone"":""502-288-1555-/-289-1"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3ra.Av.Norte Final, Finca El Zapote, Zona 2""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":14.6133,""lon"":-90.5353}}",1,11,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-weisse_dunkel,0,0,244999454720,"{""name"":""Weisse Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+o_gara_s_bar_grill-irish_gold,0,0,244873101312,"{""name"":""Irish Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_gara_s_bar_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+21st_amendment_brewery_cafe-north_star_red,0,0,244370898944,"{""name"":""North Star Red"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""21st_amendment_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep amber color. Subtle hop floral nose intertwined with sweet crystal malt aromas. Rich malt flavors supporting a slight bitterness finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,34,1
+aass_brewery-juleol,0,0,244371488768,"{""name"":""Juleøl"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aass_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Norwegian Juleøl can be traced back more that 1000 years. The \""Gulatinglov\"", one of the first Norwegian laws written in the 9th century, has a chapter on brewing beer for the midwinter celebration in January. The festivities were held to celebrate the Norse Gods; Odin, Frøy and Njord as well as the \""return\"" of the sun.\r\nFurthermore, the tradition was adopted by the Vikings that brought Christianity to the country between 1000 and 1100. They moved the tradition to December in connection with the birth of Jesus. \r\nIn those days a farmer that did not set aside the best crop to produce the beer could lose his house to the king and the church. The law has been changed, but we promise you that we still use the very best of malt, yeast, hops, and pure Norwegian water to produce our Christmas beer.\r\n\r\nAass Juleøl has won most of the Norwegian Juleøl taste test conducted over time. For those of you that know what \""lutefisk\"" is, Aass Juleøl is the perfect choice of beverage to this traditional Norwegian dish."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,35,1
+anderson_valley_brewing-winter_solstice_seasonal_ale_1992,0,0,244372406273,"{""name"":""Winter Solstice Seasonal Ale 1992"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+first_coast_brewing-golden_lager,0,0,244609843201,"{""name"":""Golden Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""first_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+gaslight_brewery-pirate_pale,0,0,244609515521,"{""name"":""Pirate Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+chelsea_brewing_company,0,0,244479623170,"{""name"":""Chelsea Brewing Company"",""city"":""New York"",""state"":""New York"",""code"":""10011"",""country"":""United States"",""phone"":""212.336.6440"",""website"":""http://chelseabrewingco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Chelsea Brewing Company, rated the best brewery in New York, is a first class waterfront restaurant and the only micro-brewery in Manhattan located at pier 59.With over 15 years of experience, and 8 National Awards, we are proud to serve up to 27 natural hand-crafted ales and specialty beers using only the finest malts and hops from around the world. We offer beer tastings, brewery tours and group packages."",""address"":[""Chelsea Piers, Pier 59""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":40.7457,""lon"":-74.0086}}",1,14,1
+brewery_creek_brewing,0,0,244499087360,"{""name"":""Brewery Creek Brewing"",""city"":""Mineral Point"",""state"":""Wisconsin"",""code"":""53565"",""country"":""United States"",""phone"":""1-608-987-3298"",""website"":""http://www.brewerycreek.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewery Creek.  It's where we live.  It's where we work.  When we started this project we decided to pursue three businesses.  Just so we wouldn't get bored.  The lodging business includes five rooms at the Inn, and two Cottages on Shake Rag Street.  Then there is the Brewpub Restaurant in the Commerce Street building.  Last but certainly not least is the Brewery Creek Brewing Company, behind the glass doors of the restaurant. Our brewery is a modern, 15-barrel brew house capable of making up to 3,000 barrels of beer per year. I an make ales or lagers, but mostly it has been ales, which tend to have a more complex flavor profile.  I can use a simple one step infusion mash, or more elaborate multi-temperature steps."",""address"":[""23 Commerce Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.8606,""lon"":-90.1772}}",1,59,1
+jacob_leinenkugel_brewing_company-hefeweizen,0,0,244734820355,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,2,1
+live_oak_brewing-oaktoberfest,0,0,244876312576,"{""name"":""Oaktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""live_oak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A fall classic, our Oaktoberfest emphasizes rich malt flavor. We use German malt and hops to give it an authentic Bavarian character. The rich, maltiness of this brew is a good match with spicy cuisine, as well as barbecue. Live Oak Oaktoberfest will certainly raise the level of enjoyment at your next fall gathering. Available September - December"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,48,1
+lakefront_brewery-organic_extra_special_bitter,0,0,244734361600,"{""name"":""Organic Extra Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+fifty_fifty_brewing_co-imperial_eclipse_stout,0,0,244630290433,"{""name"":""Imperial Eclipse Stout"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,56,1
+anderson_valley_brewing-deep_enders_dark,0,0,244377190400,"{""name"":""Deep Enders Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,50,1
+brasserie_d_ecaussinnes-ultrablonde,0,0,244363296769,"{""name"":""Ultrablonde"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_ecaussinnes"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+climax_brewing_copmany,0,0,244490436609,"{""name"":""Climax Brewing Copmany"",""city"":""Roselle Park"",""state"":""New Jersey"",""code"":""7204"",""country"":""United States"",""phone"":""(908) 620-9585"",""website"":""http://www.climaxbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""112 Valley Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.6598,""lon"":-74.283}}",1,39,1
+great_divide_brewing-old_ruffian,0,0,244735410176,"{""name"":""Old Ruffian"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Old Ruffian is a hefty, hop-forward Barley Wine. Seemingly mellow at first sniff, with its subtle fruit aromas and complex caramel sweetness, this deep mahogany-hued ale quickly shows its true character marked by bold hop flavors and massive hop bitterness. Old Ruffian’s rich, slightly creamy, caramel malt mouthfeel balances its grapefruit, pine, and floral hop flavors, working wonders on your palate."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,4,1
+sweetwater_brewing_atlanta-blue,0,0,245107654657,"{""name"":""Blue"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_atlanta"",""updated"":""2010-07-22 20:00:20"",""description"":""Sweetwater Blue is a unique light bodied ale enhanced with a hint of fresh blueberries. This euphoric experience begins with an appealing blueberry aroma and finishes as a surprisingly thirst-quenching ale."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,22,1
+lakefront_brewery-bock,0,0,244736262146,"{""name"":""Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,6,1
+brasserie_de_l_abbaye_val_dieu-triple,0,0,244378828802,"{""name"":""Triple"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_val_dieu"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+oskar_blues_grill_and_brew-old_chub,0,0,244874149888,"{""name"":""Old Chub"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Old Chub is a Scottish strong ale brewed with hearty amounts of seven different malts, including crystal and chocolate malts, and a smidge of US and UK hops. Old Chub also gets a dash of beechwood-smoked grains imported from Bamburg, Germany, home of the world's greatest smoked beers. Old Chub is 8% alcohol by volume.  While Dale's satisfies our hop addiction, Old Chub takes care of our deep affections for malt.  The cola-colored beer (almost black) features a tan head, a creamy, skim-milk mouthfeel, and rich, semi-sweet flavors of caramel and chocolate throughout. The addition of smoked grains gives Old Chub a delicate kiss of smoke on the finish.  Old Chub is the beer equivalent of a lightly smoked single malt scotch, or your favorite dark chocolate. We call it Rocky Mountain Mutha's Milk. People who tell us defiantly, \""I don't drink dark beer,\"" often fall deeply in love with Old Chub. We can't blame them."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,42,1
+brewery_de_troch,0,0,244480212993,"{""name"":""Brewery De Troch"",""city"":""Ternat"",""state"":""Vlaams Brabant"",""code"":"""",""country"":""Belgium"",""phone"":""32-02-582-10-27"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Langestraat 20""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.853,""lon"":4.1649}}",1,16,1
+elysian_brewery_public_house,0,0,244612923393,"{""name"":""Elysian Brewery & Public House"",""city"":""Seattle"",""state"":""Washington"",""code"":""98122"",""country"":""United States"",""phone"":""1-206-860-1920"",""website"":""http://www.elysianbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1221 East Pike Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.614,""lon"":-122.316}}",1,15,1
+cigar_city_brewing-big_sound_scotch_ale,0,0,244479229952,"{""name"":""Big Sound Scotch Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cigar_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Big Sound Scotch Ale is dedicated to our good buddy Gino, the most punk rock bagpiper you'll ever meet, and the rest of the men and women of Tampa Bay Pipes and Drums. Brown in color, Big Sound has huge notes of dark sweet toffee with underlying mild notes of coffee in the aroma. The flavor starts with a slight note of cherry and then opens into a Goliath of a malt character with notes of dark sweet toffee, slight hints of coffee and mild notes of toasted bread in the finish. Big Sound Scotch Ale pairs well with Haggis, Highland Games, Huge Heads and Enormous Pillows and of course Bagpipe music."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,13,1
+laconner_brewing,0,0,244751007745,"{""name"":""LaConner Brewing"",""city"":""LaConner"",""state"":""Washington"",""code"":""98257"",""country"":""United States"",""phone"":""1-360-466-1415"",""website"":""http://www.insidelaconner.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""117 South First Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.3917,""lon"":-122.495}}",1,41,1
+ross_valley_brewing-kolsch,0,0,245000110080,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ross_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+barley_creek_brewing-navigator_golden_ale,0,0,244369522688,"{""name"":""Navigator Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Another one of our most popular brews. Navigator Gold has a crisp and slighly hoppy finish. It's cold filtered and moderately carbonated."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,31,1
+crescent_city_brewhouse-steam,0,0,244489977857,"{""name"":""Steam"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crescent_city_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+titletown_brewing-weizen_bock,0,0,245107326978,"{""name"":""Weizen Bock"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,21,1
+timmermans-timmermans_kriek,0,0,245108244482,"{""name"":""Timmermans Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,23,1
+gottberg_brew_pub-wilsteraner_altbier,0,0,244610367490,"{""name"":""Wilsteraner Altbier"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,9,1
+bull_bush_pub_brewery-barleywine,0,0,244487815169,"{""name"":""Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+o_grady_s_brewery_and_pub_1-chicago_fire,0,0,244874870784,"{""name"":""Chicago Fire"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_grady_s_brewery_and_pub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+pete_s_place,0,0,244998275072,"{""name"":""Pete's Place"",""city"":""Krebs"",""state"":""Oklahoma"",""code"":""74554"",""country"":""United States"",""phone"":""1-918-423-2042"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""120 SW Eighth Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":34.9251,""lon"":-95.7253}}",1,43,1
+f_x_matt_brewing-saranac_chocolate_amber,0,0,244618362881,"{""name"":""Saranac Chocolate Amber"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""There comes a time every year in the Adirondacks when a heavier, more malty brew compliments the cold winter months. This brew showcases a variety of dark roasted malts, producing a beer with a rich chocolaty flavor.""}",1,28,1
+jacob_leinenkugel_brewing_company-big_butt_doppelbock,0,0,244735868930,"{""name"":""Big Butt Doppelbock"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,5,1
+miller_brewing-miller_genuine_draft_64,0,0,244858421250,"{""name"":""Miller Genuine Draft 64"",""abv"":2.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,3,1
+brasserie_duyck-biere_de_noel,0,0,244497580032,"{""name"":""Bière de Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_duyck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+dortmunder_actien_brauerei_dab-traditional,0,0,244628520961,"{""name"":""Traditional"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dortmunder_actien_brauerei_dab"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,52,1
+cervejaria_sudbrack-eisenbahn_escura,0,0,244477788161,"{""name"":""Eisenbahn Escura"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_sudbrack"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,10,1
+anheuser_busch-michelob_ultra_amber,0,0,244376731649,"{""name"":""Michelob Ultra Amber"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Michelob ULTRA Amber is an American-style amber lager that boasts a beautifully rich, dark-amber color with a full-bodied, malty taste that also is low in calories and carbohydrates."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+brennerei_distillerie_radermacher,0,0,244478443520,"{""name"":""Brennerei-Distillerie Radermacher"",""city"":""Raeren"",""state"":""Lige"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)87-85.82.32"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Spitalstrasse 50""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.6718,""lon"":6.122}}",1,12,1
+nodding_head_brewpub-60_shilling,0,0,244857700353,"{""name"":""60 Shilling"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""lighter Scotish-Style Ale... amber in color with plenty of maltiness... reminds us all that sometime there just aren't enough O's in smooth"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,1,1
+brasserie_de_cazeau-tournay_black,0,0,244380205056,"{""name"":""Tournay Black"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_cazeau"",""updated"":""2010-07-22 20:00:20"",""description"":""Tournay Black is a bottle conditioned, Belgian stout brewed by Brasserie de Cazeau which is a farm-brewery located in the south of Belgium.  It was originally brewed as a winter ale under the name Tournay de Noel, but later became a year-round release.  They didn't provide much specific detail about how it was brewed except to say that it is made with water, malts, candi-sugar, hops, and yeast.  It is 7.6% ABV with a recommended drinking temperature of +/- 50 degrees.  The brewer states that the tasting notes are of, \""roasted malts, coffee, bitter chocolate, earth, and cigar ash.\""  Well, I am a prodigious cigar smoker and I can't say that I would want to consume the ash."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,58,1
+coast_brewing-biloxi_blonde,0,0,244478246913,"{""name"":""Biloxi Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+raccoon_river_brewing-maibock,0,0,244999454721,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,46,1
+oak_creek_brewery-king_crimson,0,0,244873101313,"{""name"":""King Crimson"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,40,1
+abita_brewing_company-triple_citra_hopped_satsuma_wit,0,0,244370964480,"{""name"":""Triple Citra Hopped Satsuma Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abita_brewing_company"",""updated"":""2011-08-15 11:53:48"",""description"":""Similar to the Harvest Wit but with a lot more punch. A very pronounce citrus aroma with a triple hop flavor makes for one great beer."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,34,1
+ali_i_brewing-amber_ale,0,0,244371488769,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ali_i_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,35,1
+arthur_guinness_son,0,0,244372471808,"{""name"":""Arthur Guinness & Son"",""city"":""Dublin"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":"""",""website"":""http://www.guinness.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""St. James's Gate""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.3433,""lon"":-6.2846}}",1,37,1
+flatlander_s_restaurant_brewery-locomotive_stout,0,0,244609843202,"{""name"":""Locomotive Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,8,1
+glen_ellyn_sports_brew-equinox_e_s_b,0,0,244609515522,"{""name"":""Equinox E.S.B."",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+chimay_abbaye_notre_dame_de_scourmont,0,0,244479688704,"{""name"":""Chimay (Abbaye Notre Dame de Scourmont)"",""city"":""Chimay"",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":""+32 (0)60 21 03 27"",""website"":""http://www.chimay.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Chimay is an authentic Trappist beer that is it is brewed within a Trappist monastery, under the control and responsibility of the monastic community. Only 6 beers in Belgium can carry the appellation Trappist: Chimay, Orval, Rochefort, Westmalle, Westvleteren and Achel."",""address"":[""Route de Charlemagne 8""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.0355,""lon"":4.3777}}",1,14,1
+brouwerij_het_anker-gouden_carolus_ambrio_1471,0,0,244499087361,"{""name"":""Gouden Carolus Ambrio 1471"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_het_anker"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+jasper_ridge_brewery-iron_red_ale,0,0,244734885888,"{""name"":""Iron Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jasper_ridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,2,1
+lost_coast_brewery-downtown_brown,0,0,244876378112,"{""name"":""Downtown Brown"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth, full-bodied nut brown ale, lightly hopped with a hint of roasted chocolate and crystal malts.  This ale is dark in color without the heavy taste of porter or stout."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,48,1
+lang_creek_brewry,0,0,244734361601,"{""name"":""Lang Creek Brewry"",""city"":""Marion"",""state"":""Montana"",""code"":""59925"",""country"":""United States"",""phone"":""(406) 858-2200"",""website"":""http://langcreekbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Good beer here!!"",""address"":[""655 Lang Creek Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.014,""lon"":-115.011}}",1,0,1
+firehouse_brewing,0,0,244630290434,"{""name"":""Firehouse Brewing"",""city"":""Rapid City"",""state"":""South Dakota"",""code"":""57701"",""country"":""United States"",""phone"":""1-605-348-1915"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""610 Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.0812,""lon"":-103.227}}",1,56,1
+angelic_brewing-bacchanal_blonde,0,0,244377190401,"{""name"":""Bacchanal Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""angelic_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+brasserie_d_orval,0,0,244363296770,"{""name"":""Brasserie d'Orval"",""city"":""Villers-devant-Orval"",""state"":""Luxembourg"",""code"":"""",""country"":""Belgium"",""phone"":""32-061-31-12-61"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Abbaye de Notre-Dame d'Orval""]}",1,17,1
+coast_brewing-sunset_amber,0,0,244490436610,"{""name"":""Sunset Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,39,1
+great_lakes_brewing-christmas_ale,0,0,244735410177,"{""name"":""Christmas Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A holiday ale brewed with honey and spiced with fresh ginger and cinnamon. Availability, November to December.""}",1,4,1
+t_bonz_gill_grill_and_brewery-raspberry_wheat,0,0,245107654658,"{""name"":""Raspberry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_bonz_gill_grill_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,22,1
+lancaster_brewing_co,0,0,244736262147,"{""name"":""Lancaster Brewing Co."",""city"":""Lancaster"",""state"":""Pennsylvania"",""code"":""17602"",""country"":""United States"",""phone"":""717-391-6258"",""website"":""http://www.lancasterbrewing.com/index.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We brew our beer in the heart of Lancaster County, Pennsylvania with great respect for the old traditions of brewing. Our master brewer, Christian Heim, has a strong commitment to quality and uses advanced brewing techniques to produce a consistent and high quality beer. Savor the hopped aromas as they come alive and accentuate the wholesome malt flavors in our ales and lagers."",""address"":[""302 N. Plum St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.0438,""lon"":-76.2984}}",1,6,1
+brasserie_la_caracole-troublette,0,0,244497317888,"{""name"":""Troublette"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_caracole"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+ottakringer_brauerei_ag,0,0,244874215424,"{""name"":""Ottakringer Brauerei AG"",""city"":""Wien"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""0043 (0) 1 491000"",""website"":""http://www.ottakringer.at/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ottakringerstrasse 91""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.2133,""lon"":16.3229}}",1,42,1
+brewery_ommegang-rare_vos,0,0,244480278528,"{""name"":""Rare Vos"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_ommegang"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,16,1
+estes_park_brewery-samson_stout,0,0,244612923394,"{""name"":""Samson Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our commemorative ale honors Samson the elk. This is an oatmeal stout that is full-bodied with a wonderful roasted flavor and just a touch of sweetness."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,15,1
+city_brewing_company_llc,0,0,244479229953,"{""name"":""City Brewing Company, LLC"",""city"":""La Crosse"",""state"":""Wisconsin"",""code"":""54601"",""country"":""United States"",""phone"":""1-608-785-4200"",""website"":""http://www.citybrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""City Brewing Company is a premier, state-of-the-art beverage production and packaging company located in La Crosse, WI.  Our facility has been transformed from a historical brewery into a facility capable of manufacturing and packaging beers, teas, soft drinks, energy drinks and other new age beverages.  Our packaging capacity of over 50 million cases makes us one of the largest beverage producers in the country."",""address"":[""925 South Third Street""]}",1,13,1
+laughing_dog_brewing,0,0,244751007746,"{""name"":""Laughing Dog Brewing"",""city"":""Ponderay"",""state"":""Idaho"",""code"":""83852"",""country"":""United States"",""phone"":""208-263-9222"",""website"":""http://www.laughingdogbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Great Local brew.  They have 5 main brews, but the 2 I love most are their Pale Ale and Cream Ale.  The Pale Ale has a great hoppy finish, while the Cream Ale has a nice smooth taste. They also have a few other great brews!"",""address"":[""55 Emerald Industrial Park Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.3003,""lon"":-116.538}}",1,41,1
+route_66_brewery-winter_wheat,0,0,245000110081,"{""name"":""Winter Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+basil_t_s_brew_pub_and_italian_grill-apple_ale,0,0,244369522689,"{""name"":""Apple Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""basil_t_s_brew_pub_and_italian_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,31,1
+crooked_waters_brewing-steamboat_oatmeal_stout,0,0,244489977858,"{""name"":""Steamboat Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crooked_waters_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+tommyknocker_brewery_and_pub-cocoa_porter,0,0,245107392512,"{""name"":""Cocoa Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+troegs_brewing-scratch_16_2008,0,0,245108310016,"{""name"":""Scratch #16 2008"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch #16-2008 combines the bitterness of two aroma hops, the lush sweetness of honey and malt and an earthly yeast taste creating a Winter Warmer designed to ward off the coldest days.\r\n\r\nThe dark, rich amber color comes from a combination of molasses and crystal malts; the Thames Valley brings a distinct earthly flavor; white the blend of hops creates fruity (Amarillo) and piney (Cluster) bitterness.\r\n\r\nThe Winter Warmer ends with a slight warming sensation from the elevated alcohol content.  Enjoy this one throughout the winter months.  Cheers."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,23,1
+gottberg_brew_pub,0,0,244610433024,"{""name"":""Gottberg Brew Pub"",""city"":""Columbus"",""state"":""Nebraska"",""code"":""68601"",""country"":""United States"",""phone"":""1-402-562-6488"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2804 13th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.4295,""lon"":-97.3623}}",1,9,1
+burgerbrau_wolnzach-roggenbier,0,0,244487815170,"{""name"":""Roggenbier"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""burgerbrau_wolnzach"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+oakshire,0,0,244874870785,"{""name"":""Oakshire"",""city"":""Eugene"",""state"":""Or"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2011-07-07 07:44:13"",""description"":"""",""address"":[]}",1,44,1
+ph_woods_diner_and_brewery-hard_woods_pale,0,0,244998340608,"{""name"":""Hard Woods Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ph_woods_diner_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+f_x_matt_brewing-saranac_golden_pilsner,0,0,244618362882,"{""name"":""Saranac Golden Pilsner"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Pilsener is a light bodied American Wheat Beer that is judiciously hopped with Cascade and Tettnang hops. \""Dry-Hopping\"" imparts the distinctive hop aroma and finish. Look for a smooth, crisp taste and brilliant golden color. Enjoy!"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,28,1
+jolly_pumpkin_artisan_ales-calabaza_blanca,0,0,244735934464,"{""name"":""Calabaza Blanca"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Aged in large oak casks and refermented in the bottle, Calabaza Blanca is a Belgian Biere Blanche. Spiced with orange peel and corriander, you'll find it refreshingly tart, with a wonderfully dry finish."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,5,1
+minneapolis_town_hall_brewery-bright_spot_golden_ale,0,0,244858421251,"{""name"":""Bright Spot Golden Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This American-style golden ale is our lightest, in both color and flavor. Bright Spot is brewed with locally malted 2-row barley and the finest American, Czech and German hops lending a well-balanced, refreshing taste. A compliment to nearly any of our menu choices."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,3,1
+brouwerij_de_gouden_boom,0,0,244497580033,"{""name"":""Brouwerij de Gouden Boom"",""city"":""Brugge"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.2094,""lon"":3.2252}}",1,55,1
+dostal_alley-powder_keg_raspberry_porter,0,0,244628586496,"{""name"":""Powder Keg Raspberry Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dostal_alley"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+coopers_brewery-birell,0,0,244477788162,"{""name"":""Birell"",""abv"":0.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Birell has all the hallmarks of a great premium beer, rich colour, full malty flavour and the ability to quench a thirst, with one important difference - virtually no alcohol. \r\n\r\nBrewed under license in Australia by Coopers, Birell is made using only the finest Australian malted barley, hops and yeast, with no artificial additives or preservatives.\r\n\r\nCoopers Birell may be found in most supermarkets (375ml bottles or cans)."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,10,1
+appalachian_brewing_company-coconut_porter,0,0,244376797184,"{""name"":""Coconut Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Based on the winning Homebrew Contest entry by John Slotterback and Fred Rogers, this dark, roasty porter is infused with fresh coconut which produces a sweet finish.  The coconut balances the chocolaty notes, producing a taste not unlike German chocolate cake in a glass! This will be brewed in Camp Hill and distributed in limited quantity to Harrisburg and Gettysburg."",""style"":""Porter"",""category"":""Irish Ale""}",1,49,1
+brewery_ommegang-three_philosophers,0,0,244478443521,"{""name"":""Three Philosophers"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_ommegang"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,12,1
+north_country_brewery-friar_s_porter,0,0,244857765888,"{""name"":""Friar's Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This robust porter has a lot of caramel and chocolate flavor balanced with the flavor and aroma of fuggle hops."",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+brasserie_de_l_abbaye_des_rocs-grand_cru,0,0,244380205057,"{""name"":""Grand Cru"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+coast_brewing-steel_head_stout,0,0,244478246914,"{""name"":""Steel Head Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,11,1
+red_lodge_ales,0,0,244999454722,"{""name"":""Red Lodge Ales"",""city"":""Red Lodge"",""state"":""Montana"",""code"":""59068"",""country"":""United States"",""phone"":""1-406-446-4607"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""417 North Broadway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.1913,""lon"":-109.247}}",1,46,1
+oakshire-watershed_ipa,0,0,244873101314,"{""name"":""Watershed IPA"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oakshire"",""updated"":""2011-07-07 07:44:10"",""description"":"""",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,40,1
+amherst_brewing_company-honey_pilsner,0,0,244370964481,"{""name"":""Honey Pilsner"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Crisp light lager, slightly malty with subtle hints of wildflower honey. Finished with Hallertau and Saaz hops"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,34,1
+alltech_s_lexington_brewing_company-limestone_1897_original_amber_ale_discontinued,0,0,244371488770,"{""name"":""Limestone 1897 Original Amber Ale (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alltech_s_lexington_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,35,1
+avery_brewing_company-fourteen,0,0,244372471809,"{""name"":""Fourteen"",""abv"":9.46,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+free_state_brewing-old_backus_barleywine_1997,0,0,244609908736,"{""name"":""Old Backus Barleywine 1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""free_state_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,8,1
+golden_gate_park_brewery-frambosia,0,0,244609515523,"{""name"":""Frambosia"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_gate_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,7,1
+climax_brewing_copmany-climax_wheat_ale,0,0,244479688705,"{""name"":""Climax Wheat Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoffmann Hefeweizen is our newest offering and is a traditional German wheat beer made from 60% wheat malt and 40% barley malt. Wheat Ales such as this typically have banana and clove flavors but as Dave dislikes clove, he used a special yeast to strengthen the banana flavors. Hefeweizen is a nice, light, crisp summer beer that can be served with lemon or flavored syrups."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,14,1
+brouwerij_van_steenberge-piraat_10_5,0,0,244499087362,"{""name"":""Piraat 10.5%"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Piraat is a 'living' beer, which means that after the primary fermentation in the keg, the beer also continues to evolve during the secondary fermentation in the bottle or in the keg after packaging. This is a world-class amber colored beer. American beer connoisseurs give it 98 out of 100. No other beer scores better. The flavor is so complex and so rich that every swallow conjures up new associations. Note the spicy light sweetness, which is richly balanced with the robust bitterness of the hops. It is an adventure of a beer, a treat.\"""",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,59,1
+keg_microbrewery_restaurant-brown,0,0,244734885889,"{""name"":""Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keg_microbrewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,2,1
+mad_river_brewing_company,0,0,244876443648,"{""name"":""Mad River Brewing Company"",""city"":""Blue Lake"",""state"":""California"",""code"":""95525"",""country"":""United States"",""phone"":""707-668-4151"",""website"":""http://www.madriverbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewmaster Bob Smith's dream to open a small brewery began in the late seventies. Seeking knowledge and ingredients Smith joined with a small number of individuals who were laying the foundation of the craft beer movement in California. With a small group of investors Smith formed Mad River Brewing Company in 1989. Now in our 2nd decade we continue our commitment to producing fine ales combining the most traditional brewing methods with an environmentally sound approach. For centuries the English have been known for their brewing expertise. At Mad River Brewing Company we are long on tradition and continue to handcraft our ales in the truest sense. Our award winning ales have become renowned for their unique flavor profile and consistent quality."",""address"":[""101 Taylor Way""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.8786,""lon"":-123.992}}",1,48,1
+lost_coast_brewery-8_ball_stout,0,0,244857110528,"{""name"":""8-Ball Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,0,1
+firehouse_grill_brewery-red_ale,0,0,244630290435,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,56,1
+anheuser_busch-natural_light,0,0,244377255936,"{""name"":""Natural Light"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,50,1
+brasserie_fantme-chocolat,0,0,244480671744,"{""name"":""Chocolat"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_fantme"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+coronado_brewing_company-point_loma_porter,0,0,244490502144,"{""name"":""Point Loma Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust porter, very dark in color and a roasted malt flavor from chocolate malts. Its slight bitterness is rightfully balanced with a sweet smooth finish. A full-bodied beer with medium hop bitterness and aroma."",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+great_lakes_brewing-glockenspiel,0,0,244735410178,"{""name"":""Glockenspiel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,4,1
+tailgate_beer-tailgate_amber_wave,0,0,245107720192,"{""name"":""Tailgate Amber Wave"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tailgate_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""Why put everything in a category? Live outside the box. The ‘flagship’ of TailGate Beer, Amber Wave, is a completely unique and individual beer that raises the standards and breaks all the molds.\r\n\r\nAmber Wave was inspired by America's amber waves of grain and is as unique as apple pie.  The intellectuals behind TailGate Beer created this dark, rose colored ale that drinks like honey and lingers of light caramel, with notes of chocolate and sweet subtle hops. Surprise yourself, and others, with your sophisticated palate and acute ability to find the best beer brewed for drinking, not sampling."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+left_hand_brewing_company-juju_ginger,0,0,244736327680,"{""name"":""JuJu Ginger"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+brauerei_fssla,0,0,244497317889,"{""name"":""Brauerei Fssla"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-26516"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Obere Knigsstrae 19-21""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.8942,""lon"":10.8855}}",1,54,1
+pivara_skopje,0,0,244997816320,"{""name"":""Pivara Skopje"",""city"":""Skopje"",""state"":"""",""code"":"""",""country"":""Macedonia, the Former Yugoslav Republic of"",""phone"":"""",""website"":""http://www.pivaraskopje.com.mk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.0038,""lon"":21.4522}}",1,42,1
+broad_ripple_brewing-porter,0,0,244480278529,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,16,1
+fitger_s_brewhouse_brewery_and_grill,0,0,244612988928,"{""name"":""Fitger's Brewhouse, Brewery and Grill"",""city"":""Duluth"",""state"":""Minnesota"",""code"":""55804"",""country"":""United States"",""phone"":""1-218-726-1392"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""600 East Superior Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":46.7926,""lon"":-92.0909}}",1,15,1
+deschutes_brewery-red_chair_ipa,0,0,244612005888,"{""name"":""Red Chair IPA"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Red Chair IPA is named after the oldest operating lift at Mt. Bachelor, a classic old school double that locals flock to on fresh powder mornings. This beer has been wildly popular with our pub regulars, who always seem to know when we have hit on something special. \r\n\r\nThis IPA is a bright copper beauty with a solid head and perfect lacing that typifies Deschutes ales. It has a plush body with satiny caramel flavors derived from seven varieties of malt. Despite all of this, Red Chair is still a hop forward ale, but not in the way many have gotten used to. You will find no cloying, mouth puckering bitterness here. In its place a straight up succulent citrus punch to the nose."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,13,1
+magnolia_pub_and_brewery,0,0,244873232384,"{""name"":""Magnolia Pub and Brewery"",""city"":""San Francisco"",""state"":""California"",""code"":""94117"",""country"":""United States"",""phone"":""1-415-864-7468"",""website"":""http://www.magnoliapub.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1398 Haight Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.7702,""lon"":-122.445}}",1,41,1
+russian_river_brewing-supplication,0,0,245000110082,"{""name"":""Supplication"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brown ale aged in Pinot Noir wine barrels for one year with sour cherries, Brettanomyces yeast, and Lactobacillus & Pedicoccus bacteria.""}",1,47,1
+bell_s_brewery_inc-third_coast_old_ale,0,0,244369522690,"{""name"":""Third Coast Old Ale"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A barley wine with deep amber color. The brandy of ales, this beer has vintage character and will mature in the bottle at cellar temperature for years."",""style"":""Old Ale"",""category"":""British Ale""}",1,31,1
+de_struise_brouwers-black_albert,0,0,244622622720,"{""name"":""Black Albert"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_struise_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,38,1
+tucher_bru-bajuvator_doppelbock,0,0,245107392513,"{""name"":""Bajuvator Doppelbock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tucher_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,21,1
+twin_ports_brewing-bourbon_barrel_scotch_ale,0,0,245108310017,"{""name"":""Bourbon Barrel Scotch Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_ports_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+great_dane_pub_and_brewing_1-black_earth_porter,0,0,244737376256,"{""name"":""Black Earth Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,9,1
+camerons_brewery_company,0,0,244487880704,"{""name"":""Camerons Brewery Company"",""city"":""Harltepool"",""state"":""Cleveland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01429)-266-666"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lion Brewery""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.4995,""lon"":-81.6954}}",1,33,1
+oasis_brewery_and_restaurant-pale_ale,0,0,244874936320,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oasis_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-ipa,0,0,244998340609,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+faultline_brewing_1-kolsch,0,0,244618428416,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_beer,0,0,244736000000,"{""name"":""Hitachino Nest Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,5,1
+minneapolis_town_hall_brewery-west_bank_pub_ale,0,0,244858486784,"{""name"":""West Bank Pub Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Most welcoming British pubs off a house ale or \""pub ale\"" — this is ours. We use only the finest English barley, hops and yeast to create this classic English-style pale ale. It is noted for its nice malt flavor balanced with a medium hop presence. The pub ale is often referred to as our house \""session beer\"" (a beer you can drink a number of and not fall off your barstool)."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,3,1
+brouwerij_van_eecke-poperings_hommel_ale,0,0,244497645568,"{""name"":""Poperings Hommel Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_eecke"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+dragonmead_microbrewery-bronze_griffin,0,0,244628586497,"{""name"":""Bronze Griffin"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Sweet Orange Blossom Honey is combined with Belgian two-row malted barley and Munich malt to create another Belgian classic. Tetternger and E. Kent Goldings hops are added to round out the finish of this beer. The aroma of the honey remains without the sugary sweetness."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,52,1
+cooperstown_brewing_company-strike_out_stout,0,0,244477853696,"{""name"":""Strike Out Stout"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooperstown_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Strike Out\"" is brewed with 6 malts including a balanced portion of chocolate and crystal malts. It is also brewed with 5% flaked oats for a velvet-like mouth feel. English pale, Munich and black malt, plus roasted barley round out the malt bill. Considerably lower in alcohol than both Benchwarmer Porter and Old Slugger Pale Ale, \""Strike Out\"" is a well-rounded stout, opaque black in color with a roasted palate."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,10,1
+appalachian_brewing_company-hinterland_hefe_weizen,0,0,244376797185,"{""name"":""Hinterland Hefe Weizen"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A special German wheat ale yeast produces clove and banana flavors during fermentation leaving this unfiltered beer with an incredibly spicy and fruity complexity!\r\n\r\nOur Brewmaster has acquired many medals at the Great American Beer Festival for this beer style. A difficult, four-step infusion mash schedule produces the complexity of this traditional beer style."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,49,1
+bridgeport_brewing-old_knucklehead_1999,0,0,244478443522,"{""name"":""Old Knucklehead 1999"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+oak_creek_brewery-pullman_porter,0,0,244857765889,"{""name"":""Pullman Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+brasserie_du_bouffay,0,0,244380205058,"{""name"":""Brasserie du Bouffay"",""city"":""Carquefou"",""state"":"""",""code"":""44470"",""country"":""France"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2011-10-04 00:24:33"",""description"":""La Brasserie du Bouffay est situ"",""address"":[""54 Rue des Monceaux""]}",1,58,1
+coniston_brewing-premium_xb_bluebird_bitter,0,0,244478312448,"{""name"":""Premium XB Bluebird Bitter"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coniston_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+restaurant_isarbru,0,0,244999520256,"{""name"":""Restaurant Isarbru"",""city"":""Pullach im Isartal"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-798961"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kreuzeckstrae 23""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.0708,""lon"":11.5311}}",1,46,1
+ohio_brewing-fest,0,0,244873166848,"{""name"":""Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ohio_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,40,1
+amicas_pizza_microbrews_and_more,0,0,244371030016,"{""name"":""Amicas Pizza, Microbrews and More"",""city"":""Salida"",""state"":""Colorado"",""code"":""81201"",""country"":""United States"",""phone"":""1-719-539-5219"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""136 East Second Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.535,""lon"":-105.992}}",1,34,1
+anheuser_busch-michelob_light,0,0,244371554304,"{""name"":""Michelob Light"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Michelob Light is a full-flavored and rich-tasting light lager offering a malty sweetness and aromatic hop profile\"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,35,1
+ballast_point_brewing-yellowtail_pale_ale,0,0,244372471810,"{""name"":""Yellowtail Pale Ale"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""So where can you taste a Kolsch? There are no Kolsches being imported into the United States. So you could fly to Cologne. A better idea is to come to Ballast Point Brewing Company and try our Yellowtail Pale Ale Kolsch. We make it with 5% Wheat, finish hop it with Liberty and Tettnanger hops, and ferment it with a yeast we borrowed from a brewery in Cologne. So come on in and enjoy a taste of the Rhineland!!""}",1,37,1
+glen_ellyn_sports_brew,0,0,244609908737,"{""name"":""Glen Ellyn Sports Brew"",""city"":""Glen Ellyn"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.8775,""lon"":-88.067}}",1,8,1
+goose_island_beer_company_clybourn-dublin_stout,0,0,244609581056,"{""name"":""Dublin Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+clipper_city_brewing_co-red_sky_at_night,0,0,244479688706,"{""name"":""Red Sky at Night"",""abv"":7.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is brewed in the Belgian Saison style (country farm house ale). A potent yet delicate ale, brewed with a unique Belgian yeast which develops a spicy, fruity flavor. Enormously complex. Available from May to around August."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,14,1
+bube_s_brewery,0,0,244499152896,"{""name"":""Bube's Brewery"",""city"":""Mount Joy"",""state"":""Pennsylvania"",""code"":""17552"",""country"":""United States"",""phone"":""717) 653-2056"",""website"":""http://www.bubesbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Bube's Brewery is located within the original brewery's icehouse. The mash/lauter tun and kettle have a 3.5 bbl capacity (approximately 110 gallons.) The brewers usually brew two consecutive batches to meet the capacity of the 10 bbl fermenters. In the brewery there are two 10 bbl fermenters and one 10 bbl conditioning tank for lagered beer."",""address"":[""102 North Market Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.1119,""lon"":-76.5031}}",1,59,1
+kralovsky_pivovar_krusovice-imperial_czech_premium_lager,0,0,244734885890,"{""name"":""Imperial Czech Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kralovsky_pivovar_krusovice"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+malt_shovel_brewery-james_squire_australian_best_ale_limited_release,0,0,244876509184,"{""name"":""James Squire Australian Best Ale Limited Release"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""malt_shovel_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+manayunk_brewery_and_restaurant-brilliant_barstool,0,0,244857176064,"{""name"":""Brilliant Barstool"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""A true English session ale brewed in the pale ale style using ye olde techniques of yesteryear. Specially crafted to inspire you and your thirstiest mates barstool conversations. Light copper in colour. This pint is quite malty with just enough East Kent hops for a nice, earthy hoppiness. Naturally cask conditioned, this may be served a little cold for a true Brit but is a \r\ncomplimentary double nod to one of the 1st beer styles. Cheers mate!"",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,0,1
+flossmoor_station_brewery-pullman_nut_brown_ale,0,0,244630355968,"{""name"":""Pullman Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+anheuser_busch-ziegenbock_amber,0,0,244377255937,"{""name"":""Ziegenbock Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+brauerei_herrenhausen-premium_pilsener,0,0,244480737280,"{""name"":""Premium Pilsener"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_herrenhausen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+crane_river_brewpub_and_cafe-sod_house_altbier,0,0,244490567680,"{""name"":""Sod House Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+harpoon_brewery_boston-harpoon_brown_session_ale,0,0,244735410179,"{""name"":""Harpoon Brown Session Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""Harpoon Brown is brewed to accentuate the sweeter, rounder notes derived from six different malts, including a de-husked chocolate malt that adds a hint of chocolate. The blend of these malts produces a beer that is complex and delicious without being heavy. This drinkable beer is perfect as a session beer or paired with foods.\r\n\r\nThis is the first year-round Harpoon beer the brewery has released in almost a decade.  While the craft beer industry has seen a growing trend in \""extreme\"" beers, the brewers of Harpoon wanted to create something they could sit down and enjoy over an extended period of time - a session beer.  At 4.3% alcohol by volume, the Harpoon Brown Ale has the lowest alcohol content of all Harpoon beers.\r\n\r\nHarpoon Brown Ale will be available in bottles and on draft beginning in March 2007.  An evening of celebrations to toast the beer's release will be held at locations throughout New England on Thursday, March 8th, including tastings at Harpoon's breweries in Boston, MA and Windsor, VT"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,4,1
+the_bruery-saison_de_lente,0,0,245107785728,"{""name"":""Saison De Lente"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Spring Saison is light blonde in color with a fresh hoppiness and a wild and rustic Brettanomyces character. Lighter in color and alcohol than our Saison Rue, yet equally complex in its own way. Perfect for warmer weather and Spring celebrations."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,22,1
+lion_brewery_ceylon_ltd,0,0,244859535360,"{""name"":""Lion Brewery Ceylon Ltd."",""city"":""Colombo"",""state"":"""",""code"":"""",""country"":""Sri Lanka"",""phone"":""94-331535-42"",""website"":""http://www.lionbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""No-254, Colombo Road""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.7548,""lon"":-9.1883}}",1,6,1
+brauereigasthof_adler-pils,0,0,244497383424,"{""name"":""Pils"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauereigasthof_adler"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+pizza_beer-mamma_mia_pizza_beer,0,0,244997881856,"{""name"":""Mamma Mia! Pizza Beer"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizza_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""An ale flavored with fresh tomatoes, oregano, basil and garlic."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,42,1
+brouwerij_nacional_balashi-balashi,0,0,244480278530,"{""name"":""Balashi"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_nacional_balashi"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,16,1
+flossmoor_station_brewery-zephyr_golden_ale,0,0,244612988929,"{""name"":""Zephyr Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+dock_street_beer-satellite_stout,0,0,244612071424,"{""name"":""Satellite Stout"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dock_street_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""A bold roasty stout with 50lbs of organic fair trade espresso beans. A tribute to the best coffee house in town. Coffee lovers will easily embrace this delicious brew."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,13,1
+malt_shovel_brewery-james_squire_india_pale_ale,0,0,244873297920,"{""name"":""James Squire India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""malt_shovel_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+sabmiller_india-haywards_black,0,0,245000175616,"{""name"":""Haywards Black"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Haywards Black, India’s first genuine stout beer , is handcrafted from a rich blend of the world famous Caledon valley dark roasted barley malt along with a blend of imported and locally produced pale malts. New Zealand’s super alpha hops give Haywards Black a unique and pleasantly bitter taste with a hop like aroma. The Dark Roasted malt provides a rich dark colouring along with a unique smoky taste and aroma. The Slow brewing process which incorporates specially managed yeast creates the creamy head and the rich smooth taste that stout is so much loved for. \r\n\r\nhttp://www.sabmiller.in/brands_haywards_black.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+bellows_brew_crew-stout,0,0,244369588224,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,31,1
+deschutes_brewery-jubelale,0,0,244622688256,"{""name"":""Jubelale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Did you know that Jubelale was the first beer ever bottled by Deschutes Brewery?  Highly anticipated every fall, Jubelale is in a category of its own with a flavor and following that is impossible to match.  Dark crystal malt creates that “luscious” holiday note while the roasty flavor and bountiful hops excite your tastebuds, reminding you why Jubelale is the perfect holiday beer"",""style"":""Winter Warmer"",""category"":""Other Style""}",1,38,1
+two_brothers_brewing-domaine_dupage_french_country_ale,0,0,245107392514,"{""name"":""Domaine DuPage French Country Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Domaine DuPage is a rural, northern France, amber colored ale. This well balanced beer is full and sweet up front with caramel, toasty, and fruity characters. The finish has a gentle floral and spicy hop balance that cleanses the palate."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,21,1
+tyranena_brewing-stone_teepee_pale_ale,0,0,245108375552,"{""name"":""Stone Teepee Pale Ale"",""abv"":5.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The legend of Tyranena began 3,000 years ago, with a group of pyramids and effigy mounds constructed in a remote valley formed by a vast, slow-moving glacier.  \r\n\r\nToday, these ancient \""stone tepees\"" lie 60 feet below the surface of Rock Lake in Jefferson County, Wisconsin.  No one is certain how or why they were built, but many have speculated on their origin, purpose and the people who built them.  \r\n\r\nWe invite you to develop your own theories on the legend and mystery of Tyranena while enjoying a Stone Tepee Pale Ale.\r\n\r\n Stone Tepee Pale Ale is brewed in the tradition of an American pale ale.  This beer celebrates the American hop, with its characteristic bitterness, flavor and aroma."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+great_divide_brewing-fresh_hop_pale_ale,0,0,244737376257,"{""name"":""Fresh Hop Pale Ale"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The September hop harvest is a once-a-year opportunity to brew with fresh hops, also called “wet hops.” Given the perishable nature of just-harvested hop cones, they are shipped overnight to Great Divide shortly after harvest. The morning of the scheduled hop delivery in Denver, Great Divide’s brewers begin brewing Fresh Hop and are ready to hop the beer just as the fresh hops are delivered.\r\n\r\nUsing fresh hops is a big endeavor, requiring four to five times the volume of hops compared to the usual process of using pelletized hops. This complex process brings impressive results: Fresh Hop is an American-Style Pale Ale with moderate hop bitterness marked by a unique and intensely grassy hop flavor and aroma. Fresh Hop is a superbly refreshing, medium bodied, light-copper colored pale ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+chimay_abbaye_notre_dame_de_scourmont-chimay_grand_reserve_chimay_blue,0,0,244487880705,"{""name"":""Chimay Grand Reserve(Chimay Blue)"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chimay_abbaye_notre_dame_de_scourmont"",""updated"":""2010-07-22 20:00:20"",""description"":""Named Grande Réserve in 75 cl (25.4 fl.oz.) bottles, it is principally distinguished by its character of a strong beer. \r\n\r\nThis is a beer whose fragrance of fresh yeast with a light, flowery rosy touch is especially pleasant. \r\n\r\nIts flavour, noticed when tasting it, only accentuates the pleasant sensations perceived in the aroma , while revealing a light but pleasant touch of roasted malt.\r\n\r\nThis top fermented Trappist beer , refermented in the bottle, is not pasteurised.""}",1,33,1
+oconomowoc_brewing,0,0,244874936321,"{""name"":""Oconomowoc Brewing"",""city"":""Oconomowoc"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.1117,""lon"":-88.4993}}",1,44,1
+aldaris-zelta,0,0,244363755520,"{""name"":""Zelta"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aldaris"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+rogue_ales-uber_pilsner,0,0,244998406144,"{""name"":""Über Pilsner"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A German style Pilsner, pale gold in color, medium bodied with a malty aroma and a crisp hop bitterness (100% Sterling hops). Uber Pils is brewed with three Great Western and two Weyermann malts, Czech Pils Yeast and Free Range Coastal Waters. UberFest Pils is available in the classic Rogue 22-ounce bottle and kegs, from late autumn through early spring. No Chemicals, Additives, or Preservatives"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,43,1
+fish_brewing_company_fish_tail_brewpub-wild_salmon_pale_ale,0,0,244618428417,"{""name"":""Wild Salmon Pale Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+liefmans_breweries-all_saints_belgian_white_ale,0,0,244736000001,"{""name"":""All Saints Belgian White Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liefmans_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+north_country_brewery-double_vision_ipa,0,0,244858552320,"{""name"":""Double Vision IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Double your fun, double your pleasure and try and stay out of double trouble with this hopped up I.P.A."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+brouwerij_van_honsebrouck-kasteel_bier_brune,0,0,244497645569,"{""name"":""Kasteel Bier Brune"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_honsebrouck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+dublin_brewing,0,0,244628586498,"{""name"":""Dublin Brewing"",""city"":""Dublin"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.3441,""lon"":-6.2675}}",1,52,1
+court_avenue_brewing-capital_raspberry_wheat,0,0,244477853697,"{""name"":""Capital Raspberry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""court_avenue_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,10,1
+atlantic_brewing_company-bar_harbor_real_ale,0,0,244376797186,"{""name"":""Bar Harbor Real Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atlantic_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A good, clean nutbrown ale with a malty body. This is our most popular ale due to its smooth and malty flavor.\r\n\r\nWe use a mixture of pale, crystal and black malts in this one, and our primary hop is Target, though we also add some Whitbread Goldings Variation as well.\r\n\r\nThe Real Ale is best fresh, so fresh in fact, that it's great right out of the bright tank.""}",1,49,1
+brouwerij_abdij_saint_sixtus-trappist_westvleteren_blonde,0,0,244478443523,"{""name"":""Trappist Westvleteren Blonde"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_abdij_saint_sixtus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,12,1
+onopa_brewing-nut_brown_ale,0,0,244857765890,"{""name"":""Nut Brown Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""onopa_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,1,1
+breckenridge_bbq_of_omaha-oatmeal_stout,0,0,244498628608,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_bbq_of_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,58,1
+daleside_brewery-old_legover,0,0,244478312449,"{""name"":""Old Legover"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""daleside_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+routh_street_brewery_and_grille-classic_pale,0,0,244999520257,"{""name"":""Classic Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+old_hat_brewery-stubbins_stout,0,0,244873166849,"{""name"":""Stubbins Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,40,1
+angelic_brewing,0,0,244371030017,"{""name"":""Angelic Brewing"",""city"":""Madison"",""state"":""Wisconsin"",""code"":""53703"",""country"":""United States"",""phone"":""1-608-257-2707"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0785,""lon"":-89.382}}",1,34,1
+anheuser_busch-natural_ice,0,0,244371554305,"{""name"":""Natural Ice"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,35,1
+brasserie_brouwerij_cantillon-classic_gueuze,0,0,244372537344,"{""name"":""Classic Gueuze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_brouwerij_cantillon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,37,1
+goose_island_beer_company_fulton_street-christmas_ale,0,0,244609908738,"{""name"":""Christmas Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+gottberg_brew_pub-jack_of_spades_schwarzbier,0,0,244609581057,"{""name"":""Jack of Spades Schwarzbier"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,7,1
+coast_range_brewing-auld_lang_syne,0,0,244479754240,"{""name"":""Auld Lang Syne"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_range_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+butterfield_brewing_1-pale_bock,0,0,244499152897,"{""name"":""Pale Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""butterfield_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,59,1
+lakefront_brewery-lakefront_ipa,0,0,244734951424,"{""name"":""Lakefront IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,2,1
+manhattan_beach_brewing-pier_pale_ale,0,0,244876509185,"{""name"":""Pier Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manhattan_beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+manhattan_beach_brewing-blonde,0,0,244857241600,"{""name"":""Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manhattan_beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+four_peaks_brewing-caulfield_s_rye,0,0,244630355969,"{""name"":""Caulfield's Rye"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our rye beer is made with 20% flaked rye and rye malt. The addition of rye creates a dry, spicy flavor with a crisp, grainy aroma. We went with a lighter color and lower bitterness to compliment these flavors. It has an alcohol content of around 4.9%."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,56,1
+appalachian_brewing_company,0,0,244377255938,"{""name"":""Appalachian Brewing Company"",""city"":""Harrisburg"",""state"":""Pennsylvania"",""code"":""17110"",""country"":""United States"",""phone"":""717.221.1080"",""website"":""http://www.abcbrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Appalachian Brewing Company is a unique large-capacity microbrewery and full-service brewpub located at 50 North Cameron Street Harrisburg, PA."",""address"":[""50 N. Cameron St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.2659,""lon"":-76.8753}}",1,50,1
+brauerei_schtzengarten,0,0,244480802816,"{""name"":""Brauerei Schtzengarten"",""city"":""Sankt-Gallen"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-071-/-243-43-43"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""St. Jakobstrasse 37""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.4301,""lon"":9.3794}}",1,17,1
+crane_river_brewpub_and_cafe-whooping_wheat,0,0,244490567681,"{""name"":""Whooping Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+hochstiftliches_brauhaus_in_bayern,0,0,244735475712,"{""name"":""Hochstiftliches Brauhaus in Bayern"",""city"":""Motten"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9748-/-71-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brckenauer Strae 6""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.3949,""lon"":9.7724}}",1,4,1
+triumph_brewing_of_princeton-amber_ale,0,0,245107785729,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,22,1
+lion_brewery_inc-lionshead,0,0,244859600896,"{""name"":""Lionshead"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lion_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,6,1
+brewmasters_restaurant_and_brewery_south-icemaster,0,0,244497448960,"{""name"":""Icemaster"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+pony_express_brewing-tornado_ale,0,0,244997947392,"{""name"":""Tornado Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pony_express_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,42,1
+cains-ipa,0,0,244480344064,"{""name"":""IPA"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cains"",""updated"":""2011-05-17 03:17:57"",""description"":""IPA is one of Cains"",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,16,1
+flying_dog_brewery-kerberos,0,0,244612988930,"{""name"":""Kerberos"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The long-awaited arrival of our Belgian-style Tripel is upon us. Named after the mythical Greek three-headed dog that guards the gates of hell, Kerberos is a traditional Belgian-style Tripel with a dark golden color has a sweet flavor with a dry and spicy finish. This nectar of the Gods is deceptively strong at 8.5% and is bottle conditioned for an authentic flavor."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,15,1
+dogfish_head_craft_brewery-indian_brown_ale,0,0,244612071425,"{""name"":""Indian Brown Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A cross between a Scotch Ale, an I.P.A., and an American Brown, this beer is well-hopped and malty at the same time. It is brewed with Aromatic barley and caramelized brown sugar."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,13,1
+mcmullen_sons-special_reserve_anniversary_porter,0,0,244873297921,"{""name"":""Special Reserve Anniversary Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmullen_sons"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,41,1
+saint_arnold_brewing,0,0,245000175617,"{""name"":""Saint Arnold Brewing"",""city"":""Houston"",""state"":""Texas"",""code"":""77092"",""country"":""United States"",""phone"":""1-713-686-9494"",""website"":""http://www.saintarnold.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Saint Arnold Brewing Company, located in Houston, is Texas' Oldest Craft Brewery. Our goal is to brew world class beers and deliver them to our customers as fresh as possible making them the best beers in Texas. Our customers are beer lovers - people that appreciate great, full-flavored beers.  Our small crew of seventeen does everything at the brewery: brew the beer, filter the beer, keg the beer, bottle the beer, sell the beer and drink the beer. For us, this is a passion, not a job. We believe that this comes through in the beers we make. Our beers have soul.  "",""address"":[""2522 Fairway Park Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":29.8123,""lon"":-95.4675}}",1,47,1
+bethlehem_brew_works-arc_weld_alt,0,0,244369588225,"{""name"":""Arc Weld Alt"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bethlehem_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Smooth and malty dark copper German ale common to Duseldorf. Brewed with imported Munich malts, tettnang hops and imported yeast giving this brew a unique flovor."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,31,1
+dillon_dam_brewery-extra_special_bitter,0,0,244622688257,"{""name"":""Extra Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dillon_dam_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+upstream_brewing_company_at_legacy,0,0,245107458048,"{""name"":""Upstream Brewing Company at Legacy"",""city"":""Omaha"",""state"":""Nebraska"",""code"":""68130"",""country"":""United States"",""phone"":""1-402-778-0100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""17070 Wright Plaza""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2331,""lon"":-96.1811}}",1,21,1
+victory_brewing-dark_lager,0,0,245108375553,"{""name"":""Dark Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,23,1
+great_waters_brewing_company-capitol_esb,0,0,244737441792,"{""name"":""Capitol ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+cigar_city_brewing-humidor_series_jai_alai_cedar_aged_india_pale_ale,0,0,244487880706,"{""name"":""Humidor Series Jai Alai Cedar Aged India Pale Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cigar_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""he Humidor Series is a rotating offering of Cigar City Brewing beer aged on cedar. Cedar has a more subtle effect on beer than more traditional woods like oak. But, we think that once you taste it you’ll agree that cedar deserves a place alongside oak in the brewer’s wood-aging toolbox."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,33,1
+onopa_brewing-porter,0,0,244874936322,"{""name"":""Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""onopa_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+america_s_brewing-golden_light,0,0,244363821056,"{""name"":""Golden Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""america_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,19,1
+sabmiller_india-knock_out,0,0,244998406145,"{""name"":""Knock Out"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Country of origin:  India \r\nBeer type:  Lager  \r\nAlcohol content by volume: < 8 % by volume  \r\nCarbohydrates: - \r\nTaste:  Smooth and strong with a rich malty taste  \r\nMalts:  Indian malts, 6 row barley  \r\nHops:  Hops extract from Germany and Indian hops palate  \r\nColour:  Golden yellow  \r\nAvailability:  India  \r\nFermentation process: Bottom-fermented  \r\nServing temperature:  7 - 9 °C  \r\nPackaging:  650 ml, 330 ml Indian standard glass bottle ; 500 ml cans and 330 ml cans,( in select markets)  \r\n\r\nhttp://www.sabmiller.in/brands_knock-out.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,43,1
+flatlander_s_restaurant_brewery-olde_orchard_ale,0,0,244618493952,"{""name"":""Olde Orchard Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,28,1
+long_valley_pub_brewery-esb,0,0,244859076608,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_valley_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+north_country_brewery,0,0,244858552321,"{""name"":""North Country Brewery"",""city"":""Slippery Rock"",""state"":""Pennsylvania"",""code"":""16057"",""country"":""United States"",""phone"":""(724)-794-BEER"",""website"":""http://www.northcountrybrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Nestled in the heart of downtown Slippery Rock, North Country Brewery typically features 10-15 beers that rotate seasonally.  While this unique restaurant and brewery inhabits a former funeral home, it is quite lively inside.  Featuring a great menu and fun events, North Country Brewery is a great stop for any beer lover."",""address"":[""141 South Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.0638,""lon"":-80.0556}}",1,3,1
+budjovick_mansk_pivovar-samson_crystal_diplomat_dark_beer,0,0,244497711104,"{""name"":""Samson Crystal Diplomat Dark Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""budjovick_mansk_pivovar"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+egan_brewing-old_gak_strong_ale,0,0,244628652032,"{""name"":""old gak strong ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,52,1
+d_l_geary_brewing_company-geary_s_pale_ale,0,0,244477853698,"{""name"":""Geary's Pale Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""d_l_geary_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""A classic British pale ale with a nod to the legendary beers of Burton-on-Trent. Copper-colored, dry, clean and crisp with lots of late hope taste in an appetizing complex with ale fruitiness from imported Hampshire yeast.\"" ~ http://www.gearybrewing.com/pages/pale.php"",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,10,1
+august_schell_brewing-weizen,0,0,244376862720,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""august_schell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,49,1
+brouwerij_de_achelse_kluis-trappist_bruin_bier_biere_brune,0,0,244478509056,"{""name"":""Trappist Bruin Bier / Bière Brune"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+ottakringer_brauerei_ag-ottakringer_helles,0,0,244857831424,"{""name"":""Ottakringer Helles"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ottakringer_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+bricktown_brewery-get_fuggled,0,0,244498694144,"{""name"":""Get Fuggled"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bricktown_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+de_proef_brouwerij-flemish_primitive_wild_ale_surly_bird,0,0,244610891776,"{""name"":""Flemish Primitive Wild Ale (Surly Bird)"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+san_marcos_brewery_grill-oatmeal_stout,0,0,244999520258,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,46,1
+oregon_trail_brewery-bourbon_barrel_porter,0,0,244873232384,"{""name"":""Bourbon Barrel Porter"",""abv"":9.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oregon_trail_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,40,1
+anheuser_busch-michelob_winter_s_bourbon_cask_ale,0,0,244371030018,"{""name"":""Michelob Winter's Bourbon Cask Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""During even the coldest of weather, warm up to the smooth, robust taste of our Winter's Bourbon Cask Ale. Full of rich aromas that you find in the winter months, hints of vanilla and flavorful hops, this is a beer that is great for pouring into a large tulip glass and enjoying with friends around a fireplace."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,34,1
+appalachian_brewing_company-ipa_series_horizon,0,0,244371554306,"{""name"":""IPA Series (Horizon)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appalachian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A series of single hop, small batch IPAs brewed in Camp Hill. These IPAs showcase the bitterness, flavor, and aroma of each particular hop variety."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,35,1
+brasserie_de_l_abbaye_val_dieu,0,0,244372537345,"{""name"":""Brasserie de l'Abbaye Val-Dieu"",""city"":""Aubel"",""state"":""Lige"",""code"":"""",""country"":""Belgium"",""phone"":""32-087-68-75-87"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Val Dieu 225""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.7046,""lon"":5.822}}",1,37,1
+granite_city_food_brewery_saint_cloud-oktoberfest,0,0,244736983040,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,8,1
+grand_teton_brewing_2-teton_ale,0,0,244736393216,"{""name"":""Teton Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grand_teton_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+columbia_bay_brewery_restaurant_and_pub-da_bier_altbier,0,0,244479754241,"{""name"":""Da Bier Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""columbia_bay_brewery_restaurant_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,14,1
+calhoun_s_microbrewery,0,0,244499218432,"{""name"":""Calhoun's Microbrewery"",""city"":""Knoxville"",""state"":""Tennessee"",""code"":""37919"",""country"":""United States"",""phone"":""1-865-673-3377"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6515 Kingston Pike""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.932,""lon"":-84.012}}",1,59,1
+listermann_brewing_company-42_cream_ale,0,0,244857896960,"{""name"":""#42 Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""listermann_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,2,1
+mcmullen_sons-special_reserve_oatmeal_ale,0,0,244876509186,"{""name"":""Special Reserve Oatmeal Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmullen_sons"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+marzoni_s_brick_oven_brewing_co-patchway_pale_ale,0,0,244857241601,"{""name"":""Patchway Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marzoni_s_brick_oven_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Nicely Hopped, Medium Bodied Pale Ale"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,0,1
+fratellos_restaurant_and_brewery-sesquicentennial_light_ale,0,0,244630355970,"{""name"":""Sesquicentennial Light Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+athenian_brewery-athenian,0,0,244377255939,"{""name"":""Athenian"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""athenian_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+brooklyn_brewery-local_1,0,0,244480802817,"{""name"":""Local 1"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brooklyn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""In Williamsburg, Brooklyn, we forge barley malt and hops from Germany, aromatic raw sugar from Mauritius and yeast from Belgium into our latest beer, Brooklyn Local 1.\r\n\r\nBehind the full golden color you'll find an alluring aroma, a dynamic complex of flavors, Belgian flair, Brooklyn fortitude and a dusting of our special yeast. To create this beer, we use the old technique of 100% bottle re-fermentation, a practice now rare even in Europe. It gives this beer a palate of unusual depth. Enjoy it locally or globally, as an aperitif or with your favorite dishes. It is particularly nice with spicy seafood and with fine cheeses."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,17,1
+crane_river_brewpub_and_cafe-zlate_pivo_golden_beer,0,0,244490567682,"{""name"":""Zlaté Pivo Golden Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+hoppin_frog_brewery-b_o_r_i_s_the_crusher_oatmeal_imperial_stout,0,0,244735541248,"{""name"":""B.O.R.I.S. The Crusher Oatmeal-Imperial Stout"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This Bodacious Oatmeal Russian Imperial Stout will crush you like no other! This is the grand-daddy of all stout styles, with an intensely deep roasted and full bodied flavor. A robust hop character adds a refreshing balance."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,4,1
+triumph_brewing_of_princeton-bengal_gold_india_pale_ale,0,0,245107851264,"{""name"":""Bengal Gold India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+little_apple_brewing-bison_brown_ale,0,0,244859600897,"{""name"":""Bison Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_apple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,6,1
+bridgeport_brewing-old_knucklehead_2000,0,0,244497448961,"{""name"":""Old Knucklehead 2000"",""abv"":9.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+port_washington_brewing,0,0,244997947393,"{""name"":""Port Washington Brewing"",""city"":""Port Washington"",""state"":""Wisconsin"",""code"":""53074"",""country"":""United States"",""phone"":""1-262-377-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.3872,""lon"":-87.8756}}",1,42,1
+cambridge_brewing-cambridge_amber,0,0,244480344065,"{""name"":""Cambridge Amber"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cambridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Well balanced, medium-bodied, with a deep amber-red color, this beer's complex palate covers all the bases. A malty caramel sweetness is followed by notes of chocolate and a dry, slightly roasty finish, complemented by a touch of fruity, spicy hops."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,16,1
+folx_les_caves-grottenbier,0,0,244612988931,"{""name"":""Grottenbier"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""folx_les_caves"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+east_end_brewing_company-ugly_american,0,0,244612071426,"{""name"":""Ugly American"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""east_end_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""THE UGLY AMERICAN is a perfectly enjoyable classic Belgian Trippel corrupted almost beyond recognition with a completely inappropriate amount of US hops. Only in America can such excessive excesses be fully appreciated, celebrated, and enjoyed...and for now, only at East End Brewing! To make this one a little more cellar-able, and a lot more portable, it's going into the bottle."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,13,1
+meckatzer_lwenbru-weiss_gold,0,0,244873363456,"{""name"":""Weiss-Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""meckatzer_lwenbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+sherlock_s_home-queen_anne_light,0,0,245000175618,"{""name"":""Queen Anne Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sherlock_s_home"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+big_dog_s_brewing_company,0,0,244369588226,"{""name"":""Big Dog's Brewing Company"",""city"":""Las Vegas"",""state"":""Nevada"",""code"":""89130"",""country"":""United States"",""phone"":""1-702-645-1404"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4543 North Rancho Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.2426,""lon"":-115.236}}",1,31,1
+duck_rabbit_craft_brewery-duck_rabbit_brown_ale,0,0,244622753792,"{""name"":""Duck-Rabbit Brown Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duck_rabbit_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Duck-Rabbit Brown Ale is an American brown ale brewed with loads of hops from start to finish (it’s hoppy and beautifully bitter). Amarillo hops in the boil provide a spicy citrusy bitterness. Saaz dry hops in the fermentor provide a refined flowery aroma. These hops are supported by a grain bill of seven varieties of malt. Oh yeah!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,38,1
+utah_brewers_cooperative-wasatch_polygamy_porter,0,0,245107458049,"{""name"":""Wasatch Polygamy Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""utah_brewers_cooperative"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,21,1
+viking_brewing-big_swede_swedish_style_imperial_stout,0,0,245747023872,"{""name"":""Big Swede Swedish-Style Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""viking_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,23,1
+green_bay_brewing-hinterland_amber_ale,0,0,244737441793,"{""name"":""Hinterland Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+commonwealth_brewing_1-special_old_ale,0,0,244487946240,"{""name"":""Special Old Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""commonwealth_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,33,1
+otter_creek_brewing_wolaver_s_organic_ales,0,0,244875001856,"{""name"":""Otter Creek Brewing & Wolaver's Organic Ales"",""city"":""Middlebury"",""state"":""Vermont"",""code"":""5753"",""country"":""United States"",""phone"":""1-888-473-0727"",""website"":""http://www.ottercreekbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Otter Creek beers are craft brewed with the finest domestic malts and hops available."",""address"":[""793 Exchange Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.0197,""lon"":-73.1693}}",1,44,1
+anheuser_busch-michelob_black_tan,0,0,244363886592,"{""name"":""Michelob Black & Tan"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+saint_arnold_brewing-saint_arnold_amber_ale,0,0,244998471680,"{""name"":""Saint Arnold Amber Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A well balanced, full flavored, amber ale. It has a rich, malty body with a pleasant caramel character derived from a specialty Caravienne malt. A complex hop aroma, with a hint of floral and citrus comes from a combination of Cascades and Liberty hops. It has a rich, creamy head with a fine lace. The light fruitiness, characteristic of ales, is derived from a proprietary yeast strain. \r\n\r\nSaint Arnold Amber Ale is best consumed at 50 - 55° Fahrenheit."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,43,1
+abbaye_de_leffe-brune_brown,0,0,244363362304,"{""name"":""Brune (Brown)"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""abbaye_de_leffe"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark brown with a nice tan head.\r\nSweet and aromatic.\r\nSmooth and best served cold from a goblet or chalice.\r\n\r\nI have had this on tab, in a 12oz bottle and 1 liter bottle.  It is very common on to be on tap in Belgium and Paris as well as in a bottle in the UK.\r\n\r\nI have not seen it in the US nor can I find a distributor that could get it.""}",1,18,1
+gaslight_brewery-bulldog_blonde,0,0,244618493953,"{""name"":""Bulldog Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+main_street_alehouse-powell_porter,0,0,244859076609,"{""name"":""Powell Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,5,1
+northwoods_brewpub_grill-dark_walnut_stout,0,0,244858617856,"{""name"":""Dark Walnut Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,3,1
+california_cider_company-ace_pear_cider,0,0,244497711105,"{""name"":""Ace Pear Cider"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""california_cider_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+egan_brewing-who_the_helles_chuck,0,0,244628652033,"{""name"":""Who The Helles Chuck?"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+deep_creek_brewing,0,0,244610498560,"{""name"":""Deep Creek Brewing"",""city"":""McHenry"",""state"":""Maryland"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.5584,""lon"":-79.3528}}",1,10,1
+aviator_brewing_company-old_bulldog_extra_special,0,0,244376862721,"{""name"":""Old BullDog Extra Special"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aviator_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A hearty extra special beer or basically a pale ale on steroids.  A dark amber beer with a rich blend of  malts.  The base malt is full kilned pale 2-row barley and is combined with full tasting crystal malt.  This beer has a great heavy late hop addition of East Kent Goldings (that cost us our lunch money for weeks...). ALWAYS AVAILABLE or at least we try."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,49,1
+brouwerij_lindemans-gueuze_cuvee_rene,0,0,244478574592,"{""name"":""Gueuze Cuvée René"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_lindemans"",""updated"":""2010-07-22 20:00:20"",""description"":""A golden hue sets off the wonderful almost champagne like taste.""}",1,12,1
+pacific_beach_brewhouse-crystal_pier_pale_ale,0,0,244857831425,"{""name"":""Crystal Pier Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_beach_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+bridgeport_brewing-porter,0,0,244498759680,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bridgeport_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,58,1
+double_mountain_brewery_taproom,0,0,244610957312,"{""name"":""Double Mountain Brewery & Taproom"",""city"":""Hood River"",""state"":""Oregon"",""code"":""97031"",""country"":""United States"",""phone"":""541-387-0042"",""website"":""http://www.doublemountainbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Matt Swihart and Charlie Devereux founded Double Mountain in 2007 with a clear mission: make great beer for craft beer fans. Ours is a brewers' brewery, with an uncompromising focus on beer quality. From the beginning, our goal was to make beers that we liked to drink. All of our beers are served up unfiltered and long-aged, to deliver maximum flavor and character. The beers can be very complex and assertive, but with the ultimate goal of proper balance. We aim to satisfy both the hardcore aficionados and the more casual craft beer fan, all in the same glass."",""address"":[""8 Fourth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.71,""lon"":-121.515}}",1,11,1
+sand_creek_brewing_company-groovy_beer,0,0,244999585792,"{""name"":""Groovy Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sand_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,46,1
+pacific_rim_brewing-driftwood_ale,0,0,244997160960,"{""name"":""Driftwood Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+backwater_brewing-wingdam_wheat,0,0,244371095552,"{""name"":""Wingdam Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""backwater_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,34,1
+arcobrau_grafliches_brauhaus,0,0,244371619840,"{""name"":""Arcobrau Grafliches Brauhaus"",""city"":""Moos"",""state"":""Baden-Wurttemberg"",""code"":""94554"",""country"":""Germany"",""phone"":""09938 / 918 180"",""website"":""http://www.arcobraeu.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Schlossalle 1""]}",1,35,1
+brasserie_dupont-avec_les_bons_voeux,0,0,244372602880,"{""name"":""Avec Les Bons Voeux"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dupont"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+great_dane_pub_and_brewing_1-bourbon_barleywine,0,0,244737048576,"{""name"":""Bourbon Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+green_flash_brewing,0,0,244736458752,"{""name"":""Green Flash Brewing"",""city"":""Vista"",""state"":""California"",""code"":""92083"",""country"":""United States"",""phone"":""1-760-597-9012"",""website"":""http://www.greenflashbrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1430 Vantage Court #104A""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.136,""lon"":-117.225}}",1,7,1
+d_l_geary_brewing_company,0,0,244479819776,"{""name"":""D.L. Geary Brewing Company"",""city"":""Portland"",""state"":""Maine"",""code"":""4103"",""country"":""United States"",""phone"":"""",""website"":""http://www.gearybrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The D.L. Geary Brewing Company was incorporated in October, 1983 by David and Karen Geary who shared the vision of producing world class products on a small scale for local and regional consumption. At that time, there were only 13 so-called microbreweries in the United States, almost all of them in California and the Pacific Northwest. In the winter of 1984, David Geary began a period of training and research in Scotland and England. With the help of Peter Maxwell Stuart, a Scottish nobleman and brewer who arranged introductions and itineraries, he worked in a half-dozen small commercial breweries from the highlands of Scotland to the south coast of England."",""address"":[""38 Evergreen Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.7076,""lon"":-70.3149}}",1,14,1
+cervejaria_kaiser_brasil,0,0,244499218433,"{""name"":""Cervejaria Kaiser Brasil"",""city"":""Ponta Grossa"",""state"":""Paran"",""code"":"""",""country"":""Brazil"",""phone"":""55-(42)-219-2000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Avenida Tocantins, 199 / Caixa Postal 621""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":-25.1688,""lon"":-50.1298}}",1,59,1
+mad_crab_restaurant_and_brewery-pirates_pilsner,0,0,244857896961,"{""name"":""Pirates Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_crab_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+mickey_finn_s_brewery-gudenkrisp_kolsch,0,0,244876574720,"{""name"":""Güdenkrisp Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+mercury_brewing_company-1084_barleywine,0,0,244857241602,"{""name"":""1084 Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,0,1
+front_street_brewery,0,0,244630421504,"{""name"":""Front Street Brewery"",""city"":""Davenport"",""state"":""Iowa"",""code"":""52801"",""country"":""United States"",""phone"":""1-563-322-1569"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""208 East River Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.5202,""lon"":-90.5725}}",1,56,1
+atwater_block_brewing-mai_bock,0,0,244377321472,"{""name"":""MAI-BOCK"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional german helles bock, golden in color and brewed with only the finest imported malt and hops. The distinct malty sweetness is balanced by a pronounced hop finish. Brewed to Welcome the Spring Season."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+brouwerij_de_dolle_brouwers-stille_nacht,0,0,244480802818,"{""name"":""Stille Nacht"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_dolle_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+de_halve_maan-brugse_zot_double,0,0,244623147008,"{""name"":""Brugse Zot Double"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_halve_maan"",""updated"":""2010-07-22 20:00:20"",""description"":""Besides the goldenblond ale, a darker version of the townbeer has been created : Brugse Zot double, with 7,5 % Vol alc. It is brewed with 6 special kinds of malt, which give the beer a rich taste. The worldly renowned Tcheque Saaz hop from Zatec has been chosen to give the beer this unique bitter note. Brugse Zot double is a fill and stronger beer, highly appreciated by the beerlovers."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,39,1
+hoppy_brewing_company,0,0,244735541249,"{""name"":""Hoppy Brewing Company"",""city"":""Sacramento"",""state"":""California"",""code"":""95819"",""country"":""United States"",""phone"":""1-916-451-4677"",""website"":""http://www.hoppy.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Currently, our company is growing our full service brewpub here in Sacramento, while at the same time self-distributing our products to retailers in the Sacramento area. We are brewing all of our products here in Sacramento and have 10 products on tap here at the brewpub. In addition, our current California distribution network consists of just one hard working distributor: A & D Distributing. We utilize this established distributor in their selected market to sell principally to the packaged/bottle market through authorized retail outlets, and the on-premises draft market through establishments licensed to serve alcoholic beverages. Our core products (i.e., Hoppy Face, Liquid Sunshine and Total Eclipse) are currently available in draft and 22 ounce bottles, and only available in the Sacramento and San Jose areas, but that will likely change as we continue to expand this year."",""address"":[""6300 Folsom Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.5551,""lon"":-121.43}}",1,4,1
+upstream_brewing_old_market-capitol_premium_pale_ale,0,0,245107851265,"{""name"":""Capitol Premium Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""Our English-style pale ale is a medium-bodied \r\namber beer. Light, malty flavors combine with aromatic \r\nhops for a beer that is thirst quenching and easy \r\nto drink. One of our most popular beers."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,22,1
+mad_crab_restaurant_and_brewery-wheat,0,0,244859666432,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_crab_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,6,1
+brouwerij_alken_maes,0,0,244497448962,"{""name"":""Brouwerij Alken-Maes"",""city"":""Jumet"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-071-34-02-22"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue Derbque 7""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.4431,""lon"":4.4147}}",1,54,1
+porterhouse_restaurant_and_brewpub,0,0,244998012928,"{""name"":""Porterhouse Restaurant and Brewpub"",""city"":""Lahaska"",""state"":""Pennsylvania"",""code"":""18931"",""country"":""United States"",""phone"":""1-215-794-9373"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5775 Lower Mountain Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.3341,""lon"":-75.012}}",1,42,1
+capitol_city_brewing_4,0,0,244480344066,"{""name"":""Capitol City Brewing #4"",""city"":""Arlington"",""state"":""Virginia"",""code"":""22206"",""country"":""United States"",""phone"":""1-703-578-3888"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2700 South Quincy Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.8411,""lon"":-77.0869}}",1,16,1
+fratellos_restaurant_and_brewery-fox_light,0,0,244613054464,"{""name"":""Fox Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,15,1
+elysian_brewery_public_house-loki,0,0,244612071427,"{""name"":""Loki"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+mercury_brewing_company-ipswich_harvest,0,0,244873363457,"{""name"":""Ipswich Harvest"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Highly regarded among hop-lovers, our Harvest Ale is a balanced and flavorful autumnal offering, to be enjoyed during the cool, crisp days of fall. We use a darker Caramunich malt and just a touch of chocolate malt along with a blend of Warrior, Ahtanum, and Columbus hops."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,41,1
+ship_inn_brewpub-golden_wheat_light,0,0,245000241152,"{""name"":""Golden Wheat Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ship_inn_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+blue_point_brewing-toasted_lager,0,0,244369653760,"{""name"":""Toasted Lager"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""TOASTED LAGER\r\n\r\nBlue Point Brewing's award-winning Toasted Lager is our flagship product. Copper in color this brew is made from six different malts including: English Pale, Crystal, Munich, Carapils, Wheat and Belgian Caravienna. Toasted Lager displays a balanced flavor of malt and hop which makes for easy drinking. Special lager yeast is used to produce that long lasting, smooth finish. The \""toasted\"" part of the name refers to our direct-fire brew kettle’s hot flames that impart a toasted flavor to our most popular microbrew."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+eel_river_brewing,0,0,244622753793,"{""name"":""Eel River Brewing"",""city"":""Fortuna"",""state"":""California"",""code"":""95540"",""country"":""United States"",""phone"":""1-707-725-2739"",""website"":""http://eelriverbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1777 Alamar Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.5793,""lon"":-124.153}}",1,38,1
+valley_brewing_company-uberhoppy_imperial_ipa,0,0,245107458050,"{""name"":""Uberhoppy Imperial IPA"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A massively hopped Imperial IPA brewed to celebrate Valley Brews 10th anniversary. 1 pound of hops were added every 10 minutes during a 100 minute boil, a total of 10 different boiling hops. 4 different fresh hops were used in the hopback and then the beer was passed through a chamber containing 10 lbs of fresh hops on the way from the serving tanks to the bar taps. Hopperiffic."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,21,1
+vintage_50_restaurant_and_brew_lounge-50_cat_ipa,0,0,245747023873,"{""name"":""50 CAT IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vintage_50_restaurant_and_brew_lounge"",""updated"":""2010-07-22 20:00:20"",""description"":""An American style India Pale Ale. This medium bodied, light bronze hued brew has an aggressive hop character and flavor from the use of American hops in dry hopping. Our interpretation comes in at 13.0 degrees plato with IBU’s in the mid 40’s. The American hop varietals used as Kettle additions were Amarillo and Chinook and this was dry hopped with Chinook as well."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,23,1
+green_flash_brewing-west_coast_ipa,0,0,244737507328,"{""name"":""West Coast IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_flash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This West Coast-Style India Pale Ale is extravagantly hopped, full flavored, medium bodied and copper colored. A menagerie of hops is combined throughout the brewing process to impart specific characteristics. Hops used include Simcoe for a unique fruitiness and grapefruit zest, Columbus for strong hop pungency, Centennial for pine and citrus notes, and Cascade for floral aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,9,1
+deschutes_brewery-the_abyss,0,0,244620066816,"{""name"":""The Abyss"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Abyss has immeasurable depth inviting you to explore and discover its rich, complex profile. Hints of molasses, licorice and other alluring flavors draw you in further and further with each sip. And at 11% alcohol by volume, you will want to slowly savor each and every ounce. \r\n\r\nNovember 2008 marks the third release of this dark and mysterious imperial stout. Limited availability in wax-dipped 22-ounce bottles and on draft at a few select establishments. \r\n\r\n“The Abyss was one of those beers I didn’t want to end. I was totally blown away - this is precious stuff.” Christian DeBenedetti, beer writer and Men’s Journal contributor"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,33,1
+pleasanton_main_street_brewery-zone_7_porter,0,0,244998602752,"{""name"":""Zone 7 Porter"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pleasanton_main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+appleton_brewing-adler_brau_classic_porter,0,0,244363886593,"{""name"":""Adler Bräu Classic Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,19,1
+san_diego_brewing-grantville_gold,0,0,244998471681,"{""name"":""Grantville Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+alesmith_brewing-wee_heavy,0,0,244363362305,"{""name"":""Wee Heavy"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""alesmith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,18,1
+granite_city_food_brewery_saint_cloud-victory_lager,0,0,244745371648,"{""name"":""Victory Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+maritime_pacific_brewing-clipper_gold_hefeweizen,0,0,244859142144,"{""name"":""Clipper Gold Hefeweizen"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+old_hat_brewery-apple_ale,0,0,244858617857,"{""name"":""Apple Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,3,1
+capital_brewery,0,0,244497711106,"{""name"":""Capital Brewery"",""city"":""Middleton"",""state"":""Wisconsin"",""code"":""53562"",""country"":""United States"",""phone"":""1-608-836-7100"",""website"":""http://www.capital-brewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7734 Terrace Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0949,""lon"":-89.5163}}",1,55,1
+element_brewing_company,0,0,244628652034,"{""name"":""Element Brewing Company"",""city"":""Millers Falls"",""state"":""MA"",""code"":""01349"",""country"":""United States"",""phone"":""413-835-6340"",""website"":""http://www.elementbeer.com"",""type"":""brewery"",""updated"":""2011-04-18 05:17:29"",""description"":""Nano Brewery specializing in bottle conditioned ales."",""address"":[""30 Bridge St""]}",1,52,1
+deschutes_brewery-black_butte_xxi,0,0,244610498561,"{""name"":""Black Butte XXI"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""It usually means bigger. Richer. And we can think of no better way to describe the taste of this even-bolder take on our classic, Black Butte Porter. Black Butte XX is an imperial porter with a lot more malt and hops, a wealth of coffee, cocoa nibs and aged in bourbon oak barrels. XX. It also means 20. Enjoy one during our 20th anniversary. On the flavor scale - It’s legendary."",""style"":""Porter"",""category"":""Irish Ale""}",1,10,1
+barfer_das_kleine_brauhaus-blonde,0,0,244376862722,"{""name"":""Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barfer_das_kleine_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+brouwerij_roman,0,0,244478574593,"{""name"":""Brouwerij Roman"",""city"":""Oudenaarde"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-055-45-54-01"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hauwaart 105""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.831,""lon"":3.6759}}",1,12,1
+paulaner-1634_urtyp_hell,0,0,244980711424,"{""name"":""1634 Urtyp Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+brouwerij_de_dolle_brouwers-special_extra_export_stout,0,0,244498759681,"{""name"":""Special Extra Export Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_dolle_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+fish_brewing_company_fish_tail_brewpub-winterfish_ale,0,0,244610957313,"{""name"":""WinterFish Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,11,1
+santa_rosa_brewing-wee_heavy,0,0,244999585793,"{""name"":""Wee Heavy"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_rosa_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,46,1
+paulaner-hacker_pschorr_original_oktoberfest,0,0,244997226496,"{""name"":""Hacker-Pschorr Original Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,40,1
+ballast_point_brewing-navigator_doppelbock,0,0,244371161088,"{""name"":""Navigator Doppelbock"",""abv"":8.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,34,1
+bbc_brewing_co_llc-hell_for_certain,0,0,244371619841,"{""name"":""Hell for Certain"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bbc_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+brauerei_leibinger-edel_spezial,0,0,244489256960,"{""name"":""Edel-Spezial"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_leibinger"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+hereford_hops_steakhouse_and_brewpub_3-schwarzbier,0,0,244737048577,"{""name"":""Schwarzbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,8,1
+grolsche_bierbrouwerij-grolsch_dunkel_weizen,0,0,244736458753,"{""name"":""Grolsch Dunkel Weizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grolsche_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""Grolsch Dunkel Weizen is the darker version of Grolsch Premium Weizen."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,7,1
+de_friese_bierbrouwerij_us_heit-us_heit_dubbel_tarwe_bier,0,0,244612333568,"{""name"":""Us Heit Dubbel Tarwe Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_friese_bierbrouwerij_us_heit"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,14,1
+cherryland_brewing-cherry_rail,0,0,244499218434,"{""name"":""Cherry Rail"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cherryland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,59,1
+magic_hat-circus_boy,0,0,244857962496,"{""name"":""Circus Boy"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""THE Hefeweizen.  Unfiltered and unfettered, Circus Boy is a unique and refreshing American-style Hefeweizen.  Is he a who? Or a what? Or perhaps some of both? \r\n\r\nBrewed with organic lemongrass."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,2,1
+mickey_finn_s_brewery-main_street_raz,0,0,244876574721,"{""name"":""Main Street Raz"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,48,1
+middle_ages_brewing-the_duke_of_winship,0,0,244857241603,"{""name"":""The Duke of Winship"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A sensual dark brew with the softness of a Scotch ale crafted with the malt make-up of an English Porter."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,0,1
+frstliche_brauerei_thurn_und_taxis_regensburg,0,0,244630421505,"{""name"":""Frstliche Brauerei Thurn Und Taxis Regensburg"",""city"":""Regensburg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9451-/-412"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Waffnergasse 6-8""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.0156,""lon"":12.0913}}",1,56,1
+aviator_brewing_company-hotrod_red,0,0,244377321473,"{""name"":""HotRod Red"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""aviator_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A somewhat classic Irish Red Ale.  This ale is feisty and a bit hoppy.  There is a malty sweetness and a somewhat dry finish.  Traditional East Kent Goldings but with a nice touch of Cascade and dash of roasted barley give this ale a great taste. ALWAYS AVAILABLE...or at least we try."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,50,1
+brouwerij_de_smedt-affligem_dobbel,0,0,244480868352,"{""name"":""Affligem Dobbel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_smedt"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+de_leyerth_brouwerijen-urthel_novicius_vertus,0,0,244623212544,"{""name"":""Urthel Novicius Vertus"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_leyerth_brouwerijen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+indian_wells_brewing-mojave_red,0,0,244735541250,"{""name"":""Mojave Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""indian_wells_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+vetter_s_alt_heidelberger_brauhaus,0,0,245107916800,"{""name"":""Vetter�s Alt Heidelberger Brauhaus"",""city"":""Heidelberg"",""state"":""Baden-Württemberg"",""code"":""69117"",""country"":""Germany"",""phone"":"""",""website"":""http://www.brauhaus-vetter.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Founded 1987, Vetter Old Heidelberg Brewpub, was the first Bewpub in Heidelberg."",""address"":[""Steingasse 9""]}",1,22,1
+mammoth_brewing-amber,0,0,244859666433,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mammoth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,6,1
+brouwerij_de_ranke-guldenberg,0,0,244497448963,"{""name"":""Guldenberg"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_ranke"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+prairie_rock_brewing_elgin-ale,0,0,244998012929,"{""name"":""Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prairie_rock_brewing_elgin"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,42,1
+cedar_brewing,0,0,244480409600,"{""name"":""Cedar Brewing"",""city"":""Cedar Rapids"",""state"":""Iowa"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.9625,""lon"":-91.6918}}",1,16,1
+furstlich_furstenbergische_brauerei-pils,0,0,244613054465,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""furstlich_furstenbergische_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+endehouse_brewery_and_restaurant-porter,0,0,244612136960,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""endehouse_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,13,1
+michigan_brewing-russian_imperial_stout,0,0,244873428992,"{""name"":""Russian Imperial Stout"",""abv"":10.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Take an India Pale Ale and feed it steroids!  Although open to the same interpretation as its sister styles, you should expect something robust, malty, alcoholic and with a hop profile that might rip your tongue out. The Imperial usage comes from Russian Imperial stout, a style of strong stout originally brewed in England for the Russian Imperial Court of the late 1700s; though Double IPA is often the preferred name."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,41,1
+shipwrecked_brew_pub-bayside_blonde_ale,0,0,245000241153,"{""name"":""Bayside Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipwrecked_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+bonaventure_brewing_co,0,0,244369653761,"{""name"":""Bonaventure Brewing Co"",""city"":""Los Angeles"",""state"":""California"",""code"":""90071"",""country"":""United States"",""phone"":""(213) 236-0802"",""website"":""http://www.bonaventurebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Local beers brewed on-site on the 4th floor patio of the Bonaventure Hotel. Terrific views of Downtown LA, traditional American food, friendly staff, local flavor."",""address"":[""404 South Figueroa Street #418""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.0532,""lon"":-118.256}}",1,31,1
+egan_brewing-j_s_stout,0,0,244622819328,"{""name"":""J&S; Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+wainwright_brewing-evil_eye_ale,0,0,245746892800,"{""name"":""Evil Eye Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wainwright_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+walldorff_brew_pub-hopnoxxxious,0,0,245747089408,"{""name"":""Hopnoxxxious"",""abv"":7.45,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""walldorff_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""This hophead's delight contains 7 hop additions. A malt background balances the hoppy bitterness for a complex flavor."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,23,1
+grizzly_bay_brewing-hammerhead_red,0,0,244737507329,"{""name"":""Hammerhead Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grizzly_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+diamond_knot_brewery_alehouse-icebreaker_barley_wine,0,0,244620132352,"{""name"":""Icebreaker Barley Wine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-wiesen_edel_weisse,0,0,244998668288,"{""name"":""Wiesen Edel Weisse"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,44,1
+avery_brewing_company-karma,0,0,244363886594,"{""name"":""Karma"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,19,1
+sapporo_breweries_chuo,0,0,244998471682,"{""name"":""Sapporo Breweries - Chuo"",""city"":""Tokyo"",""state"":""Kanto"",""code"":"""",""country"":""Japan"",""phone"":""81-(03)-3572-6111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10-1 Ginza 7-chome, Chuo-ku""]}",1,43,1
+allentown_brew_works-pawn_shop_porter,0,0,244363362306,"{""name"":""Pawn Shop Porter"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""allentown_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark brown with ruby highlights this brew has a deep chocolate flavor backed by a smooth caramel finish. Brewed with English malt and hops for an authentic flavor"",""style"":""Porter"",""category"":""Irish Ale""}",1,18,1
+green_flash_brewing-barleywine,0,0,244745437184,"{""name"":""Barleywine"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_flash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our American-style Barleywine undergoes a three hour boil to intensify the caramel malts and the enormous Pacific Northwest hop charge. The result is a rich, estery brew with toffee notes and citrus hop flavors layered throughout. Enjoy this brew fresh today or lay it down for aging to see how the flavors of each vintage evolve."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,28,1
+mcguire_s_irish_pub_and_brewery_pensacola-what_the_gent_on_the_floor_is_having_1997,0,0,244859207680,"{""name"":""What the Gent on the Floor is Having 1997"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcguire_s_irish_pub_and_brewery_pensacola"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+otter_creek_brewing_wolaver_s_organic_ales-stovepipe_porter,0,0,244858617858,"{""name"":""Stovepipe Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Stovepipe Porter is made in the traditional porter stlye, and is a favorite with all porter lovers. Ruby-black in color, Stovepipe Porter has a rich palate and a roasted, hoppy aroma. It is delicious on its own or with a meal, and tastes great with chocolate."",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+cerveceria_la_constancia-caguama,0,0,244497776640,"{""name"":""Caguama"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cerveceria_la_constancia"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,55,1
+elk_creek_cafe_and_aleworks-winkleblink_ale,0,0,244628717568,"{""name"":""Winkleblink Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_creek_cafe_and_aleworks"",""updated"":""2010-07-22 20:00:20"",""description"":""This light colored ale gains its subtle, bread-like flavor from a balance of gently kilned malted barley and choice malted wheat. A restrained addition of hops, contributes a pleasingly delicate floral aroma."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,52,1
+doemens_e_v-1809,0,0,244610564096,"{""name"":""1809"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""doemens_e_v"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+bavarian_barbarian_brewing_company-hammerin_ale,0,0,244376862723,"{""name"":""Hammerin' Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bavarian_barbarian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Hammerin’ Ale is the Barbarian’s first beer. Brewed to be a well-balanced, easy-going beer, Hammerin’ Ale comes from a rather simple recipe which yields a deep amber color and a sublime balance of malt character and hop flavors. This beer goes very well with grilled meats and is meant to be enjoyed year-round. Hammerin’ Ale is an excellent choice for “Barbarians” who are new to craft beer."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,49,1
+brouwerij_slaghmuylder-witkap_pater_tripel,0,0,244478574594,"{""name"":""Witkap-Pater Tripel"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_slaghmuylder"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+abbaye_notre_dame_du_st_remy,0,0,244379549696,"{""name"":""Abbaye Notre Dame du St Remy"",""city"":""Rochefort"",""state"":""Namur"",""code"":"""",""country"":""Belgium"",""phone"":""32-084/22.01.47"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rue de l'Abbaye 8""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.1999,""lon"":5.2277}}",1,57,1
+pleasanton_main_street_brewery-pleasanton_pale,0,0,244980711425,"{""name"":""Pleasanton Pale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pleasanton_main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+brouwerij_kerkom,0,0,244498759682,"{""name"":""Brouwerij Kerkom"",""city"":""Kerkom"",""state"":""Limburg"",""code"":"""",""country"":""Belgium"",""phone"":""32-011-68-20-87"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Naamsesteenweg 469""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.7763,""lon"":5.166}}",1,58,1
+flyers_restraunt_and_brewery-peacemaker_porter,0,0,244611022848,"{""name"":""Peacemaker Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust porter in style, a dark and full bodied ale with hints of roasted barley and flavors of coffee and bitter sweet chocolate on the palate."",""style"":""Porter"",""category"":""Irish Ale""}",1,11,1
+schloss_eggenberg-urbock_23,0,0,244999651328,"{""name"":""Urbock 23°"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schloss_eggenberg"",""updated"":""2010-07-22 20:00:20"",""description"":""Schloss Eggenberg Urbock 23° is one of the strongest beers in the world. We keep the Urbock 23° in our Schloss cellars for 9 months until it is dark gold and strongly matured. Urbock 23° has received the highest acknowledgments and honours at international exhibitions and world evaluations. It is brewed exclusively from natural raw ingredients after the purity requirement of 1516. Schloss Eggenberg Urbock is filled in a 0.33 litre designer bottle embossed with Schloss Eggenberg and in barrels for the export (20 and 30 litre)."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,46,1
+ridgeway_brewing-ipa,0,0,244997226497,"{""name"":""IPA"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,40,1
+bear_republic_brewery-xp_pale_ale,0,0,244371161089,"{""name"":""XP Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,34,1
+bear_republic_brewery,0,0,244371619842,"{""name"":""Bear Republic Brewery"",""city"":""Healdsburg"",""state"":""California"",""code"":""95448"",""country"":""United States"",""phone"":""1-707-433-2337"",""website"":""http://www.bearrepublic.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""345 Healdsburg Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.6112,""lon"":-122.871}}",1,35,1
+brauerei_und_altbierkche_pinkus_mller-organic_hefewizen,0,0,244489322496,"{""name"":""Organic Hefewizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_und_altbierkche_pinkus_mller"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,37,1
+herkimer_pub_brewery,0,0,244737048578,"{""name"":""Herkimer Pub & Brewery"",""city"":""Minneapolis"",""state"":""Minnesota"",""code"":""55408"",""country"":""United States"",""phone"":""1-612-821-0101"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2922 Lyndale Avenue South""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.9491,""lon"":-93.2885}}",1,8,1
+hale_s_ales_3-el_jefe_weizen_ale,0,0,244736458754,"{""name"":""El Jefe Weizen Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,7,1
+de_proef_brouwerij-andelot_angelique,0,0,244612399104,"{""name"":""Andelot Angelique"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+crabby_larry_s_brewpub_steak_crab_house-crabby_larry_s_irish_red_ale,0,0,244499283968,"{""name"":""Crabby Larry's Irish Red Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crabby_larry_s_brewpub_steak_crab_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich and smooth on the pallate this ale is a near perfect \""Irish Red\"". A variety of hops, Mt. Hood, Liberty & Fuggles combined with some roasted barley make an agreeable brew."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,59,1
+michigan_brewing-mackinac_pale_ale,0,0,244857962497,"{""name"":""Mackinac Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic American style pale ale. A well balanced, light copper colored, medium bodied ale with a distinctive hop bitterness and aroma."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+moylan_s_brewery_restaurant-kilt_lifter_scottish_ale,0,0,244876574722,"{""name"":""Kilt Lifter Scottish Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,48,1
+mill_steakhouse,0,0,244857307136,"{""name"":""Mill Steakhouse"",""city"":""Littleton"",""state"":""Colorado"",""code"":""80120"",""country"":""United States"",""phone"":""1-303-798-5280"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5798 South Rapp Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.612,""lon"":-105.019}}",1,0,1
+g_heileman_brewing-special_export,0,0,244630421506,"{""name"":""Special Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""g_heileman_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+bamberger_mahr_s_bru-hefeweissbier,0,0,244377321474,"{""name"":""Hefeweißbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bamberger_mahr_s_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,50,1
+brouwerij_strubbe-vlas_kop,0,0,244480868353,"{""name"":""Vlas Kop"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_strubbe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+denver_chophouse_and_brewery-redwing,0,0,244623212545,"{""name"":""Redwing"",""abv"":4.73,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,39,1
+isle_of_skye_brewing_company-wee_beast,0,0,244735606784,"{""name"":""Wee Beast"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""isle_of_skye_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,4,1
+yaletown_brewing-downtown_brown,0,0,245747023872,"{""name"":""Downtown Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yaletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,22,1
+marshall_brewing_company,0,0,244859666434,"{""name"":""Marshall Brewing Company"",""city"":""Tulsa"",""state"":""Oklahoma"",""code"":""74104"",""country"":""United States"",""phone"":""(918) 292-8781"",""website"":""http://marshallbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""618 S. Wheeling Ave""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":36.152,""lon"":-95.9647}}",1,6,1
+cains-finest_bitter,0,0,244497448964,"{""name"":""Finest Bitter"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cains"",""updated"":""2011-05-17 03:09:21"",""description"":""A regular winner of awards for quality and flavour, and winner of the silver medal at the International Brewing Industry Awards 2002, this refreshing yet full-bodied bitter is a favourite with beer drinkers everywhere. The rich flavours of premium malt and goldings hops are unmistakable in this well balanced, traditionally brewed bitter."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,54,1
+privatbrauerei_erdinger_weissbru-erdinger_weizen,0,0,244998012930,"{""name"":""Erdinger Weizen"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_erdinger_weissbru"",""updated"":""2010-07-22 20:00:20"",""description"":""The famous Bavarian specialty\r\n\r\nErdinger Weissbier 'crystal clear' is particularly welcome as a tasty thirst-quencher for hot summer days.\r\n\r\nThis specialty wheat beer gets its 'crystal clear' appearance from a particularly long filtration process, known in the industry as \""fine filtration\"", whereby the beer becomes completely clear.\r\n\r\nThis gives Erdinger Weissbier 'crystal clear' its sparkling and refreshing character - which also makes it the ideal wheat beer for warm summer days.\r\n\r\nBrewed in strict accordance with our own traditional recipe, Erdinger Weissbier 'crystal clear' meets the highest quality standards and satisfies the most sophisticated palate."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,42,1
+cervecera_cuauhtmoc_moctezuma-dos_equis_amber_lager,0,0,244480409601,"{""name"":""Dos Equis Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+george_bateman_and_son_ltd-victory_ale,0,0,244613054466,"{""name"":""Victory Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""george_bateman_and_son_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+engine_house_9-hefeweizen,0,0,244612136961,"{""name"":""Hefeweizen"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engine_house_9"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,13,1
+midnight_sun_brewing_co-kodiak_brown_nut_brown_ale,0,0,244873428993,"{""name"":""Kodiak Brown Nut Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Rugged yet smooth, Kodiak Brown Ale balances caramel and roasted malts with enticing Northwest hops. Inspired by the adventurous spirit readily found in Alaska, Kodiak Brown Ale invites you to take the road less traveled. Like true Alaskans, we are not afraid of the dark."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,41,1
+shipyard_brewing_portland-fuggles_ipa,0,0,245000241154,"{""name"":""Fuggles IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,47,1
+boston_beer_company-samuel_adams_utopias_mmiv,0,0,244369653762,"{""name"":""Samuel Adams Utopias MMIV"",""abv"":24.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+egan_brewing-queen_of_clubs_schwarzbier,0,0,244622819329,"{""name"":""Queen of Clubs Schwarzbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,38,1
+wedge_brewery-iron_rail_ipa,0,0,245746892801,"{""name"":""Iron Rail IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wedge_brewery"",""updated"":""2011-05-23 10:39:09"",""description"":""English Style India Pale Ale, Maris Otter 2-row, Canadian Honey Malt and Belgian Crystal.\nCentennial, Kent Golding, and Cascade are added Five times during the process, including Dry Hopping.\n\nAroma: Earthy, Citrusy, and Resinous\nTasting/Flavor: Orangy and Sugary Apricots\nFinish: Malt Sweetness Balanced by Dry Hops"",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,21,1
+warsteiner_brauerei-warsteiner_premium_oktoberfest,0,0,245747089409,"{""name"":""Warsteiner Premium Oktoberfest"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""warsteiner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,23,1
+high_falls_brewing,0,0,244737507330,"{""name"":""High Falls Brewing"",""city"":""Rochester"",""state"":""New York"",""code"":""14605"",""country"":""United States"",""phone"":""1-585-263-9446"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""445 St.Paul Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.1646,""lon"":-77.6155}}",1,9,1
+diamond_knot_brewery_alehouse-steamer_glide_stout,0,0,244620197888,"{""name"":""Steamer Glide Stout"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,33,1
+pyramid_ales_brewery-hart_espresso_stout,0,0,244998668289,"{""name"":""Hart Espresso Stout"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,44,1
+avery_brewing_company-mephistopheles_stout,0,0,244363886595,"{""name"":""Mephistopheles Stout"",""abv"":16.03,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""avery_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+schussenrieder_erlebnisbrauerei-pils,0,0,244998471683,"{""name"":""Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schussenrieder_erlebnisbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+alltech_s_lexington_brewing_company,0,0,244363427840,"{""name"":""Alltech's Lexington Brewing Company"",""city"":""Lexington"",""state"":""Kentucky"",""code"":""40508"",""country"":""United States"",""phone"":""1-859-887-3406"",""website"":""http://www.kentuckyale.com/kentuckyale/Index.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Producers of Kentucky Ale brand.   Also a very esteemed educational institution, specializing in distilling sciences and fermentation sciences."",""address"":[""401 Cross Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.0501,""lon"":-84.5088}}",1,18,1
+hacker_pschorr_bru-original_oktoberfest,0,0,244745502720,"{""name"":""Original Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hacker_pschorr_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,28,1
+midnight_sun_brewing_co-sloth,0,0,244859207681,"{""name"":""Sloth"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""SLOTH Belgian-style Imperial Stout is deliberately dark as hell. The pour is slow and sluggish. Its head is menacing, becoming torn and tattered Belgian lace on the sides of the glass as you cautiously consume this brew—sip by insidious sip. \r\n\r\nThe aroma is sweet from heavy malt and big alcohol with notes of vanilla, coconut and whiskey from the oak. The depth & breadth of roasted malt flavors loiters on the palate while the robust finish lingers, well, forever. \r\n\r\nSLOTH...Just add couch."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,5,1
+pacific_coast_brewing-gray_whale,0,0,244981432320,"{""name"":""Gray Whale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,3,1
+copper_eagle_brewing-guinea_pig_amber_ale,0,0,244497776641,"{""name"":""Guinea Pig Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_eagle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,55,1
+faultline_brewing_1-belgian_tripel,0,0,244628717569,"{""name"":""Belgian Tripel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+dubuque_brewing_and_bottling,0,0,244610564097,"{""name"":""Dubuque Brewing and Bottling"",""city"":""Dubuque"",""state"":""Iowa"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.5006,""lon"":-90.6646}}",1,10,1
+bavarian_barbarian_brewing_company-square_feet_wheat,0,0,244376862724,"{""name"":""Square Feet Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bavarian_barbarian_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Square Feet Wheat is loosely based on a Berliner Weisse style of beer from Germany. It has a refreshing, yet slight wheat and malt sweetness that is supported by a distinct hop presence. On hot Summer days, Square Feet Wheat will cool you off. Bring it along to pool parties, picnics and backyard cookouts. Instead of a boring wedge of lemon or orange, try Square Feet Wheat with a splash of raspberry extract or a dash of essence of Woodruff – both a customary addition to Berliner Weisse beers in Berlin.""}",1,49,1
+brouwerij_st_bernardus-biere_blanche,0,0,244478574595,"{""name"":""Bière Blanche"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+allguer_brauhaus_ag_kempten_brausttte_leuterschach,0,0,244379615232,"{""name"":""Allguer Brauhaus AG Kempten, Brausttte Leuterschach"",""city"":""Marktoberdorf"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8342-/-9647-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Schwendener Strae 18""]}",1,57,1
+port_brewing_company-bombshell_barleywine,0,0,244980776960,"{""name"":""Bombshell Barleywine"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+brouwerij_st_bernardus-pater_6,0,0,244498825216,"{""name"":""Pater 6"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""This name became a reference. This beer is mostly pointed out with its product name: “a Paterke”. \r\n\r\nThis “Paterke” is a chestnut coloured dark beer with a high fermentation (6.7 alcohol content) and a full taste."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,58,1
+flying_dog_brewery-k_9_cruiser_winter_ale,0,0,244611022849,"{""name"":""K-9 Cruiser Winter Ale"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The psycho in the pack... K-9 Cruiser is a dark, sweet and malty winter warmer that will captivate any adventurous craft brew drinker. A true Flying Dog original, K-9 Cruiser is the perfect brew to warm you up in those cold winter months."",""style"":""Old Ale"",""category"":""British Ale""}",1,11,1
+sierra_nevada_brewing_co-bigfoot_1997,0,0,244999651329,"{""name"":""Bigfoot 1997"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+rivers_effortless_dining,0,0,244997292032,"{""name"":""Rivers Effortless Dining"",""city"":""Salt Lake City"",""state"":""Utah"",""code"":""84121"",""country"":""United States"",""phone"":""1-801-733-6600"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.638,""lon"":-111.69}}",1,40,1
+bell_s_brewery_inc-oberon_ale,0,0,244371161090,"{""name"":""Oberon Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""An American wheat ale brewed with Saaz hops. Spicy and fruity, Oberon is the color and scent of a summer afternoon."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,34,1
+bell_s_brewery_inc-pale_ale,0,0,244371685376,"{""name"":""Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing, blond colored pale ale. Bell's pale ale is made almost exclusively from pale malt. It expresses a spicy floral hop aroma and taste."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+brauhaus_onuma,0,0,244489322497,"{""name"":""Brauhaus Onuma"",""city"":""Onuma"",""state"":""Hokkaido"",""code"":"""",""country"":""Japan"",""phone"":""81-0138-67-2227"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Onuma""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0646,""lon"":141.347}}",1,37,1
+high_falls_brewing-genesee_cream_ale,0,0,244737114112,"{""name"":""Genesee Cream Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+hannen_brauerei-alt,0,0,244736524288,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hannen_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+dempsey_s_restaurant_brewery,0,0,244612464640,"{""name"":""Dempsey's Restaurant & Brewery"",""city"":""Petaluma"",""state"":""California"",""code"":""94952"",""country"":""United States"",""phone"":""1-707-765-9694"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""50 East Washington Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.2362,""lon"":-122.64}}",1,14,1
+de_dochter_van_de_korenaar-bravoure,0,0,244631339008,"{""name"":""Bravoure"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_dochter_van_de_korenaar"",""updated"":""2010-07-22 20:00:20"",""description"":""copper -coloured complex tasting ale with a soft smokey taste combined with some caramel-malt to give it a long lasting chocolate-like aftertaste""}",1,59,1
+middle_ages_brewing-wailing_wench,0,0,244857962498,"{""name"":""Wailing Wench"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark and robust brewed in the style of a American strong ale, full bodied and screaming with hops.""}",1,2,1
+nebraska_brewing_company-cardinal_pale_ale,0,0,244876574723,"{""name"":""Cardinal Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+miller_brewing-red_dog,0,0,244857307137,"{""name"":""Red Dog"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,0,1
+gore_range_brewery,0,0,244630487040,"{""name"":""Gore Range Brewery"",""city"":""Edwards"",""state"":""Colorado"",""code"":""81632"",""country"":""United States"",""phone"":""1-970-926-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""105 Edwards Village Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.6441,""lon"":-106.596}}",1,56,1
+bandana_brewery-saint_peter_red,0,0,244377387008,"{""name"":""Saint Peter Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+brown_street_brewery-czech_pilsner,0,0,244480933888,"{""name"":""Czech Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brown_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+dortmunder_actien_brauerei_dab-hansa_imported_dortmunder,0,0,244623278080,"{""name"":""Hansa Imported Dortmunder"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dortmunder_actien_brauerei_dab"",""updated"":""2010-07-22 20:00:20"",""description"":""Surviving beer from the Dortmunder Hansa-Brauerei before being acquired by Actien."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+jacob_leinenkugel_brewing_company-leinenkugel_s_sunset_wheat,0,0,244735606785,"{""name"":""Leinenkugel's Sunset Wheat"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,4,1
+mia_and_pia_s_pizzeria_and_brewhouse,0,0,244859666435,"{""name"":""Mia and Pia's Pizzeria and Brewhouse"",""city"":""Klamath Falls"",""state"":""Oregon"",""code"":""97603"",""country"":""United States"",""phone"":""1-541-884-4880"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3545 Summers Lane (restaurant)""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.2249,""lon"":-121.782}}",1,6,1
+cleveland_chophouse_and_brewery,0,0,244497448965,"{""name"":""Cleveland ChopHouse and Brewery"",""city"":""Cleveland"",""state"":""Ohio"",""code"":""44113"",""country"":""United States"",""phone"":""1-216-623-0909"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""824 West St.Clair Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.4995,""lon"":-81.6994}}",1,54,1
+privatbrauerei_hofmhl,0,0,244998012931,"{""name"":""Privatbrauerei Hofmhl"",""city"":""Eichsttt"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8421-/-9808-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hofmhlstrae 10""]}",1,42,1
+cervecera_jerome,0,0,244480409602,"{""name"":""Cervecera Jerome"",""city"":""Mendoza"",""state"":"""",""code"":"""",""country"":""Argentina"",""phone"":""54-0261-4320449"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Mendoza""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-32.8902,""lon"":-68.844}}",1,16,1
+glacial_lakes_brewing,0,0,244613054467,"{""name"":""Glacial Lakes Brewing"",""city"":""New York Mills"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":46.518,""lon"":-95.3761}}",1,15,1
+ettaler_klosterbetriebe_abteilung_brauerei_destillerie,0,0,244612136962,"{""name"":""Ettaler Klosterbetriebe Abteilung Brauerei & Destillerie"",""city"":""Ettal"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8822-/-74450"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kaiser-Ludwig-Platz 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.569,""lon"":11.0942}}",1,13,1
+midnight_sun_brewing_co-obliteration_ii,0,0,244873494528,"{""name"":""Obliteration II"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With passion and purpose, we present this series of hop-centric beers. Using different hop varieties and brewing techniques, we aim to capture bold, distinct hop characteristics in aroma, flavor and finish. While we explore the world of hops, we invite you to learn along with us: these beers offer an incredible opportunity to experience the diversity of hops while engaging the palate and obliterating the senses.\r\n\r\nObliteration II is yet another dynamic Double IPA. Its aroma is intense with fragrant notes of citrus, spice, pine and alcohol. A sturdy malt platform provides the perfect stage for showcasing these high alpha-acid hops, creating flavors and textures that entice then intrigue. Obliteration II finishes with poignant bitterness."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,41,1
+skagit_river_brewing-highwater_porter,0,0,245000306688,"{""name"":""Highwater Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,47,1
+brasserie_de_l_abbaye_des_rocs-belgian_burgundy_ale,0,0,244369719296,"{""name"":""Belgian Burgundy Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_des_rocs"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+empyrean_brewing_company-dark_side_vanilla_porter,0,0,244622819330,"{""name"":""Dark Side Vanilla Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+weinkeller_brewery_berwyn-marzen,0,0,245746892802,"{""name"":""Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,21,1
+wild_onion_brewing-paddy_pale_ale,0,0,245747089410,"{""name"":""Paddy Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_onion_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,23,1
+holsten_brauerei,0,0,244737572864,"{""name"":""Holsten-Brauerei"",""city"":""Hamburg"",""state"":""Hamburg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)40-/-381010"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Holstenstrae 224""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":53.5621,""lon"":9.9451}}",1,9,1
+dinkelacker_schwaben_bru-sanwald_dunkelweizen,0,0,244620197889,"{""name"":""Sanwald Dunkelweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dinkelacker_schwaben_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+redhook_ale_brewery-wheat_hook,0,0,244998668290,"{""name"":""Wheat Hook"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+ballast_point_brewing-come_about_imperial_stout,0,0,244363952128,"{""name"":""Come About Imperial Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ballast_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,19,1
+shepherd_neame-bishops_finger_kentish_strong_ale,0,0,244998537216,"{""name"":""Bishops Finger Kentish Strong Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shepherd_neame"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+anchor_brewing-bock,0,0,244363427841,"{""name"":""Bock"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anchor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,18,1
+half_moon_bay_brewing-mavericks_amber_ale,0,0,244745502721,"{""name"":""Mavericks Amber Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+minneapolis_town_hall_brewery-smoked_helles_lager,0,0,244859207682,"{""name"":""Smoked Helles Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This light german style Helles Lager was brewed with a small percentage of beechwood smoked malt. Light and delicate east drinking lager"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+ph_woods_diner_and_brewery,0,0,244981497856,"{""name"":""PH Woods Diner and Brewery"",""city"":""Moreno Valley"",""state"":""California"",""code"":""92553"",""country"":""United States"",""phone"":""1-951-653-3850"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""23060 Alessandro Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.9176,""lon"":-117.26}}",1,3,1
+dick_s_brewing-danger_ale,0,0,244629700608,"{""name"":""Danger Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,55,1
+fifty_fifty_brewing_co-trifecta_belgian_style_tripel,0,0,244628717570,"{""name"":""Trifecta Belgian Style Tripel"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""There are hundreds of Trappist Monasteries in the world, many of them make fruitcake. This beer is not made by Monks nor does it resemble fruitcake. Furthermore, Truckee has no Trappist Monastery and that, my friend, is why we at FiftyFifty bring you Trifecta. This is one of FiftyFifty's seasonal ales, and is a high alcohol Belgian style beer. Brewed with inspiration from Belgian Trappist Ales, Trifecta also includes locally grown Purple Sage Honey. With a complex spiciness tempered by the sweeter notes from the sage honey, flavors of spicy sage, alcohol, and mild malt sweetness are apparent, and sage and clove like aromas predominate. Coming in at over 8%, this beer is deceptively strong."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,52,1
+duclaw-venom,0,0,244610629632,"{""name"":""Venom"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duclaw"",""updated"":""2010-07-22 20:00:20"",""description"":""This American-Style Pale Ale is aggressively hopped giving it a citrusy flavor and aroma. No antidote needed. This beer is dark-golden, medium-bodied and very “hoppy.” It is American-style because American-grown hops are used rather that European."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+bj_s_pizza_grill_and_brewery_jantzen_beach-whiskey_stout,0,0,244376928256,"{""name"":""Whiskey Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bj_s_pizza_grill_and_brewery_jantzen_beach"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+brouwerij_sterkens-st_paul_special,0,0,244478640128,"{""name"":""St. Paul Special"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+amherst_brewing_company-lewmeister_oktoberfest,0,0,244379615233,"{""name"":""Lewmeister Oktoberfest"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""amherst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Amber, full-bodied lager made in the traditional style with German hops. Brewed in early August and put on tap with a keg of the previous years batch by October of each year. This beer is brewed in memory of \""Lewis\"", the owners beer-drinking long-haired Dachsund, who passed away at 17-1/2 on 8/17/99."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,57,1
+port_brewing_company-z_u_later_doppelbock,0,0,244980776961,"{""name"":""Z-U-Later Doppelbock"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,1,1
+brouwerij_sterkens-st_sebastiaan_golden,0,0,244498825217,"{""name"":""St. Sebastiaan Golden"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+flying_fish_brewing_company-imperial_espresso_porter,0,0,244611022850,"{""name"":""Imperial Espresso Porter"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This robust dark brew has been created using rich Colombian dark roast coffee to celebrate our 10th anniversary in royal fashion. The enticing regal aromas of toffee and licorice lead to the coronation of taste; a palate of malty richness exhibiting chocolate and coffee notes, balanced by the noble and novel Mt. Rainer hop, all topped with a rich creamy crown. This very special offering will warm your soul and lift your spirits. Oh yeah, it also packs a royal kick at 8% alcohol."",""style"":""Porter"",""category"":""Irish Ale""}",1,11,1
+sly_fox_brewhouse_and_eatery_royersford-seamus_irish_red,0,0,245117616128,"{""name"":""Seamus Irish Red"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+rogue_ales-artisan_lager,0,0,244997292033,"{""name"":""Artisan Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A vienna style lager"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,40,1
+bellows_brew_crew-pretty_girl_pilsner,0,0,244371161091,"{""name"":""Pretty Girl Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+bierbrouwerij_bavaria-de_horste_vermeer_traditional_dutch_ale,0,0,244371685377,"{""name"":""De Horste Vermeer Traditional Dutch Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_bavaria"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+brauhaus_sternen-honey_brown_ale,0,0,244489388032,"{""name"":""Honey Brown Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_sternen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+hopworks_urban_brewery,0,0,244737114113,"{""name"":""Hopworks Urban Brewery"",""city"":""Portland"",""state"":""Oregon"",""code"":""97202"",""country"":""United States"",""phone"":""(503) 201-8957"",""website"":""http://hopworksbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""HUB is Portland's first Eco-Brewpub to offer all organic handcrafted beers, fresh local ingredients, and a sustainable building with a relaxed and casual atmosphere. Brewmaster Christian Ettinger has spent the past year and half constructing his dream brewpub.  HUB incorporates all aspects of sustainability.  From composting to rain barrels, and from pervious pavers to hand dryers, we have made every effort to protect our future with a thoughtful alternative.  Hopworks has four distinct areas including a family friendly restaurant with play area, a vibrant bicycle bar, banquet mezzanine, and outdoor beer-garden.  Our 20 barrel brewery produces 3000 barrels a year and provides our restaurant with ten different HUB organic beers on tap and two cask ales at all times. We have parking for seventy cars, eight motorcycles and up to fifty bikes.  Our world-class beer, New York style pizza, and wonderful staff are some of the best you will find anywhere."",""address"":[""2944 SE Powell Blvd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.4969,""lon"":-122.635}}",1,8,1
+harpoon_brewery_windsor-esb,0,0,244736524289,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_windsor"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+denver_chophouse_and_brewery-pilsner,0,0,244612464641,"{""name"":""Pilsner"",""abv"":4.99,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+denver_chophouse_and_brewery-buffalo_gold,0,0,244631404544,"{""name"":""Buffalo Gold"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+midnight_sun_brewing_co-old_whiskers,0,0,244858028032,"{""name"":""Old Whiskers"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our perennial summer seasonal beer, first brewed in Summer 1995 when we opened. \r\n\r\nAffectionately called \""Spunky and Chunky\"", Old Whiskers Hefeweizen is a traditional Bavarian-style unfiltered wheat beer. Created with equal parts malted wheat and pale two-row malt, Old Whiskers is lightly hopped to style. A unique Bavarian strain of yeast imparts a clove- or banana-like aroma and flavor. (We swear we did not put cloves into the brew. It is the magical powers of The Yeast.) Old Whisker is delicious and refeshing--the perfect summer quencher, served with or without a slice of lemon."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,2,1
+new_glarus_brewing_company-tripel,0,0,244876640256,"{""name"":""Tripel"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+mudshark_brewing-upriver_lager,0,0,244857307138,"{""name"":""UpRiver Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mudshark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Light American Lager, Our Lightest, Lowest Carb. Beer"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,0,1
+gottberg_brew_pub-all_american_gold,0,0,244630487041,"{""name"":""All-American Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+beach_chalet_brewery-endless_summer_cream_ale,0,0,244377387009,"{""name"":""Endless Summer Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""beach_chalet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+bryggeriet_lfabrikken-porter,0,0,244480933889,"{""name"":""Porter"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bryggeriet_lfabrikken"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,17,1
+eder_heylands-schlappeseppl_export,0,0,244623278081,"{""name"":""Schlappeseppl Export"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eder_heylands"",""updated"":""2010-07-22 20:00:20"",""description"":""A classically brewed export beer with a slight aroma of hops.\r\n\r\n\r\nAwarded with the gold medal by\r\nGerman Agriculture Society-DLG\r\n2005, 2006 and 2007\r\nMonde Selection, Brüssel 2003 and 2005\r\n2007 with Grand Gold\r\nand with the silver medal by\r\nWorld Beer Cup, Colorado 2002"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+john_martin_sa,0,0,244735606786,"{""name"":""John Martin sa"",""city"":""Genval"",""state"":"""",""code"":""1332"",""country"":""Belgium"",""phone"":"""",""website"":""http://www.anthonymartin.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""rue du cerf""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":50.7298,""lon"":4.508}}",1,4,1
+midnight_sun_brewing_co-jupiter_belgian_style_champagne_trippel,0,0,244859731968,"{""name"":""Jupiter - Belgian-style \""Champagne\"" Trippel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,6,1
+coast_brewing-ruby_red_lager,0,0,244497514496,"{""name"":""Ruby Red Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+randy_s_fun_hunters_brewery_restaurant_and_banquet_center-wheat_ale,0,0,244998078464,"{""name"":""Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""randy_s_fun_hunters_brewery_restaurant_and_banquet_center"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,42,1
+cervejaria_sudbrack-eisenbahn_south_american_pale_ale_s_a_p_a,0,0,244480475136,"{""name"":""Eisenbahn South American Pale Ale (S.A.P.A.)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_sudbrack"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+goose_island_beer_company_fulton_street-pils,0,0,244613120000,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+firehouse_brewery_restaurant-stout,0,0,244612202496,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,13,1
+millstream_brewing,0,0,244873494529,"{""name"":""Millstream Brewing"",""city"":""Amana"",""state"":""Iowa"",""code"":""52203"",""country"":""United States"",""phone"":""1-319-622-3672"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""835 48th Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.7972,""lon"":-91.8652}}",1,41,1
+south_shore_brewery-cream_ale,0,0,245117943808,"{""name"":""Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+brewery_de_troch-chapeau_fraises_lambic,0,0,244486832128,"{""name"":""Chapeau Fraises Lambic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_de_troch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,31,1
+engine_house_9,0,0,244622884864,"{""name"":""Engine House #9"",""city"":""Tacoma"",""state"":""Washington"",""code"":""98406"",""country"":""United States"",""phone"":""1-253-272-3435"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""611 North Pine""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.256,""lon"":-122.473}}",1,38,1
+wild_onion_brewing,0,0,245746892803,"{""name"":""Wild Onion Brewing"",""city"":""Lake Barrington"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.2108,""lon"":-88.1652}}",1,21,1
+wychwood_brewery-black_wych_stout,0,0,245747089411,"{""name"":""Black Wych Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,23,1
+hops_grillhouse_brewery_cherry_creek-alligator_ale,0,0,244737572865,"{""name"":""Alligator Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_grillhouse_brewery_cherry_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+duneland_brewhouse_pub_and_restaurant-salmon_tail_pale_ale,0,0,244620263424,"{""name"":""Salmon Tail Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duneland_brewhouse_pub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+rivers_effortless_dining-porter,0,0,244998733824,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rivers_effortless_dining"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,44,1
+bandana_brewery-kasota_ipa,0,0,244363952129,"{""name"":""Kasota IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bandana_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+sierra_nevada_brewing_co-bigfoot,0,0,244998537217,"{""name"":""Bigfoot"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nThis year marks the 25th release of Bigfoot®. Our award-winning barleywine boasts a dense, fruity bouquet, an intense flavor palate and a deep reddish-brown color. Its big maltiness is superbly balanced by a wonderfully bittersweet hoppiness. \r\n\r\n"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,43,1
+anderson_valley_brewing-high_rollers_wheat_beer,0,0,244363427842,"{""name"":""High Rollers Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anderson_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+hapa_s_brew_haus_and_restaurant-el_nino_pale_ale,0,0,244745502722,"{""name"":""El Niño Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+moon_river_brewing_company,0,0,244859273216,"{""name"":""Moon River Brewing Company"",""city"":""Savannah"",""state"":""Georgia"",""code"":""31401"",""country"":""United States"",""phone"":""912.447.0943"",""website"":""http://www.moonriverbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Moon River Brewing Company is founded on our obsession with creating the ideal restaurant and brewery experience. Striving for this ideal, we are committed to providing three basic services. We are dedicated, first and foremost, to providing you with a comfortable and relaxing environment with prompt and cheerful service. Secondly, we are committed to serving you a delicious variety of freshly prepared foods. Our kitchen is a boiling pot of diversity, offering a range of dishes from simple comfort food to eclectic gourmet cuisine. Finally, we are undeniably passionate about serving great beer."",""address"":[""21 W. Bay St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":32.081,""lon"":-81.0915}}",1,5,1
+pivovar_v_hurbanove,0,0,244981497857,"{""name"":""Pivovar v Hurbanove"",""city"":""Hurbanovo"",""state"":"""",""code"":"""",""country"":""Slovakia"",""phone"":""421-35---765-41-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Novozamocka Cesta 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.8809,""lon"":18.1972}}",1,3,1
+ej_phair_brewing_company_and_alehouse,0,0,244629766144,"{""name"":""EJ Phair Brewing Company and Alehouse"",""city"":""Concord"",""state"":""California"",""code"":""94520"",""country"":""United States"",""phone"":""1-925-691-4253"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2151 Salvio Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.978,""lon"":-122.034}}",1,55,1
+fish_brewing_company_fish_tail_brewpub-10_squared_10,0,0,244628783104,"{""name"":""10 Squared (10²)"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""The Mighty Fish Brewers first produced Ten Squared Anniversary Ale to celebrate Fish Brewing Company’s tenth anniversary. The ale was so good and the response to it so overwhelmingly positive that it has become the crown jewel of REEL ALEs. Ten different hops: Horizon, Chinook, Columbus, Willamette, Tradition, Northern Brewer, Santiam, Tettnanger, Cascade and Golding, in the order of their use -- give Ten Squared a unique hop character which has to be tasted to be believed. \r\n\r\nEven with 100 IBUs, this brew sports a strong malt backbone. Two-row Pale, Caramel 40, Caramel 75, Special B and Aromatic malts impart remarkable balance for such a hop monster. This is smooth ale with surprising similarities to ten year old malt whiskey. Produced for the holidays, 10 102 Anniversary Ale is usually available into late spring."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,52,1
+f_x_matt_brewing-saranac_imperial_stout,0,0,244610695168,"{""name"":""Saranac Imperial Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Imperial Stout is part of our \""High Peaks Series,\"" a line of beers that are bigger, more complex and flavorful; beers that are meant to be sipped and savored. Saranac Imperial Stout is brewed with 11 malts to balance a deliciouse chocolate and coffee roasted flavor with a spicy herbal character of the generous kettle and dry hops."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,10,1
+bj_s_pizza_grill_and_brewery_jantzen_beach,0,0,244376928257,"{""name"":""BJ's Pizza, Grill, and Brewery - Jantzen Beach"",""city"":""Portland"",""state"":""Oregon"",""code"":""97217"",""country"":""United States"",""phone"":""1-503-289-5566"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""12105 North Center Avenue""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.5235,""lon"":-122.676}}",1,49,1
+bull_bush_pub_brewery,0,0,244478640129,"{""name"":""Bull & Bush Pub & Brewery"",""city"":""Denver"",""state"":""Colorado"",""code"":""80246"",""country"":""United States"",""phone"":""1-303-759-0333"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4700 Cherry Creek Drive South""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.705,""lon"":-104.936}}",1,12,1
+anheuser_busch-bud_light_lime,0,0,244379680768,"{""name"":""Bud Light Lime"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Exactly what it says, Bud Light and Lime. Brewed in Georgia."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,57,1
+prescott_brewing_company-ponderosa_ipa,0,0,244980776962,"{""name"":""Ponderosa IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,1,1
+calhoun_s_microbrewery-cherokee_red_ale,0,0,244498825218,"{""name"":""Cherokee Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""calhoun_s_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+four_peaks_brewing-kilt_lifter_scottish_style_ale,0,0,244611088384,"{""name"":""Kilt Lifter  Scottish-Style Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our award-winning Flagship ale is now in bottles!! This is an ale made in the tradition of the great strong ales of Scotland. Amber colored, malty sweet with underlying note of smokiness. \r\n\r\nAlcohol content approximately 6.0% by volume (ALWAYS ON TAP!!)"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,11,1
+sly_fox_brewhouse_and_eatery_royersford,0,0,245117681664,"{""name"":""Sly Fox Brewhouse and Eatery - Royersford"",""city"":""Royersford"",""state"":""Pennsylvania"",""code"":""19468"",""country"":""United States"",""phone"":""1-610-948-8088"",""website"":""http://www.slyfoxbeer.com/index1.asp"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A full production brewery and accompanying restaurant opened in 2004 by the owners of Sly Fox Brewhouse & Eatery in nearby Phoenixville. The 20bbl brewhouse packages a wide range of beers in 12oz cans, 22oz bottles and 750ml bottles. Pikeland Pils, a multiple GABF Gold Medal Winner, and O'Reilly's Stout, a nitro-poured, draught-only beer named after brewer Brian O'Reilly's grandfather are among its most popular beers, on and off premises, as are such Belgian-style delights as Incubus Tripel, Ichor Quadrupel, Saison Vos & Black Raspberry Reserve. Sly Fox is also noted for its Bock Beers (see listing for the Phoenixville pub for more details) and annual Christmas Ale."",""address"":[""312 North Lewis Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.1943,""lon"":-75.534}}",1,46,1
+rogue_ales-chocolate_stout,0,0,244997292034,"{""name"":""Chocolate Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""The recipe for Rogue Chocolate Stout was created several years ago for export to Japan. The exported twelve ounce Chocolate Bear Beer bottle label is in Kanji and features a teddy bear with a pink heart on his belly. Chocolate Stout was released for Valentines Day in 2001 in a twenty-two ounce bottle for the US market. The label features a Roguester (Sebbie Buhler) on the label. The bottled of Chocolate Stout is available on a very limited basis in the US, so get it while you can! \r\n\r\nHedonistic! Ebony in color with a rich creamy head. The mellow flavor of oats, chocolate malts, and real chocolate are balanced perfectly with the right amount of hops for a bittersweet finish. Chocolate Stout is brewed with 10 ingredients: Northwest Harrington and Klages, Crystal 135-165 and Beeston Chocolate Malts, Cascade Hops, Rolled Oats and Roasted Barley, Natural Chocolate Flavor, Free Range Coastal Waters and PacMan Yeast. Chocolate Stout is available year-round only in the classic 22-ounce bottle and on draft."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,40,1
+big_river_brewing,0,0,244371226624,"{""name"":""Big River Brewing"",""city"":""Richmond"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-271-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""180 - 14200 Entertainment Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.1344,""lon"":-123.065}}",1,34,1
+big_sky_brewing-trout_slayer,0,0,244371750912,"{""name"":""Trout Slayer"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_sky_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Trout Slayer is a filtered wheat ale, fermented at cool temperatures, making it a smooth drinkable session beer. Brewed with Palisade, Glacier, and Mt. Hood hops, this straw colored beer is sure to please any craft beer drinker. IBU 35 SRM 5 ABV 4.7%"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,35,1
+brewery_creek_brewing-dark_mild,0,0,244489388033,"{""name"":""Dark Mild"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""To quote Dr. John Harrison, a great influence on my brewing, \""Mild ale is the only beer with an uninterrupted history from medieval times to the present day.\"" The \""mild\"" means low hop bitterness, \""...which is the only essential feature of a mild ale.\"" They can be light or dark in color, high or low in alcohol, dry or sweet. This is difficult for modern style wiennies to grasp. How can one style be so many things? How can I judge it good or bad?. The current Brewery Creek Dark Mild is medium brown, soft hops and about 3.5% abv. It could be a bit more estery. It is a lovely style."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,37,1
+iron_city_brewing_co-iron_city,0,0,244737179648,"{""name"":""Iron City"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Iron City has been the ‘Burgh’s signature beer since 1861. This premium lager has become a proud tradition of the city and its people. Just try to imagine a Pittsburgh football, baseball or hockey game without an ice cold Iron.\r\n\r\nWe still brew Iron City fresh daily – but now, instead of delivering it to Pittsburgh neighborhoods in horse-drawn buggies, we deliver it to your favorite hangouts. You can get an Iron at national restaurant chains, upscale eateries, and – of course – your favorite local bar. You can also find it at more than 330 regional beer distributors. Because Iron City is brewed locally, it goes from the brewery to you within a matter of days. You won’t find a fresher beer anywhere in Pittsburgh!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+heller_bru_trum-aecht_schlenkerla_rauchbier_urbock,0,0,244736524290,"{""name"":""Aecht Schlenkerla Rauchbier Urbock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heller_bru_trum"",""updated"":""2010-07-22 20:00:20"",""description"":""A smoked bock beer for Bamberg's strong beer season (October through December). Matured for months in ancient rock-cellars underneath Bamberg and tapped freshly from the oakwood cask. Similar to, but much bigger than the classic Maerzen style."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,7,1
+devil_s_canyon,0,0,244612530176,"{""name"":""Devil's Canyon"",""city"":""Belmont"",""state"":""CA"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2011-07-28 19:03:35"",""description"":"""",""address"":[]}",1,14,1
+denver_chophouse_and_brewery-wild_turkey_bourbon_stout,0,0,244631404545,"{""name"":""Wild Turkey Bourbon Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+miller_brewing-miller_chill,0,0,244858028033,"{""name"":""Miller Chill"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Launched in 2007, Miller Chill is the only light beer brewed with a hint of lime and a pinch of salt to provide a truly refreshing beer experience. Through all of our marketing efforts, beer drinkers will see that Miller Chill is a celebration and fusion of the best of two cultures, great light beer from America and the chelada style from Mexico. It's the new alternative in mainstream low-cal beers ... one that provides a crisper, smoother, more refreshing beer experience."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,2,1
+niagara_falls_brewing-weisse_beer,0,0,244876640257,"{""name"":""Weisse Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+namibia_breweries,0,0,244857307139,"{""name"":""Namibia Breweries"",""city"":""Windhoek"",""state"":"""",""code"":"""",""country"":""Namibia"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 206""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-22.5589,""lon"":17.0825}}",1,0,1
+gray_brewing-witbier,0,0,244756643840,"{""name"":""Witbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+bethlehem_brew_works-ch_47_pale_ale,0,0,244377387010,"{""name"":""CH-47 Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bethlehem_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""This light copper, dry finishing American Pale Ale is an excellent addition to the Brew Works fleet of pale ales. A hefty sling load weight of Chinook hops gives this beer its distinctive bite. Chinook and Amarillo hops contribute to its almost citrus aroma. A hopheads delight!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+cervecera_cuauhtmoc_moctezuma-bohemia_clasica,0,0,244480933890,"{""name"":""Bohemia Clásica"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+egan_brewing-blonde_ale,0,0,244623278082,"{""name"":""Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,39,1
+jolly_pumpkin_artisan_ales-weizen_bam_biere,0,0,244735672320,"{""name"":""Weizen Bam Bière"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Ruddy golden, with yeast driven esters of banana, spicy clove, and nutmeg all wrapped up with a generous dose of rapscillion delight."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,4,1
+midnight_sun_brewing_co-oosik_amber_ale,0,0,244859731969,"{""name"":""Oosik Amber Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Oosik Amber Ale is a true German-style altbier, brewed with pale, Munich and crystal malts. Deep amber with copper highlights, Oosik sports a toasted and caramel malt profile, balanced by traditional noble hops. A special yeast strain ferments this ale at cooler lager temperatures, giving it a smooth malt character and a clean finish. \r\n\r\nWant to hang—so to speak—for a while? Oosik Amber Ale gives you hang time. Great flavor, big mouthfeel, satisfying finish…all in a session-worthy beer. Compare it to other ambers—Oosik rules. Look for our 20-inch Oosik tap in better beer bars throughout AK. \r\n\r\nYou can't just have a little Oosik. \r\n\r\nBUY the Oosik \""Love is Hard\"" tee - men's and women's styles available.\r\n\r\nAvailability:\r\nAK - draft (year-round)"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,6,1
+coast_range_brewing-california_blonde_ale,0,0,244497514497,"{""name"":""California Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coast_range_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+river_west_brewing-spiced_porter,0,0,244998078465,"{""name"":""Spiced Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+cervezas_alhambra,0,0,244480475137,"{""name"":""Cervezas Alhambra"",""city"":""Granada"",""state"":"""",""code"":"""",""country"":""Spain"",""phone"":""34-958817205"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Avenida de Murcia, 1""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":37.1875,""lon"":-3.6018}}",1,16,1
+grand_teton_brewing_1,0,0,244739997696,"{""name"":""Grand Teton Brewing #1"",""city"":""Wilson"",""state"":""Wyoming"",""code"":""83014"",""country"":""United States"",""phone"":""1-307-733-9000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1295 North West Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.4988,""lon"":-110.877}}",1,15,1
+fish_brewing_company_fish_tail_brewpub,0,0,244612202497,"{""name"":""Fish Brewing Company & Fish Tail Brewpub"",""city"":""Olympia"",""state"":""Washington"",""code"":""98501"",""country"":""United States"",""phone"":""1-360-943-3650"",""website"":""http://www.fishbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""From our home in beautiful Olympia, Washington, Fish Brewing Company has been hand-crafting ales of Northwest proportions since 1993. Then, using a system cobbled from brewing and dairy equipment, we brewed for our neighbors up and down Puget Sound. Growing steadily since, Fish is now an award-winning craft brewer with distribution throughout the Pacific Northwest and beyond."",""address"":[""515 Jefferson Street SE""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.0437,""lon"":-122.897}}",1,13,1
+minhas_craft_brewery-berghoff_oktoberfest_beer,0,0,244873494530,"{""name"":""Berghoff Oktoberfest Beer"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minhas_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,41,1
+south_shore_brewery-pale_ale,0,0,245118009344,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,47,1
+brewery_vivant,0,0,244486897664,"{""name"":""Brewery Vivant"",""city"":""Grand Rapids"",""state"":""MI"",""code"":""49506"",""country"":""United States"",""phone"":""616 719 1604"",""website"":""http://breweryvivant.com"",""type"":""brewery"",""updated"":""2011-06-22 12:19:30"",""description"":""Brewery Vivant is the realization of years of dreaming and much discussion of what a great brewery can be. What makes our brewery different from the rest is the way we approach our craft and operate our business. The core of Brewery Vivant can be found at the crossroads of three passions:\n\n   1. Our love of the tradition and artistic approach of the Belgian & French styles of beers\n   2. Devotion to using local sources for ingredients and running our business according to the three pillars of sustainability; Environmental Integrity, Social Equity, and Economic Viability\n   3. Sharing the experience of how beer and food can be paired to uplift the enjoyment of both\n"",""address"":[""925 Cherry Street SE""]}",1,31,1
+foster_s_australia_ltd,0,0,244622884865,"{""name"":""Foster's Australia Ltd."",""city"":"""",""state"":"""",""code"":"""",""country"":""Australia"",""phone"":"""",""website"":""http://www.fostersbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Foster's Lager is the largest selling Australian beer brand in the world with more than 100 million cases of Foster's consumed worldwide every year. Brewed in nine countries and over 20 plants, Foster's Lager is widely sold and distributed throughout Australia, Asia, the Pacific, Europe, the Americas and the Middle East. It is the world's third most widely distributed brand, available in more than 150 countries. Foster's Lager is the international flagship brand for the Foster's group. -http://www.fosters.com.au/enjoy/beer/fosters_the_brand.htm"",""address"":[]}",1,38,1
+yellowstone_valley_brewing-grizzly_wulff_wheat,0,0,245746958336,"{""name"":""Grizzly Wulff Wheat"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yellowstone_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,21,1
+illinois_brewing-porter_from_hell,0,0,244737572866,"{""name"":""Porter From Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""illinois_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,9,1
+eel_river_brewing-certified_organic_extra_pale_ale,0,0,244620263425,"{""name"":""Certified Organic Extra Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eel_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+rivertowne_pour_house-leroy_s_brown_ale,0,0,244998733825,"{""name"":""LeRoy's Brown Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rivertowne_pour_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in honor of Andrew’s Grandfather LeRoy, this big bad nut brown ale has a fantastic malt character made up of caramel and chocolate flavors. One taste and you will see why this is the baddest beer in the whole damn town!!!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,44,1
+barley_creek_brewing-mountaineer_maibock,0,0,244363952130,"{""name"":""Mountaineer Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A German style lager. Light in color, with medium to full body and mild hop bitterness."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,19,1
+sierra_nevada_brewing_co-bigfoot_2001,0,0,244998537218,"{""name"":""Bigfoot 2001"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+anheuser_busch-spring_heat_spiced_wheat,0,0,244363427843,"{""name"":""Spring Heat Spiced Wheat"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+heineken_international-dark_lager,0,0,244745568256,"{""name"":""Dark Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heineken_international"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+mussel_inn-strong_ox,0,0,244859273217,"{""name"":""Strong Ox"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mussel_inn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+portsmouth_brewery-bottle_rocket_ipa,0,0,244981563392,"{""name"":""Bottle Rocket IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""portsmouth_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An explosion of hops dominate this deep golden ale. Brewed with four varieties of hops & dry hopped with three other hops, the flavor is powerful. Not a harsh bitterness, but a full hop flavor."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+elliott_bay_brewery_and_pub-alembic_pale,0,0,244629831680,"{""name"":""Alembic Pale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elliott_bay_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+fitzpatrick_s_brewing-prairie_thunder_pale_ale,0,0,244628783105,"{""name"":""Prairie Thunder Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitzpatrick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+faultline_brewing_2-hefe_weizen,0,0,244610695169,"{""name"":""Hefe Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,10,1
+blue_point_brewing-fresh_hops_pale_ale,0,0,244376928258,"{""name"":""Fresh Hops Pale Ale"",""abv"":5.0,""ibu"":36.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-12-20 15:32:12"",""description"":""Blue Point Brewing's Pale Ale has a light golden color but explodes with a rich full-flavor. This refreshing ale is top-fermented and hopped at four different stages of the brewing process. English pale malt lends complexity to this brew. Small amounts of Wheat and Carapils round out the malt bill. Brewed to satisfy the hop lover, this pale ale has an immediate floral-citrus flavor that pervades the overall character of this hoppy, quenching microbrew."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+captain_lawrence_brewing_company-captin_lawrence_smoked_porter,0,0,244478705664,"{""name"":""Captin Lawrence Smoked Porter"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A complex beer, with layers of flavors unfolding as this beer slides down your throat. Before the introduction of indirect-fired malt kilns, all beers had a smoky flavor. Today only a handful of brewers produce beer reminiscent of those of the past. We use imported German smoked malt to add depth and complexity to our Smoked Porter."",""style"":""Porter"",""category"":""Irish Ale""}",1,12,1
+anheuser_busch-budweiser_select,0,0,244379680769,"{""name"":""Budweiser Select"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Bud Select is a new beer offering a bold taste with a full and distinct flavor that finishes clean. Budweiser Select was developed using two-row and roasted specialty malts for a rich color. It offers excellent drinkability and a taste that does not linger."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,57,1
+pugsley_brewing_llc,0,0,244980842496,"{""name"":""Pugsley Brewing LLC"",""city"":""Portland"",""state"":""Maine"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.6615,""lon"":-70.2553}}",1,1,1
+cambridge_brewing,0,0,244498825219,"{""name"":""Cambridge Brewing"",""city"":""Cambridge"",""state"":""Massachusetts"",""code"":""2139"",""country"":""United States"",""phone"":""1-617-494-1994"",""website"":""http://www.cambrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 Kendall Square #100""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3664,""lon"":-71.0911}}",1,58,1
+fratellos_restaurant_and_brewery-trolleycar_stout,0,0,244611153920,"{""name"":""Trolleycar Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,11,1
+smuttynose_brewing_co-robust_porter,0,0,245117681665,"{""name"":""Robust Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This hearty, mahogany colored ale is brewed to evoke the dark, full-bodied ales that were a favorite of dockworkers and warehousemen (hence the name “Porter”) in 19th century London. It is a good bet that when Dickens’ Mr. Pickwick sat down for a pint, we would have been drinking an ale much like our Robust Porter.This is a smooth and very drinkable beer, characterized by its well-balanced malt and hops, plus subtle notes of coffee and chocolate."",""style"":""Porter"",""category"":""Irish Ale""}",1,46,1
+saint_louis_brewery_schlafy_tap_room-dry_hopped_apa,0,0,244997357568,"{""name"":""Dry-Hopped APA"",""abv"":5.9,""ibu"":50.0,""srm"":10.6,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2011-02-07 14:26:33"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+blackstone_restaurant_brewery-nut_brown_ale,0,0,244371226625,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blackstone_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,34,1
+bison_brewing-organic_gingerbread_ale,0,0,244371750913,"{""name"":""Organic Gingerbread Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+brimstone_brewing-big_ale,0,0,244489388034,"{""name"":""Big Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brimstone_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,37,1
+iron_hill_brewery_wilmingon-irish_red_ale,0,0,244737179649,"{""name"":""Irish Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+hereford_hops_restaurant_and_brewpub_1-wolverine_wheat_beer,0,0,244736589824,"{""name"":""Wolverine Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_restaurant_and_brewpub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,7,1
+diamond_knot_brewery_alehouse-ipa,0,0,244612530177,"{""name"":""IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""OUR FLAGSHIP BEER, the one for which we're known throughout the Puget Sound. Columbus hops impart intense bitterness with flavors of grapefruit and a hint of cedar."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+deschutes_brewery-black_butte_porter,0,0,244631470080,"{""name"":""Black Butte Porter"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Towering high above Central Oregon, jetting into clear blue skies, Black Butte can be seen for miles.  From its base flows the legendary Metolius River--with its source hidden deep beneath ancient lava flows. \r\n\r\nBlack Butte Porter, crafted from chocolate and crystal malts, is Deschutes Brewery’s flagship brand.  With a rich and distinctive flavor, this porter has enjoyed a loyal and passionate following since its first pint in 1988."",""style"":""Porter"",""category"":""Irish Ale""}",1,59,1
+moab_brewery-dead_horse_ale,0,0,244858093568,"{""name"":""Dead Horse Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moab_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+northwoods_brewpub_grill-birch_wood_ale,0,0,244876640258,"{""name"":""Birch Wood Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+new_belgium_brewing-la_folie,0,0,244857372672,"{""name"":""La Folie"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""La Folie Wood-Aged Biere, is our original wood-conditioned beer, resting in French Oak barrels between one and three years before being bottled. . Peter Bouckaert, came to us from Rodenbach – home of the fabled sour red. Our La Folie emulates the spontaneous fermentation beers of Peter’s beloved Flanders with sour apple notes, a dry effervescence, and earthy undertones. New in 2010, we'll do a single bottling of La Folie for the year. Collect the 22oz unique to 2010 designed bottle and start a yearly wood-aged collection of goodness.""}",1,0,1
+great_divide_brewing-oak_aged_yeti_imperial_stout,0,0,244756709376,"{""name"":""Oak Aged Yeti Imperial Stout"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Crack open Yeti Imperial Stout’s sophisticated sibling – Oak Aged Yeti Imperial Stout. Although these beers come from the same clan, they have entirely different personalities. Aging on a blend of French and toasted oak chips infuses a subtle oak and vanilla character into Yeti’s already intense chocolate, roasted coffee malt flavor and hugely assertive hop profile. Who says you can’t tame a Yeti?"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,56,1
+bierbrouwerij_de_koningshoeven-dubbel,0,0,244377452544,"{""name"":""Dubbel"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bierbrouwerij_de_koningshoeven"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+chelsea_brewing_company-sunset_red_ale,0,0,244480999424,"{""name"":""Sunset Red Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chelsea_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+elysian_brewery_public_house-perseus_porter,0,0,244623278083,"{""name"":""Perseus Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewery_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+keg_microbrewery_restaurant,0,0,244735672321,"{""name"":""Keg Microbrewery & Restaurant"",""city"":""Stevens Point"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.5236,""lon"":-89.5746}}",1,4,1
+montana_brewing-sandbagger_gold,0,0,244859797504,"{""name"":""Sandbagger Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+coeur_d_alene_brewing_company,0,0,244497514498,"{""name"":""Coeur d'Alene Brewing Company"",""city"":""Coeur d'Alene"",""state"":""Idaho"",""code"":""83814"",""country"":""United States"",""phone"":""(208) 664-2739"",""website"":""http://www.cdabrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""209 Lakeside Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6745,""lon"":-116.784}}",1,54,1
+sabmiller_india-foster_s_lager_beer,0,0,244998078466,"{""name"":""Foster's Lager Beer"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Foster's® Lager is a uniquely Australian beer, brewed with the finest sun-dried malted barley, the purest water, and Foster's® own specially bred 'Pride of Ringwood' hops imported directly from Australia to give the beer an authentic flavor. Foster's® Lager Beer has always been at the forefront of brewing technology and the Foster's® Lager brewed today is the result of over a century of attention of the brewing art. Quality has been the strength of Foster's® since its earliest days and remains a paramount concern at every stage of the beer's journey from brewery to consumer. Foster's® crisp, clean flavour won it immediate international acclaim when it was first brewed in Melbourne in 1888. Today, more than one hundred years later, it is still recognized as one of the world's best beers."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,42,1
+cherryland_brewing-raspberry_beer,0,0,244480475138,"{""name"":""Raspberry Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cherryland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,16,1
+hambleton_ales-toleration,0,0,244740063232,"{""name"":""Toleration"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hambleton_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+frederic_robinson_ltd-old_tom_barley_wine,0,0,244612268032,"{""name"":""Old Tom Barley Wine"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""frederic_robinson_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+minhas_craft_brewery-dempsey_stout,0,0,244873494531,"{""name"":""Dempsey Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minhas_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+spanish_peaks_brewing,0,0,245118074880,"{""name"":""Spanish Peaks Brewing"",""city"":""Polson"",""state"":""Montana"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.blackdogales.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Polson MT 59860""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.6959,""lon"":-114.176}}",1,47,1
+brouwerij_bavik_de_brabandere-petrus_blond_ale,0,0,244486963200,"{""name"":""Petrus Blond Ale"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+founders_brewing-founders_devil_dancer,0,0,244622884866,"{""name"":""Founders Devil Dancer"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Founders most complex, most innovative, most feared and yet most revered ale produced. Massive in complexity the huge malt character balances the insane amount of alpha's used to create this monster. More IBU's than any brewery has documented, more than you would believe and dry-hopped for twenty-six days straight with a combination of 10 hop varieties. Dangerously drinkable and deliciously evil. We dare you to dance with the Devil."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,38,1
+independence_brew_pub,0,0,244737572867,"{""name"":""Independence Brew Pub"",""city"":""Philadelphia"",""state"":""Pennsylvania"",""code"":""19107"",""country"":""United States"",""phone"":""1-215-922-4292"",""website"":""http://www.independencebrewpub.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1150 Filbert Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9526,""lon"":-75.1594}}",1,9,1
+elliott_bay_brewery_and_pub-dry_hopped_ipa,0,0,244620263426,"{""name"":""Dry Hopped IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elliott_bay_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,33,1
+rock_bottom_restaurant_brewery_chicago-goat_toppler_mai_bock,0,0,244998733826,"{""name"":""Goat Toppler Mai Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_chicago"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,44,1
+barrel_house_brewing_co,0,0,244364017664,"{""name"":""Barrel House Brewing Co."",""city"":""Cincinnati"",""state"":""Ohio"",""code"":""45214"",""country"":""United States"",""phone"":""513-421-2337"",""website"":""http://www.barrelhouse.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Established as a brewpub in 1995 in the historic Over-The-Rhine neighborhood of Cincinnati, The BarrelHouse Brewing Company has since transitioned into a regionally distributed microbrewery offering an impressive selection of both innovative styles of ales and traditional lagers. Brewed and bottled in small batches with only honest ingredients, BarrelHouse beers are extremely fresh and exceptionally flavorful. Thank you for embracing our fiercely independent vision of a hand-crafted future for all! Operating as a brewpub from August 1995 until February 2005, The BarrelHouse Brewing Company recently relocated to our current location in the West End of downtown Cincinnati. We officially reopened with a completed expansion plan in April 2005. Our expansion included almost doubling our fermentation capacity as well as the addition of a brand new bottling line. Our first order of bottled beer hit Ohio area stores in June 2006 and we have subsequently begun to enter markets that were previously unavailable. The BarrelHouse Brewing Company brews on a 15 BBL brewhouse manufactured by Century. One BBL equals 31 gallons therefore; our beers are hand-crafted in 465 gallon batches. Our ales are ready after approximately fourteen days while our lagers are conditioned for upwards of six weeks. By brewing in small batches, our brewers are able to achieve an optimal level of quality control while creating a consistently flavorful product. While our brewing process is quite labor intensive, we believe that hand-crafting our beers sets us apart from the majority of breweries in the U.S. today. Our dedication is unparalleled and quite evident in the final packaged product."",""address"":[""544B W. Liberty St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.1136,""lon"":-84.526}}",1,19,1
+ska_brewing_company,0,0,244998602752,"{""name"":""Ska Brewing Company"",""city"":""Durango"",""state"":""Colorado"",""code"":""81301"",""country"":""United States"",""phone"":""970.247.5792"",""website"":""http://www.skabrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""545 Turner Drive""]}",1,43,1
+anheuser_busch-wild_blue_blueberry_lager,0,0,244363493376,"{""name"":""Wild Blue Blueberry Lager"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""anheuser_busch"",""updated"":""2010-07-22 20:00:20"",""description"":""Wild Blue is brewed with a blend of German hops from the Hallertau region in Bavaria and classic Aroma hops from the Willamette Valley in the Pacific Northwest. A combination of two- and six-row barley malt was also chosen specifically for this recipe. Beer lovers will also appreciate this specialty fruit-infused lager's striking burgundy color, ripe blueberry aroma and its ability to stand up to the strongest of foods."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,18,1
+high_falls_brewing-dundee_pale_bock_lager,0,0,244745568257,"{""name"":""Dundee Pale Bock Lager"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Certain things seem interminable. The line at the DMV. The commencement address. Winter. \r\n\r\nBut take heart. Even the longest, darkest winter gives way to spring and a new sense of optimism that the best is just ahead. That thought—and an itchy wool robe—sustained the monks through times of fasting. Their reward? A bock beer with the power to rejuvenate the body and the soul. That, and the opportunity to exchange the wool robe for a nice burlap one. \r\n\r\nSo when you’re stuck in the middle of that seemingly endless glass of mediocre beer, be optimistic. A Dundee Pale Bock awaits.\r\n\r\nA traditional German Maibock with a deep, golden color, malty-sweet aroma, and clean finish from Magnum and Czech Saaz hops."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,28,1
+new_century_brewing_company-edison_light_beer,0,0,244859338752,"{""name"":""Edison Light Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_century_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+privat_brauerei_schmucker_ober_mossau_kg-schwarz_bier,0,0,244981563393,"{""name"":""Schwarz Bier"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privat_brauerei_schmucker_ober_mossau_kg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,3,1
+elliott_bay_brewery_and_pub-luna_weizen,0,0,244629831681,"{""name"":""Luna Weizen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elliott_bay_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+full_sail_brewing_1-amber_ale,0,0,244628848640,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,52,1
+fish_brewing_company_fish_tail_brewpub-thornton_creel_ale,0,0,244610695170,"{""name"":""Thornton Creel Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+blue_point_brewing-hoptical_illusion,0,0,244376993792,"{""name"":""Hoptical Illusion"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blue_point_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,49,1
+carlow_brewing_company,0,0,244478705665,"{""name"":""Carlow Brewing Company"",""city"":""Carlow"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":""353 (0)59  9134356"",""website"":""http://www.carlowbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Carlow Brewing Company is a small Irish Brewery established in 1998.  Carlow, a small town located in the Barrow Valley Region, the traditional malt and hop producing region in Ireland, once boasted a number of breweries, but the practice had been discontinued for over 100 years until revived in 1998 by Carlow Brewing Company.  "",""address"":[""The Goods Store, Station Road""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.7196,""lon"":-6.846}}",1,12,1
+appleton_brewing-adler_brau_1848_lager,0,0,244379680770,"{""name"":""Adler Bräu 1848 Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+pumphouse_pizza_and_brewing-t_p_h_porter,0,0,244980842497,"{""name"":""T.P.H. Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pumphouse_pizza_and_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+capital_brewery-autumnal_fire,0,0,244498890752,"{""name"":""Autumnal Fire"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,58,1
+front_street_brewery-raging_river_ale,0,0,244611153921,"{""name"":""Raging River Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""front_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+southern_tier_brewing_co-raspberry_porter,0,0,245117747200,"{""name"":""Raspberry Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,46,1
+samuel_smith_old_brewery_tadcaster-nut_brown_ale,0,0,244997357569,"{""name"":""Nut Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":""Often called “mild” if it is on draft, brown ale is a walnut-colored specialty of the North of England. A festive-occasion beer, brown ale is one of the oldest English brewing styles, mentioned in literature in the 16th century. Beers brewed at the old brewery have a round, nutty flavor because of the Yorkshire square system of fermentation."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,40,1
+boston_beer_company-samuel_adams_golden_pilsner,0,0,244371292160,"{""name"":""Samuel Adams Golden Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+blicks_brewing-blind_side_pale_ale,0,0,244371816448,"{""name"":""Blind Side Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""blicks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+brouwerij_abdij_saint_sixtus,0,0,244489453568,"{""name"":""Brouwerij Abdij Saint Sixtus"",""city"":""Westvleteren"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-057-40-10-57"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Donkerstraat 12""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8961,""lon"":2.7222}}",1,37,1
+james_page_brewing-voyageur_extra_pale_ale,0,0,244737179650,"{""name"":""Voyageur Extra Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""james_page_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,8,1
+hereford_hops_steakhouse_and_brewpub_3-india_pale_ale,0,0,244736589825,"{""name"":""India Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+dixon_s_downtown_grill,0,0,244612530178,"{""name"":""Dixon's Downtown Grill"",""city"":""Denver"",""state"":""Colorado"",""code"":""80202"",""country"":""United States"",""phone"":""1-303-573-6100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.7541,""lon"":-105.0}}",1,14,1
+deschutes_brewery-mirrorpond_pale_ale,0,0,244631470081,"{""name"":""Mirrorpond Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Mirror Pond is just a short walk from the Deschutes Brewery & Public House in downtown Bend and reflects the Three Sisters Mountains. This scenic spot alongside the Deschutes River is the locals’ choice for summer festivals and concerts."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+moosejaw_pizza_dells_brewing_company-pilsner,0,0,244858093569,"{""name"":""Pilsner"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+o_grady_s_brewery_and_pub_1-prohibition_smokehouse_porter,0,0,244876705792,"{""name"":""Prohibition Smokehouse Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_grady_s_brewery_and_pub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+new_jersey_beer_company-hudson_pale_ale,0,0,244857372673,"{""name"":""Hudson Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_jersey_beer_company"",""updated"":""2010-11-17 14:13:17"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,0,1
+great_lakes_brewing-holy_moses,0,0,244756774912,"{""name"":""Holy Moses"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian Wit Ale spiced with orange peel, chamomile and coriander."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,56,1
+big_rock_brewery-cold_cock_porter_discontinued,0,0,244377452545,"{""name"":""Cold Cock Porter (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,50,1
+cooper_s_cave_ale_company-sagamore_stout,0,0,244480999425,"{""name"":""Sagamore Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooper_s_cave_ale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Sagamore Stout is a light, dry Irish Draught Stout. It is not only named for the street on which our brewery is located but also for the \""Sagamore\"" of the Mohicans, the Chief Chingachgook. Best quaffed using a wide mouthed, full blown English Pint."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,17,1
+f_x_matt_brewing-saranac_rachbier,0,0,244623343616,"{""name"":""Saranac Rachbier"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This malty German style lager is brewed with Bamberg smoked malt using only the best German hops and traditional lager yeast. Look for a smooth malty flavor with a hint of smoke in the finish.""}",1,39,1
+kostritzer_schwarzbierbrauerei-maibock,0,0,244735672322,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kostritzer_schwarzbierbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,4,1
+new_glarus_brewing_company-apple_ale,0,0,244859797505,"{""name"":""Apple Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,6,1
+commonwealth_brewing_1-classic_stout,0,0,244497580032,"{""name"":""Classic Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""commonwealth_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+samuel_smith_old_brewery_tadcaster-imperial_stout,0,0,244998144000,"{""name"":""Imperial Stout"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+cleveland_chophouse_and_brewery-kolsch,0,0,244480540672,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cleveland_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+hampshire_brewery-pride_of_romsey_ipa,0,0,244740063233,"{""name"":""Pride of Romsey IPA"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hampshire_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+furstlich_furstenbergische_brauerei-export,0,0,244612268033,"{""name"":""Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""furstlich_furstenbergische_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+mishawaka_brewing-indiana_pale_ale,0,0,244873494532,"{""name"":""INDIAna Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mishawaka_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+st_stan_s_brewing_co-vhb,0,0,245118074881,"{""name"":""VHB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_stan_s_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,47,1
+brouwerij_de_ranke-kriek,0,0,244487028736,"{""name"":""Kriek"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_ranke"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+four_peaks_brewing-hop_knot_ipa,0,0,244622950400,"{""name"":""Hop Knot IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Hop Knot IPA is made only from American malt and lots of American hops, which produce a big, broad-shouldered, hoppy beer backed up by a character as warm as, well, Mom and apple pie… \r\n\r\nHop Knot IPA get its peculiar name from the weaving of four different hops added at four separate times during the brewing process. Including our cavernous hop-back, which gets so stuffed with whole leaf hops that we feel genuine guilt for its excess. Hop Knot is an ale that is to be enjoyed with friends, spicy food or any time you need a good hop fix without the harsh bitterness. We hope you enjoy this pioneering beer made in the bold spirit of Americans everywhere. \r\n\r\nAlcohol content approximately 6.0% by volume (ALWAYS ON TAP!!)"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+industrias_la_constancia_ilc-pilsner_of_el_salvador,0,0,244737638400,"{""name"":""Pilsner of El Salvador"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""industrias_la_constancia_ilc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+empyrean_brewing_company-festive_ale_2000,0,0,244620394496,"{""name"":""Festive Ale 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+sabmiller_india-peroni_nastro_azzurro,0,0,244998799360,"{""name"":""Peroni Nastro Azzurro"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Peroni its unique taste which is refreshing and dry, with a clear-cut, clean character and clarity, achieved through the exclusive brewing process. This ensures that the beer has both a fresh and natural quality. \r\n\r\nPositioned as ‘Italian style in a bottle’, from presentation to pouring the brand, Peroni has struck a chord with modern urbanites looking for cosmopolitan class. \r\n\r\nhttp://www.sabmiller.in/brands_peroni.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+bear_republic_brewery-late_harvest_fest_lager,0,0,244364017665,"{""name"":""Late Harvest Fest Lager"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bear_republic_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This malty, copper-colored lager is styled after Munich's traditional \""Oktoberfest\"" beers. A full-bodied, rich malt character is balanced by a slight bitter finish. Perfect for cooler fall days, it is lagered for five weeks. Prost!!"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,19,1
+snipes_mountain_microbrewery_restaurant-roza_reserve,0,0,245116370944,"{""name"":""Roza Reserve"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""snipes_mountain_microbrewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+appleton_brewing-adler_brau_eagle_lager,0,0,244363493377,"{""name"":""Adler Bräu Eagle Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""appleton_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+hofmark_brauerei-original_pils,0,0,244745633792,"{""name"":""Original Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hofmark_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+niagara_falls_brewing,0,0,244859338753,"{""name"":""Niagara Falls Brewing"",""city"":""Niagara Falls"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-905-356-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6863 Lundy's Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.0893,""lon"":-79.11}}",1,5,1
+pugsley_brewing_llc-kennebunkport_ipa,0,0,244981563394,"{""name"":""Kennebunkport IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pugsley_brewing_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Below-average but drinkable IPA, cheaply priced (~$1/bottle), and available at Trader Joe's."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+emmett_s_tavern_and_brewery-belgian_wit,0,0,244629831682,"{""name"":""Belgian Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""emmett_s_tavern_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+gaslight_brewery-80_shilling,0,0,244628848641,"{""name"":""80 Shilling"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+flyers_restraunt_and_brewery-barnstormer_brown_ale,0,0,244610760704,"{""name"":""Barnstormer Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""As the name implies, a rich deep brown ale in color with dark amber highlights.  The flavor is slightly sweet with hints of nuts and toffee finishing smooth with no after taste."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,10,1
+boulevard_brewing_company-bob_s_47_oktoberfest,0,0,244376993793,"{""name"":""Bob's '47 Oktoberfest"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Boulevard’s fall seasonal beer, Bob’s ’47 Oktoberfest is a medium-bodied, dark amber brew with a malty flavor and well-balanced hop character. With this Munich-style lager we solute our friend Bob Werkowitch, Master Brewer and 1947 graduate of the U.S. Brewer‘s Academy. Available from September through October in bottles and on draught."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,49,1
+catawba_valley_brewing_company,0,0,244478705666,"{""name"":""Catawba Valley Brewing Company"",""city"":""Glen Alpine"",""state"":""NC"",""code"":""28628"",""country"":""United States"",""phone"":""828-430-6883"",""website"":""http://www.catawbavalleybrewingcompany.com/"",""type"":""brewery"",""updated"":""2011-02-16 12:36:49"",""description"":""The Catawba Valley Brewing Company grew out of a simple gift, and the love of good beer.  A beginner's home brewing kit given years ago began a passion for brewing that could only culminate with production on a larger scale.  It seemed natural to take production from a few gallons to a few barrels and beyond. During the summer of 1999 the business that is now Catawba Valley Brewing Company was born.\n\nIn April of 2007 the brewery relocated from Glen Alpine, NC to downtown Morganton, NC.  In the process we didn't lose a customer or miss a delivery.  In fact we achieved record spring sales.  In addition to relocating we've also opened our taproom to the public.  We encourage those interested in finely crafted beers to stop by and try our selection of beers.  Getting a fresher beer is a near impossibility."",""address"":[""P.O. Box 1154""]}",1,12,1
+bell_s_brewery_inc-hopslam_ale,0,0,244379680771,"{""name"":""Hopslam Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""A biting, bitter, tongue bruiser of an ale. With a name like Hopslam, what did you expect?"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,57,1
+pyramid_ales_brewery-scotch_brand_ale,0,0,244980842498,"{""name"":""Scotch brand Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,1,1
+cervejaria_sudbrack-eisenbahn_defumada,0,0,244498890753,"{""name"":""Eisenbahn Defumada"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervejaria_sudbrack"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+gordon_biersch_brewing-pilsner,0,0,244611219456,"{""name"":""Pilsner"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+southern_tier_brewing_co-southern_tier_tripel,0,0,245117747201,"{""name"":""Southern Tier Tripel"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Don't let Tripel's light color and delicate aroma fool you, this is one serious beer brewed with maximum effort.  First, we introduce the freshest barley to crystal filtered water.  Second, we add the best hops shipped directly from Europe.  Third, our special yeast is the catalyst for fermentations, gobbling sugar and creating alcohol as it works.  \r\n\r\nSome say that the Belgian monks who first brewed this style called it triple to denote it's high alcohol content.  Still others believe triple's origins lay in its triple fermentations; twice in the brewery and once in the bottle.  Whatever the answer, ours is the Tripel threat."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,46,1
+scotch_irish_brewing-black_irish_plain_porter,0,0,244997423104,"{""name"":""Black Irish Plain Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scotch_irish_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,40,1
+boston_beer_company-samuel_adams_hefeweizen,0,0,244371292161,"{""name"":""Samuel Adams Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Unfiltered wheat ale, fruity, bright, with a crisp flavor of wheat.  Samuel Adams® Hefeweizen beer is a traditional spin on a classic American craft brewing style. The brewers of Samuel Adams® used both malted and unmalted wheat, and two row Pale barley for a clean malty, cereal note. This bright, fruity wheat ale is unfiltered, retaining a natural haze from malt proteins, crisp, bright flavors of wheat, and fresh, fruity ester complexity from our proprietary ale yeast. Accentuated with Noble Spalt-Spalter hops, Samuel Adams® Hefeweizen has an elegant and pleasant bitterness, finishing smooth and clean."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,34,1
+boston_beer_works-buckeye_oatmeal_stout,0,0,244371816449,"{""name"":""Buckeye Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boston_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+brouwerij_van_eecke-het_kapittel_pater,0,0,244489453569,"{""name"":""Het Kapittel Pater"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_eecke"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+jt_whitney_s_brewpub_and_eatery-black_diamond_porter,0,0,244737245184,"{""name"":""Black Diamond Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,8,1
+hirschbru_privatbrauerei_hss-bavarian_weissbier_hefeweisse_weisser_hirsch,0,0,244736589826,"{""name"":""Bavarian-Weissbier Hefeweisse / Weisser Hirsch"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hirschbru_privatbrauerei_hss"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,7,1
+dragonmead_microbrewery-dead_monk_abbey_ale,0,0,244612595712,"{""name"":""Dead Monk Abbey Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian beer is brewed in the style of the Trappist Monks. Belgian Candi Sugar, Pilsen, Aromatic and Caramunich malts are balance by E. Kent Goldings, Mt. Hood and Saaz hops to construct a \""Big Beer\"". Traditional White Beer Yeast is used to make this beer have a large mouth-feel and lingering spice notes in the finish."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,14,1
+deschutes_brewery-obsidian_stout,0,0,244631470082,"{""name"":""Obsidian Stout"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Obsidian Stout gets is inspiration from one of the world's largest obsidian flows at Newberry Volcano--just a few miles south of the brewery.  \""The Big Obsidian Flow,\"" as they call it, covers more than 700 acres with shiny black obsidian."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+new_belgium_brewing-sunshine_wheat,0,0,244858093570,"{""name"":""Sunshine Wheat"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""SUNSHINE WHEAT is a great beer for trouncing thirst.  Yet, it has a depth of character that inspires a quiet moment’s reflection. Sunshine Wheat swirls in the mouth with ripples of coriander and orange peel tartness, settling nicely into a tranquil sea of apple and honey tones.  A filtered wheat beer, Sunshine offers a crisp, refreshing alternative to heavier-bodied heffe-weizens."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,2,1
+oak_creek_brewery-horseshoe_hefeweizen,0,0,244876705793,"{""name"":""Horseshoe Hefeweizen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,48,1
+olde_main_brewing-marzen_lager,0,0,244857372674,"{""name"":""Marzen Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_main_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,0,1
+hambleton_ales,0,0,244756774913,"{""name"":""Hambleton Ales"",""city"":""Melmerby"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01765)-640108"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Melmerby Green Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":54.1744,""lon"":-1.4844}}",1,56,1
+blitz_weinhard_brewing,0,0,244377452546,"{""name"":""Blitz-Weinhard Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Portland OR 97209""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.5325,""lon"":-122.686}}",1,50,1
+dark_horse_brewing_co-tres_blueberry_stout,0,0,244613382144,"{""name"":""Tres Blueberry Stout"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dark_horse_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A full bodied stout made with all malted barley and blueberry. Flavors of chocolate, roast malt and light blueberry make up the palate with lots of fruity blueberry aroma."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,17,1
+faultline_brewing_2-pale_ale,0,0,244623343617,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,39,1
+loaf_and_stein_brewing-railroad_street_porter,0,0,244858683392,"{""name"":""Railroad Street Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""loaf_and_stein_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,4,1
+new_holland_brewing_company-pilgrim_s_dole,0,0,244859797506,"{""name"":""Pilgrim's Dole"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Pilgrim’s Dole is a barleywine-style ale made with fifty percent wheat malt, or what we at New Holland call a wheatwine. Pilgrim’s Dole blends warming and slightly sweet flavors with a unique caramelized character. It would be an excellent accent to nutty dishes, fruit crisps or creme brulee."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,6,1
+del_mar_stuft_pizza_and_brewing-stuft_pizza_torrey_pines_ipa,0,0,244629307392,"{""name"":""Stuft Pizza Torrey Pines IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""del_mar_stuft_pizza_and_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,54,1
+schlobrauerei_reckendorf-kellerbier,0,0,244998144001,"{""name"":""Kellerbier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlobrauerei_reckendorf"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+copper_eagle_brewing,0,0,244480606208,"{""name"":""Copper Eagle Brewing"",""city"":""Grand Island"",""state"":""Nebraska"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.9454,""lon"":-122.304}}",1,16,1
+hereford_hops_steakhouse_and_brewpub_3-piva_bohemia,0,0,244740128768,"{""name"":""Piva Bohemia"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+gasthaus_brauerei_max_moritz-kellerpils,0,0,244612268034,"{""name"":""Kellerpils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthaus_brauerei_max_moritz"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+mission_springs_brewing,0,0,244873494533,"{""name"":""Mission Springs Brewing"",""city"":""Mission"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-820-1009"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7160 Oliver Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.1323,""lon"":-122.343}}",1,41,1
+stone_brewing_co-stone_09_09_09_vertical_epic_ale,0,0,245118074882,"{""name"":""Stone 09.09.09 Vertical Epic Ale"",""abv"":8.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,47,1
+brouwerij_der_sint_benedictusabdij_de_achelse_kluis-achel_blond_8,0,0,244487028737,"{""name"":""Achel Blond 8°"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_der_sint_benedictusabdij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,31,1
+fratellos_restaurant_and_brewery-titan_porter,0,0,244622950401,"{""name"":""Titan Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,38,1
+iron_springs_pub_brewery-epiphany_ale,0,0,244737638401,"{""name"":""Epiphany Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+f_x_matt_brewing-saranac_belgian_white,0,0,244620394497,"{""name"":""Saranac Belgian White"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Belgian Style White beer is smooth, tangy and very thirst quenching. Brewed with a delicate combination of oats, wheat and barley malt, we season it ever so lightly with hops. Then we add sprinklings of coriander and orange peel for a refreshing brew with a citrus aroma. Don't be fooled by the cloudy appearance, that's expected of a classic Belgian-style \""Whitbier\"" or white beer."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,33,1
+saku_lletehas,0,0,244998799361,"{""name"":""Saku lletehas"",""city"":""Saku"",""state"":"""",""code"":"""",""country"":""Estonia"",""phone"":""372-6-508-400"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Tallinna mnt.2""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":59.3014,""lon"":24.6679}}",1,44,1
+bell_s_brewery_inc-java_stout,0,0,244364017666,"{""name"":""Java Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bell_s_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":""The satisfying elements of both stout and coffee come together in this full-bodied treat. A marriage of Sumatra's best with rich chocolate and roasted malt provides for a truly enlightening beer."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,19,1
+south_shore_brewery-witbier,0,0,245116436480,"{""name"":""Witbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+atwater_block_brewing-rost,0,0,244363558912,"{""name"":""Rost"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""atwater_block_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Rost (pronounced Roast) is a German word for Amber. Our Amber gets its coppery color from Pilsner. Munich and Caramel malts. Its rich malty sweetness is perfectly balanced by a slight hop finish and creamy head."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,18,1
+hops_grillhouse_brewery_cherry_creek-clearwater_light,0,0,244745633793,"{""name"":""Clearwater Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_grillhouse_brewery_cherry_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+oaken_barrel_brewing-gnaw_bone_pale_ale,0,0,244859404288,"{""name"":""Gnaw Bone Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oaken_barrel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,5,1
+pyramid_ales_brewery,0,0,244981628928,"{""name"":""Pyramid Ales Brewery"",""city"":""Seattle"",""state"":""Washington"",""code"":""98134"",""country"":""United States"",""phone"":""(206) 682-8322"",""website"":""http://www.pyramidbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""91 S Royal Brougham Way""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.5924,""lon"":-122.334}}",1,3,1
+estes_park_brewery,0,0,244629897216,"{""name"":""Estes Park Brewery"",""city"":""Estes Park"",""state"":""Colorado"",""code"":""80517"",""country"":""United States"",""phone"":""970-586.5421"",""website"":""http://www.epbrewery.net/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The original Brewing equipment which consisted of a 4 1/4  Barrel Brewhouse was moved to Estes. For the first summer the Event Center kept the main floor as a stage and dance floor. For the first summer we offered four beers:  Estes Park Porter, Estes Park Renegade, Longs Peak Raspberry Wheat and Estes Park Pale Ale.  In the fall of 1994, Gordon Knight decided to sell his half of the business. When Gordon left, Eric Bratrud took over as the head Brewer. The Brewery also expanded to a 14 BBL Brewhouse and moved out onto the main floor where is now located. In 1995 we started packaging our beers in 12 oz bottles, which expanded our market. By this time we had added a number of beers including Trail Ridge Red, Estes Park Gold, Stinger Wild Honey Wheat and Samson Stout. 1995 was also the first year of the Best of the West Brewfest held in the Brewery parking lot. Since '95 we've continued to evolve both in our restaurant and with our brewing operations. In 2003 Tyler Lemirande and Eric Bratrud took over as owners."",""address"":[""470 Prospect Village Dr.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.3707,""lon"":-105.526}}",1,55,1
+gold_crown_brewing-kings_pilsener,0,0,244628848642,"{""name"":""Kings Pilsener"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gold_crown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+fox_river_brewing_1-ipa,0,0,244610760705,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,10,1
+brasserie_de_brunehaut-abbaye_de_saint_martin_cuvee_de_noel,0,0,244376993794,"{""name"":""Abbaye de Saint-Martin Cuvée de Noel"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""A limited production, spiced Christmas ale available during the cold-weather months. (across the northern hemisphere)\r\nAbbye St. Martin Ales are pure Belgium.""}",1,49,1
+charles_wells_ltd-bombardier_premium_ale,0,0,244478771200,"{""name"":""Bombardier Premium Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""charles_wells_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+bellows_brew_crew-ipa,0,0,244379680772,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bellows_brew_crew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,57,1
+river_west_brewing-whistle_stop_weiss_beer,0,0,244980842499,"{""name"":""Whistle Stop Weiss Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,1,1
+clipper_city_brewing_co-heavy_seas_the_great_pumpkin_imperial_pumpkin_ale,0,0,244498890754,"{""name"":""Heavy Seas The Great Pumpkin Imperial Pumpkin Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The secret is in the 2.5 pounds of spice per barrel for this fall brew. We add the pumpkin during the mash at precisely the right time to create just the perfect balance of malt, hops, pumpkin and spice.\r\n\r\nestimated ABV 8.5% estimated IBU 25\r\nMalt, Hops, Pumpkin & our Secret Spices"",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,58,1
+govnor_s_public_house-american_cream_ale,0,0,244611219457,"{""name"":""American Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,11,1
+spanish_peaks_brewing-american_pale_ale,0,0,245117747202,"{""name"":""American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spanish_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,46,1
+shipyard_brewing_portland-pugsley_s_signature_series_imperial_porter,0,0,244997423105,"{""name"":""Pugsley's Signature Series Imperial Porter"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":""Imperial Porter is a full bodied, very dark, malty beer with a good roasted character coming from the Crystal, Chocolate and Black Patent Malts used in the mash. Warrior, English Fuggles, and East Kent Goldings Hops balance the malts with a good hop bite. The beer has an OG of 1.070, rounding out after fermentation with just a slight residual sweetness and cutting dry at the finish."",""style"":""Porter"",""category"":""Irish Ale""}",1,40,1
+boulevard_brewing_company-lunar_ale,0,0,244371357696,"{""name"":""Lunar Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our first new year-round brand launch since 1996, Lunar Ale is in a category all its own. Brewed using a unique aromatic yeast, this refreshing variety is best described as a cloudy brown ale with a complex, malty aroma and flavor, and a crisp, dry finish."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,34,1
+brasserie_d_achouffe-la_chouffe_golden_ale,0,0,244371816450,"{""name"":""La Chouffe Golden Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_d_achouffe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,35,1
+brownings,0,0,244489453570,"{""name"":""Brownings"",""city"":""Louisville"",""state"":""Kentucky"",""code"":""40202"",""country"":""United States"",""phone"":""502.515.0174"",""website"":""http://www.diningonmain.com/Brownings/Brownings_home.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""In Browning's unique three-story brewing facility, Brew Master Brian Reymiller creates superior artisnal beers using only the best available grains and hops from England, Germany, and the Pacific Northwest.  Reymiller brings to each pint of beer years of experience brewing award winning beer for Hops! Brewery, Smoky Mountain Brewing Company, and Victory Brewing Company.  \t Executive Chef Jay Denham brings casual, Kentucky comfort-foods to the menu at Browning's. Jay's loves to use fresh and local ingredients for his inspiration of good old-fashioned home cooking. Growing up in Maysville, Ky. Jay learned to use the freshest and most wholesome ingredients while cooking for his family. His solid upbringing gave him a palate for great taste and is certainly eminent in his cuisine."",""address"":[""401 East Main St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.2554,""lon"":-85.7441}}",1,37,1
+kulmbacher_brauerei_ag-kapuziner_kristall_weizen,0,0,244737245185,"{""name"":""Kapuziner Kristall-Weizen"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+hook_ladder_brewing_company-hook_ladder_backdraft_brown,0,0,244736655360,"{""name"":""Hook & Ladder Backdraft Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_ladder_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth and refreshing beer loaded with flavor. Specialty malts balanced with just the right amount of cascade hops give it a roasted taste and beautiful brown color. This drinkable brown ale easily rivals an expensive import."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+eagle_brewing,0,0,244612595713,"{""name"":""Eagle Brewing"",""city"":""Mukilteo"",""state"":""Washington"",""code"":""98275"",""country"":""United States"",""phone"":""1-425-348-8088"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""625 Fourth Street""]}",1,14,1
+diamond_bear_brewing_co-paradise_porter,0,0,244631470083,"{""name"":""Paradise Porter"",""abv"":4.99,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_bear_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This medium bodied porter has notes of roasted and chocolate malts, making it a perfect balance of sweet and bitter.  Generous hops give this brew a dry finish."",""style"":""Porter"",""category"":""Irish Ale""}",1,59,1
+odell_brewing-double_pilsner,0,0,244858159104,"{""name"":""Double Pilsner"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+oasis_brewery_annex-extra_special_bitter_ale,0,0,244876705794,"{""name"":""Extra Special Bitter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oasis_brewery_annex"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+pacific_coast_brewing-hammerhead_barleywine_1990,0,0,244980449280,"{""name"":""Hammerhead Barleywine 1990"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+heartland_brewery_union_square-red_rooster_ale,0,0,244756840448,"{""name"":""Red Rooster Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,56,1
+boulevard_brewing_company-ten_penny_american_bitter,0,0,244377452547,"{""name"":""Ten Penny American Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+dogfish_head_craft_brewery-120_minute_ipa,0,0,244613447680,"{""name"":""120 Minute IPA"",""abv"":18.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Too extreme to be called beer? Brewed to a colossal 45-degree plato, boiled for a full 2 hours while being continuously hopped with high-alpha American hops, then dry-hopped daily in the fermenter for a month & aged for nother month on whole-leaf hops!!! Our 120 Minute I.P.A. is by far the biggest I.P.A. ever brewed! At 20% abv and 120 ibus you can see why we call this beer THE HOLY GRAIL for hopheads!\r\n\r\n-changed to be 18% for aging purposes according to Dogfish Head brewery."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,17,1
+finnegans,0,0,244623409152,"{""name"":""FINNEGANS"",""city"":""Minneapolis"",""state"":""Minnesota"",""code"":""55404"",""country"":""United States"",""phone"":"""",""website"":""http://www.finnegans.org"",""type"":""brewery"",""updated"":""2010-12-03 17:53:48"",""description"":""FINNEGANS was founded in 2000 in Minneapolis, Minnesota, from the belief that each and every one of us can make a difference in our community. And that true passion in that belief can move mountains and make magical things happen.\n\nWhen we created our first product, FINNEGANS Irish Amber, we made the decision to donate 100 percent of the profits back to the community where it's sold to help alleviate poverty. And we knew it was going to take hard work, unwavering passion, and even a little magic along the way to make it a sustainable effort.\n\nWhat a journey it's been.\n\nFINNEGANS Irish Amber is now sold throughout Minnesota, Wisconsin, and North Dakota. Since first being profitable in 2003, we have donated over $150,000 to the FINNEGANS Community Fund, which in turn has given grants to non-profits across the Midwest to support life-changing programs for the working poor. We plan to roll out a new FINNEGANS product in 2011, and eventually have an entire line of FINNEGANS branded products"",""address"":[""619 10th St. South"",""Suite 100""]}",1,39,1
+long_valley_pub_brewery-german_valley_amber,0,0,244858748928,"{""name"":""German Valley Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_valley_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,4,1
+north_coast_brewing_company-red_seal_ale,0,0,244859797507,"{""name"":""Red Seal Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Malt and hops are beautifully married in this full-bodied, copper-red Pale Ale. Red Seal is generously hopped for a long, spicy finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,6,1
+deschutes_brewery,0,0,244629372928,"{""name"":""Deschutes Brewery"",""city"":""Bend"",""state"":""Oregon"",""code"":""97702"",""country"":""United States"",""phone"":""1-541-385-8606"",""website"":""http://www.deschutesbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Deschutes Brewery, located in Central Oregon along the banks of the wild and scenic Deschutes River, has brewed handcrafted traditional ales since 1988.  Starting out as a small brewpub in the heart of downtown Bend, Deschutes' first beers were Black Butte Porter, Bachelor Bitter and Cascade Golden Ale. In 1993, Deschutes moved into its current brewing facility and has continued expanding and improving the facilities.  With a 50-barrel traditional gravity brew house and a new one-of-a-kind 131-barrel Huppmann brew system from Germany, Deschutes now creates and experiments with specialty batches of limited beers while brewing large quantities of everyone's favorites like Mirror Pond Pale Ale.  Consistently producing the highest quality beers is always Deschutes' number one priority and commitment. The Deschutes Brewery & Public House continues brewing unique beers at our original location while serving the finest Northwest pub cuisine.  So when you find yourself in Bend, come on in and have a pint of Bachelor Bitter, the locals' favorite, or any of our other original ales brewed on-site. Deschutes Brewery's distinct ales; Black Butte Porter, Mirror Pond Pale Ale, Obsidian Stout, Inversion IPA, Bachelor ESB, Cascade Ale, Buzzsaw Brown (winter), Cinder Cone Red (spring), Twilight Ale (summer), Jubelale (fall) and other seasonal beers are available at pubs and markets in a neighborhood near you. --http://www.deschutesbrewery.com/About+Us/default.aspx"",""address"":[""901 SW Simpson Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.0474,""lon"":-121.323}}",1,54,1
+sharktooth_brewing-stout,0,0,244998209536,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sharktooth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,42,1
+crabby_larry_s_brewpub_steak_crab_house,0,0,244480606209,"{""name"":""Crabby Larry's Brewpub Steak & Crab House"",""city"":""Chalfont"",""state"":""Pennsylvania"",""code"":""18914"",""country"":""United States"",""phone"":""1-215-822-8788"",""website"":""http://www.crabbylarrys.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""237 West Butler Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.2795,""lon"":-75.2143}}",1,16,1
+hida_takayama_brewing_agricultural_company-weizen,0,0,244740128769,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hida_takayama_brewing_agricultural_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,15,1
+george_bateman_and_son_ltd,0,0,244612333568,"{""name"":""George Bateman and Son Ltd."",""city"":""Skegness"",""state"":""Lincoln"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01754)-880317"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Mill Lane""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":53.1691,""lon"":0.3169}}",1,13,1
+new_belgium_brewing-1554_enlightened_black_ale,0,0,244873560064,"{""name"":""1554 Enlightened Black Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Born of a flood and centuries-old Belgian text, 1554 Enlightened Black Ale uses a light lager yeast strain and dark chocolaty malts to redefine what dark beer can be. In 1997, a Fort Collins flood destroyed the original recipe our researcher, Phil Benstein, found in the library. So Phil and brewmaster, Peter Bouckaert, traveled to Belgium to retrieve this unique style lost to the ages. Their first challenge was deciphering antiquated script and outdated units of measurement, but trial and error (and many months of in-house sampling) culminated in 1554, a highly quaffable dark beer with a moderate body and mouthfeel."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,41,1
+stuttgarter_hofbru,0,0,245118140416,"{""name"":""Stuttgarter Hofbru"",""city"":""Stuttgart"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)711-/-6488-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Bblinger Strae 104""]}",1,47,1
+brouwerij_rodenbach,0,0,244487094272,"{""name"":""Brouwerij Rodenbach"",""city"":""Roeselare"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-051-27-28-10"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Spanjestraat 133-141""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9462,""lon"":3.1362}}",1,31,1
+g_heileman_brewing,0,0,244622950402,"{""name"":""G. Heileman Brewing"",""city"":""La Crosse"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.8014,""lon"":-91.2396}}",1,38,1
+kaiserdom_privatbrauerei_bamberg-premium_pilsener,0,0,244737638402,"{""name"":""Premium Pilsener"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kaiserdom_privatbrauerei_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+federation_brewery,0,0,244620460032,"{""name"":""Federation Brewery"",""city"":""Gateshead"",""state"":""Tyne and Wear"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0191)-4609023"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lancaster Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":54.9548,""lon"":-1.6576}}",1,33,1
+scharer_s_little_brewery,0,0,244998864896,"{""name"":""Scharer's Little Brewery"",""city"":""Picton"",""state"":""NSW"",""code"":""2571"",""country"":""Australia"",""phone"":""+61 2 4677 1415"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""180 Old Hume Hwy""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-34.1855,""lon"":150.607}}",1,44,1
+berliner_kindl_schultheiss_brauerei,0,0,244364083200,"{""name"":""Berliner-Kindl-Schultheiss-Brauerei"",""city"":""Berlin"",""state"":""Berlin"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)30-/-9609-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Indira-Ghandi-Strae 66-69""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.5234,""lon"":13.4114}}",1,19,1
+southend_brewery_and_smokehouse_charleston-ruby_red_lager,0,0,245116436481,"{""name"":""Ruby Red Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,43,1
+barley_brothers_brewery_and_grill,0,0,244363558913,"{""name"":""Barley Brothers Brewery and Grill"",""city"":""Lake Havasu City"",""state"":""Arizona"",""code"":""86403"",""country"":""United States"",""phone"":""1-928-505-7837"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1425 McCulloch Boulevard""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":34.4702,""lon"":-114.35}}",1,18,1
+hoptown_brewing,0,0,244745699328,"{""name"":""HopTown Brewing"",""city"":""Pleasanton"",""state"":""California"",""code"":""94588"",""country"":""United States"",""phone"":""1-925-426-1450"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3015-D Hopyard Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.677,""lon"":-121.898}}",1,28,1
+odell_brewing-levity_amber_ale,0,0,244859404289,"{""name"":""Levity Amber Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Levity is our lighter take on the amber ale. Munich and honey malts give it a full-bodied flavor and a happy-go-lucky personality. Then we let the finishing hops shine, for a beer that's crisp instead of bitter, as many ambers are. Levity was named by our brewers partly for its light color - and partly for the way it just refuses to take itself too seriously. Hey, we could all use a little levity once in a while."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,5,1
+san_marcos_brewery_grill-pale_ale,0,0,244981628929,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,3,1
+ettaler_klosterbetriebe_abteilung_brauerei_destillerie-curator_dunkler_doppelbock,0,0,244629897217,"{""name"":""Curator Dunkler Doppelbock"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ettaler_klosterbetriebe_abteilung_brauerei_destillerie"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,55,1
+gottberg_brew_pub-cow_palace_scotch_ale,0,0,244628848643,"{""name"":""Cow Palace Scotch Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,52,1
+fratellos_restaurant_and_brewery-foxtoberfest,0,0,244610760706,"{""name"":""Foxtoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,10,1
+brasserie_des_vosges-bete_des_vosges,0,0,244377059328,"{""name"":""Bête des Vosges"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_des_vosges"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,49,1
+city_brewing_company_llc-pale_ale,0,0,244478771201,"{""name"":""Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""city_brewing_company_llc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+bierbrouwerij_bavaria,0,0,244379746304,"{""name"":""Bierbrouwerij Bavaria"",""city"":""Lieshout"",""state"":"""",""code"":""0"",""country"":""Netherlands"",""phone"":""31-0499-428111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Burg. van den Heuvelstraat 35""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.5163,""lon"":5.5977}}",1,57,1
+rock_bottom_restaurant_brewery_san_jose-raccoon_red_ale,0,0,244980842500,"{""name"":""Raccoon Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,1,1
+crane_river_brewpub_and_cafe-red_top_rye,0,0,244498956288,"{""name"":""Red Top Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crane_river_brewpub_and_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+govnor_s_public_house-dublin_dunkelweizenbock,0,0,244611219458,"{""name"":""Dublin Dunkelweizenbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,11,1
+spoetzl_brewery-shiner_hefeweizen,0,0,245117747203,"{""name"":""Shiner Hefeweizen"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spoetzl_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,46,1
+shmaltz_brewing_company,0,0,244997423106,"{""name"":""Shmaltz Brewing Company"",""city"":""San Francisco"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.shmaltz.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.7749,""lon"":-122.419}}",1,40,1
+boundary_bay_brewery_and_bistro-doppel_bock,0,0,244371357697,"{""name"":""Doppel Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boundary_bay_brewery_and_bistro"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,34,1
+brasserie_de_l_abbaye_val_dieu-blonde,0,0,244371881984,"{""name"":""Blonde"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_l_abbaye_val_dieu"",""updated"":""2010-07-22 20:00:20"",""description"":""This authentic Abbey Ale is based on the recipe perfected centuries ago by the monks of Abbey Du Val-Dieu."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,35,1
+cat_s_paw_home_brew,0,0,244489519104,"{""name"":""Cat's Paw Home Brew"",""city"":"""",""state"":"""",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,37,1
+lagunitas_brewing_company-ipa,0,0,244737245186,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""This is our unique version of an ancient style. A style as old as the ocean trade routes of the last centuries Great Ships. Not as old as the equator they had to cross twice enroute, nor as old as the 10,000 or so miles of Di-Hydrogen Oxide and Sodium upon which they sailed, but older than the Circulithium-4 Lentloid that binds the Lupulin Quartnate onto your taste buds. Weird. Think about it. Now stop. OK, go again, now stop. Think again, and stop. But we digress. Made with 43 different hops and 65 various malts, this redolent ale will likely float your boat, whatever planet you're on. \"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+hop_back_brewery-thunder_storm,0,0,244736655361,"{""name"":""Thunder Storm"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hop_back_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,7,1
+emerson_brewing-taieri_george,0,0,244612595714,"{""name"":""Taieri George"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""emerson_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+dick_s_brewing-irish_style_ale,0,0,244631535616,"{""name"":""Irish Style Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+otto_s_pub_and_brewery-jolly_roger_imperial_stout,0,0,244858159105,"{""name"":""Jolly Roger Imperial Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,2,1
+orchard_street_brewery-pale_ale,0,0,244876705795,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orchard_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+penn_brewery-penn_pilsner,0,0,244980514816,"{""name"":""Penn Pilsner"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship brand! An amber Vienna-style lager beer that is smooth, mellow and full bodied, with delicate hop aroma. Uses two-row barley malt and caramel-roasted malt. Based on founder Tom Pastorius' favorite German bier."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,0,1
+hereford_hops_restaurant_and_brewpub_1-stump_sitter_stout,0,0,244756840449,"{""name"":""Stump Sitter Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_restaurant_and_brewpub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,56,1
+brasserie_de_brunehaut-abbaye_de_saint_martin_blonde,0,0,244377518080,"{""name"":""Abbaye de Saint-Martin Blonde"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_de_brunehaut"",""updated"":""2010-07-22 20:00:20"",""description"":""11.2oz bottle.  Slightly hazy golden color with a white head. Earthy clay, light molasses, and buttered cauliflower aromas. A crisp, frothy entry leads to a dryish medium body of figs, creamy caramel, and roasted carrot flavors. This St. Martin Blonde ale finishes with dried fruit and cashew fade.\r\nAbbye St. Martin Ales are pure Belgium."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,50,1
+dortmunder_actien_brauerei_dab,0,0,244613513216,"{""name"":""Dortmunder Actien Brauerei  DAB"",""city"":""Dortmund"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)231-/-8400-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Steigerstrae 20""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.5298,""lon"":7.4692}}",1,17,1
+flying_bison_brewing-barnstormer_pale_ale,0,0,244623409153,"{""name"":""Barnstormer Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our American Pale Ale. Made with American pale malt for a brilliant straw gold color, American hops (Cascade) for a refreshing citrusy hop character, and our signature ale yeast for a clean smooth finish. Available on draft, and seasonally in our Mixed"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,39,1
+magic_hat-braggot,0,0,244858814464,"{""name"":""Braggot"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""An Ale Brewed with Honey\r\nOur inaugural Epic Elixir, Braggot is a most remarkable honey ale, made with specialty malts & wildflower honey from Vermont's Champlain Valley. The honey adds smoothness with subtle hints of chamomile.\r\n\r\nBraggot is an ale of shining perfection that simply must be experienced to be understood. But hurry ... for Braggot, as with each entry in our Humdinger series, vanishes almost as soon as it arrives.  Get a bottle of Braggot today and come to know a new 'Ale of Legend'. \r\n\r\nWild Flower Honey, primarily Red Clover and Alfalfa from Champlain Valley Apiaries in Middlebury, Vermont. This represents 50% of the total fermentable sugars.\r\n\r\nChamomile: Whole Chamomile flowers steeped in hot wort.""}",1,4,1
+o_gara_s_bar_grill-honey_brown,0,0,244859863040,"{""name"":""Honey Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_gara_s_bar_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,6,1
+dix_barbecue_brewery-honey_brown,0,0,244629372929,"{""name"":""Honey Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dix_barbecue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+siletz_roadhouse_brewery,0,0,244998209537,"{""name"":""Siletz Roadhouse & Brewery"",""city"":""Siletz"",""state"":""Oregon"",""code"":""97380"",""country"":""United States"",""phone"":""1-541-444-2335"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""243 North Gaither Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.722,""lon"":-123.918}}",1,42,1
+cricket_hill-east_coast_lager,0,0,244480671744,"{""name"":""East Coast lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cricket_hill"",""updated"":""2010-07-22 20:00:20"",""description"":""The East Coast Lager is an easy drinking “golden” lager with a wonderful balance of crisp malt flavors and flowery hop finish. Built specifically with very low bitter aftertaste, the aroma is as clean as the taste.A difficult beer to brew because of the gentleness… this beer is magnificent!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+hoppin_frog_brewery,0,0,244740194304,"{""name"":""Hoppin Frog Brewery"",""city"":""Akron"",""state"":""Ohio"",""code"":""44306"",""country"":""United States"",""phone"":""(330) 352-4578"",""website"":""http://www.hoppinfrog.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1680-F East Waterloo Rd.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.0247,""lon"":-81.4676}}",1,15,1
+goose_island_beer_company_clybourn-night_stalker,0,0,244612333569,"{""name"":""Night Stalker"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,13,1
+new_belgium_brewing-skinny_dip,0,0,244873560065,"{""name"":""Skinny Dip"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ever tried a Skinny Dip? You wouldn't be alone. Featured by both Men's Journal and the Today Show as a favorite summer brew, this full-bodied, highly drinkable beer makes a splash every summer in our Seasonal line-up. Cascade hops frolic with a hint of lime leaf, giving the beer complexity that's surprisingly refreshing."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,41,1
+surly_brewing-bender_beer,0,0,245118140417,"{""name"":""Bender Beer"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""surly_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is an amalgamation of styles; brown/porter/apa. Five distinct malts, including two from Belgium, give this beer added complexity and depth. We also add oatmeal to this beer to give it a smooth texture not usually associated with this type of beer. We add large amounts of American finishing hops to give Bender a citrus hop aroma because... we like hops. This is a session beer weighing in around 5% alcohol and 25 IBUs. Grab one today, we think you will want another!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,47,1
+brouwerij_t_ij-zatte_amsterdamse_tripel,0,0,244487094273,"{""name"":""Zatte Amsterdamse Tripel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_t_ij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+gasthof_brauerei_zum_frohsinn-maisbier,0,0,244623015936,"{""name"":""Maisbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthof_brauerei_zum_frohsinn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+kelmer_s_brewhouse-klout,0,0,244737703936,"{""name"":""Klout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kelmer_s_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,9,1
+flensburger_brauerei,0,0,244620525568,"{""name"":""Flensburger Brauerei"",""city"":""Flensburg"",""state"":""Schleswig-Holstein"",""code"":""24937"",""country"":""Germany"",""phone"":"""",""website"":""http://www.flens.co.uk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Munketoft 12""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":54.779,""lon"":9.4355}}",1,33,1
+schofferhofer-schofferhofer_hefeweizen_hell,0,0,244998864897,"{""name"":""Schöfferhofer Hefeweizen Hell"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schofferhofer"",""updated"":""2010-07-22 20:00:20"",""description"":""classic Hefeweizen, cloud because it is traditionally unfiltered, was tested and rated by the German consumer magazin \""Ökotest\"" as \""very good\"" for pureness and residues of pesticides and so on"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,44,1
+birrificia_le_baladin-wayan,0,0,244364083201,"{""name"":""Wayan"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birrificia_le_baladin"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+southern_tier_brewing_co-raspberry_wheat,0,0,245116502016,"{""name"":""Raspberry Wheat"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A golden wheat beer brewed with the finest North American malted barley and wheat.  It's then lightly hopped with the choicest European varieties.  The smooth, crisp golden wheat beer is then finished with a hint of rasberry.  Enjoy this beer any time of the year."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,43,1
+barley_creek_brewing-cliffhanger_light_ale,0,0,244363624448,"{""name"":""Cliffhanger Light Ale"",""abv"":3.22,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""barley_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest brew, this ale has a lower alcohol content than other Barley Creek brews. The Munich malt and Saaz and Hallertau hops give it a distinct German profile. Refreshing with a clean, dry finish."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,18,1
+icobes_b_v_b_a-biere_du_boucanier,0,0,244745699329,"{""name"":""Bière du Boucanier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""icobes_b_v_b_a"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+orkney_brewery,0,0,244859469824,"{""name"":""Orkney Brewery"",""city"":""Orkney"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01856)-841802"",""website"":""http://www.orkneybrewery.co.uk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Quoyloo""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":59.0697,""lon"":-3.3135}}",1,5,1
+sand_creek_brewing_company,0,0,244981694464,"{""name"":""Sand Creek Brewing Company"",""city"":""Black River Falls"",""state"":""Wisconsin"",""code"":""54615"",""country"":""United States"",""phone"":""(715) 284-7553"",""website"":""http://www.sandcreekbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""320 Pierce St""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.2929,""lon"":-90.8511}}",1,3,1
+fitger_s_brewhouse_brewery_and_grill-1100_wheat_wine,0,0,244629962752,"{""name"":""1100 Wheat Wine"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+gottberg_brew_pub-rumble_seat_stout_discontinued,0,0,244628979712,"{""name"":""Rumble Seat Stout (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,52,1
+front_street_brewery-old_davenport_gold,0,0,244610826240,"{""name"":""Old Davenport Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""front_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+brasserie_du_bocq-blanche_des_moines,0,0,244377059329,"{""name"":""Blanche des Moines"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_du_bocq"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+coronado_brewing_company-nutter_brown,0,0,244478771202,"{""name"":""Nutter Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Medium-bodied and light brown in color. This mild ale has a sweet maltiness and roasted character. Unlike English brown ales, this brown ale has a noticeably hoppy flavor from its Willamette hops. Don’t be afraid to have a Nutter!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,12,1
+big_river_brewing-pale_ale,0,0,244379746305,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,57,1
+rogue_ales-shakespeare_stout,0,0,244980908032,"{""name"":""Shakespeare Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Stout was first introduced by Guinness in Ireland as \""Extra Stout\"" (a stronger version of their Porter). Later, the stronger Imperial and Double Stouts emerged. Sweet, Milk, and Oatmeal Stouts are English adaptations with less alcohol and less bitter then the dry Irish Stouts. Victorian England recognized Oatmeal Stouts nutritional value and it is traditionally the drink of choice for nursing mothers and athletes. It is a beer equally at home with oysters as it is with a homemade pizza and freshly tossed green salad (or as a float over ice cream).\r\n\r\nRogues Shakespeare Stout received a 99, the highest score of the 309 beers in 44 categories at the 1994 World Beer Championships. The June/July 1998 issue of Mens Journal included Rogue Ales Shakespeare Stout as one of \""The 100 Best Things to Eat in America.\""Based on Stuart Kallens book, \""The 50 Best Beers in the World\"", Shakespeare Stout was ranked the third best beer in the world and best American Beer--which makes it the Worlds Best Stout!\r\n\r\nRogues Shakespeare Stout is ebony in color, a rich creamy head and a mellow chocolate aftertaste. It is made from Northwest Harrington, Crystal, and Chocolate malts, roasted barley and rolled oats, along with Cascade hop. Shakespeare Stout is available in the classic 22-ounce bottle, a commemorative 3-litre bottle with ceramic swing-top, and on draft."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,1,1
+de_leyerth_brouwerijen-urthel_samaranth_quadrium_ale,0,0,244630814720,"{""name"":""Urthel Samaranth Quadrium Ale"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_leyerth_brouwerijen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+great_divide_brewing-espresso_oak_aged_yeti,0,0,244738359296,"{""name"":""Espresso Oak Aged Yeti"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,11,1
+steamworks-ipanema_summer_white,0,0,245117812736,"{""name"":""Ipanema Summer White"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Tall and tan and young and lovely\""\r\n\r\nOriginating in Belgium, this is a truly bilingual brew. Known as Biere Blanche in French, Witbier in Flemish and White beer in English. Unmalted wheat and oats are used in the grist to lend this brew its smooth, light body. Coriander seed and Curacao orange peel are added to the kettle to infuse this beer with a subtle, perfumey spiciness. The result is a light wheat beer with a fruity, tart finish - the essence of summer."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,46,1
+sonoran_brewing_company,0,0,245115191296,"{""name"":""Sonoran Brewing Company"",""city"":""Scottsdale"",""state"":""Arizona"",""code"":""85255"",""country"":""United States"",""phone"":""602-484-7775"",""website"":""http://www.sonoranbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10426 East Jomax Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.7268,""lon"":-111.853}}",1,40,1
+brasserie_artisanale_de_rulles-biere_de_gamme,0,0,244371357698,"{""name"":""Bière de Gamme"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_artisanale_de_rulles"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+brauerei_schwelm,0,0,244488404992,"{""name"":""Brauerei Schwelm"",""city"":""Schwelm"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)2336-/-4908-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Neumarkt 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.2847,""lon"":7.2936}}",1,35,1
+central_city_brewing_company-boomers_red_ale,0,0,244489519105,"{""name"":""Boomers Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+lakefront_brewery-rendezvous_biere_de_garde,0,0,244737245187,"{""name"":""Rendezvous Bière de Garde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+independence_brew_pub-red_ale,0,0,244736720896,"{""name"":""Red Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""independence_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+far_west_ireland_brewing,0,0,244612661248,"{""name"":""Far West Ireland Brewing"",""city"":""Redmond"",""state"":""Washington"",""code"":""98052"",""country"":""United States"",""phone"":""1-425-869-5933"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.6701,""lon"":-122.118}}",1,14,1
+dockside_brewing-old_bridge_dark_lager,0,0,244631535617,"{""name"":""Old Bridge Dark Lager"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dockside_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+otto_s_pub_and_brewery-tripel_ale,0,0,244858224640,"{""name"":""Tripel Ale"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An Abbey-style Tripel ale. This light colored traditional tripel is made with Pils malt and candisugar and fermented with a traditional yeast strain. Esterey and strong best describe this unique specialty beer."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,2,1
+otter_creek_brewing_wolaver_s_organic_ales-pale_ale,0,0,244876771328,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Pale Ale is a golden amber brew, made with Cascade hops from the Yakima Valley. Adding Cascades during conditioning captures the rich aroma of the hop, and completes the clean, well-balanced flavor of our American pale ale. Crisp, refreshing, exotically aromatic, and available all year."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+philadelphia_brewing_co,0,0,244980514817,"{""name"":""Philadelphia Brewing Co"",""city"":""Philadelphia"",""state"":""Pennsylvania"",""code"":""19125"",""country"":""United States"",""phone"":""215-427-BREW (2739)"",""website"":""http://philadelphiabrewing.com/index.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is, Philadelphia's one and only Philadelphia Brewing Company; brewers of fine hand crafted Ales from our historic brewery building in the Kensington neighborhood of Philadelphia. Like the history of brewing in Philadelphia the name Philadelphia Brewing Company has gone through many revivals. The same can be said of our brewery building - the former Wiesbrod and Hess Brewing Company complex in Kensington. At Philadelphia Brewing Co we take pride in our brews, our people, and our community. One person could never do everything that it takes to get beer into your glass. And it may sound obvious, but we won't brew anything that we wouldn't drink ourselves - you won't catch us drinking anything called Ultra unless it's a literal name meaning more flavor, more hops, more malt, more carbs. That's because we are Brewers; proud brewers of fine hand crafted Ales from our historic brewery building in the Kensington neighborhood of Philadelphia. Now that's out of the way; we will be starting out with four mainstay brews which will be available in draught and in bottles. Once we're stocked up on the core brews we'll start pumping out regular seasonal or specialty brews. The specialty series will be driven by our individual brewers and the desires and whims of the rest of our family.  The beer is flowing at Philadelphia Brewing co! You can find our four brands on tap at finer establishments all around town!"",""address"":[""2423 Amber St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9827,""lon"":-75.1275}}",1,0,1
+high_desert_brewing_co,0,0,244756840450,"{""name"":""High Desert Brewing Co."",""city"":""Las Cruces"",""state"":""New Mexico"",""code"":""88005"",""country"":""United States"",""phone"":""(575) 525-6752"",""website"":""http://www.highdesertbrewingco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""After years of recipe development, remodeling, and parking lot paving, the High Desert Brewing Co. opened it's doors in July of 1997 and has quickly become one of New Mexico's premier brewpubs. Our selection of hand crafted lagers and ales are produced on premises using the finest grains and hops. We brew small batches of about 100 gallons, ensuring that each beer is served at the peak of freshness. Our brews are available by the glass, pint, or pitcher and to-go in 1/2 gallon growlers and 5 gallon kegs. We make every attempt to keep all of our beers on tap at all times but once in a while one or two may not be available for a few days. These times are the perfect opportunity to stretch your taste and try something other than your favorite. Please let Bob or Donna, or any of the High Desert Brewing Co. staff know how you think we are doing."",""address"":[""1201 W. Hadley Ave.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.3096,""lon"":-106.793}}",1,56,1
+brasserie_de_l_abbaye_des_rocs,0,0,244377518081,"{""name"":""Brasserie De L'Abbaye Des Rocs"",""city"":""Montignies-sur-Roc"",""state"":""Hainaut"",""code"":"""",""country"":""Belgium"",""phone"":""32-065-75-59-99"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Chausse Brunehault 37""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.3705,""lon"":3.7263}}",1,50,1
+eel_river_brewing-climax_california_classic,0,0,244613513217,"{""name"":""Climax California Classic"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eel_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+flying_dog_brewery-horn_dog,0,0,244623474688,"{""name"":""Horn Dog"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""By far the biggest dog in the yard... Horn Dog Barley Wine is a dark and malty English-style Barely Wine that is aged for a minimum of three months before being packaged. Like a fine wine, this beer will only get better with age when stored at optimum conditions."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,39,1
+marin_brewing-hoppy_holidaze,0,0,244858814465,"{""name"":""Hoppy Holidaze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+o_gara_s_bar_grill,0,0,244859863041,"{""name"":""O'Gara's Bar & Grill"",""city"":""Saint Paul"",""state"":""Minnesota"",""code"":""55104"",""country"":""United States"",""phone"":""1-651-644-3333"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""146 Snelling Avenue North""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.9458,""lon"":-93.167}}",1,6,1
+dogfish_head_craft_brewery-immort_ale,0,0,244629438464,"{""name"":""Immort Ale"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+southampton_publick_house,0,0,245116108800,"{""name"":""Southampton Publick House"",""city"":""Southampton"",""state"":""New York"",""code"":""11968"",""country"":""United States"",""phone"":""1-631-283-2800"",""website"":""http://southamptonbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The word about the quality of our beer began to get around the metro New York region as soon as we turned on the spigots and started to serve it in our Southampton restaurant. Almost from day one, leading restaurants, pubs and taverns have requested our crafted brews for  their own patrons. Our Brewmaster, Phil Markowski  has personally directed the flow of our ales and lagers into the finest outlets. Our Mission is to offer a wide variety of specialty ales and lagers.  Our small batch brews range from classic farmhouse styles to traditional sessions beers to be enjoyed year-round."",""address"":[""40 Bowden Square""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.8903,""lon"":-72.3927}}",1,42,1
+dogfish_head_craft_brewery-beewolf_braggot,0,0,244613185536,"{""name"":""Beewolf Braggot"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a hybrid of ale and mead made with 51% malted barley (Pale and Munich malted barley) and 49% Orange blossom honey, it is lightly hopped, spiced with Hibiscus flowers and fermented with Australian ale yeast.\r\n\r\nOur Milton, DE microbrewery brewer Jon Talkington came up with this beer because of his love of different kinds of meads and his interest in Nordic lore and mythology.  The name Beewolf is the name Beowulf translated, meaning bear.\r\n \r\nColor- light amber.\r\nAroma- Pear like fruitiness, with a clean malt and floral honey nose.\r\nFlavor- sweet malt and honey with a subtle fruitiness and a hint of caramel.\r\nABV 7.0%\r\nIBU's 25\r\n\r\nDue to the limited availability of Beewolf Braggot, we are sorry that we are not able to offer growlers to go.""}",1,16,1
+hp_bulmer,0,0,244740194305,"{""name"":""HP Bulmer"",""city"":""Hereford"",""state"":""Hereford and Worcester"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-01432-352000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""The Cider Mills""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.2626,""lon"":-71.8023}}",1,15,1
+great_dane_pub_and_brewing_1-landmark_gold,0,0,244739211264,"{""name"":""Landmark Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+new_glarus_brewing_company-home_town_blonde,0,0,244873560066,"{""name"":""Home Town Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+swan_brewery,0,0,245118140418,"{""name"":""Swan Brewery"",""city"":""Canning Vale"",""state"":""Western Australia"",""code"":"""",""country"":""Australia"",""phone"":""61-(08)-9350-0222"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""25 Baile Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-32.0638,""lon"":115.912}}",1,47,1
+brown_street_brewery-munich_helle,0,0,244487094274,"{""name"":""Munich Helle"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brown_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+gatz_brauhaus-helles_naturtrub,0,0,244623015937,"{""name"":""Helles Naturtrub"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gatz_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+kessler_brewing,0,0,244737703937,"{""name"":""Kessler Brewing"",""city"":""Helena"",""state"":""Montana"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":46.5958,""lon"":-112.027}}",1,9,1
+flossmoor_station_brewery-station_master_wheat_ale,0,0,244620525569,"{""name"":""Station Master Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+scuttlebutt_brewing-amber_ale,0,0,244998864898,"{""name"":""Amber Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,44,1
+boston_beer_company,0,0,244364148736,"{""name"":""Boston Beer Company"",""city"":""Boston"",""state"":""Massachusetts"",""code"":""2130"",""country"":""United States"",""phone"":""1-800-372-1131"",""website"":""http://www.samueladams.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Jim Koch founded The Boston Beer Company in 1984 because he believed that Americans deserved better beer. Today, we're a team of about 350 people, and we all share a common passion for bringing great Samuel Adams beers to beer lovers everywhere. We've worked hard for the many successes we've enjoyed over the years. The Boston Beer Company has been cited as one of the best companies to work for by Boston Magazine, one of the Best Entry-Level Jobs by The Princeton Review, and our beers have won more awards than any beer in history. Jim has been named an Entrepreneur of the Year by Inc. Magazine. Our brewers keep amazing us with innovative new brews, most recently Samuel Adams Utopias and Samuel Adams Chocolate Bock."",""address"":[""30 Germania Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3144,""lon"":-71.1034}}",1,19,1
+southern_tier_brewing_co,0,0,245116502017,"{""name"":""Southern Tier Brewing Co"",""city"":""Lakewood"",""state"":""New York"",""code"":""14750"",""country"":""United States"",""phone"":""716-763-5479"",""website"":""http://www.southerntierbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Southern Tier Brewing Company was founded in 2004 by Phineas DeMink and Allen Yahn with the vision of bringing small batch brewing back to a region rich in brewing tradition. In 2003 Skip and Phin purchased the defunct Old Saddle Back Brewing Co. in Pittsfield, Massachusetts. All the equipment was removed and brought back to Lakewood, New York and set up at its new 10,000 square foot home, The Southern Tier Brewing Company. The Brewery began operations in February 2004 distributing regionally. By 2005 sales covered the majority of the New York State and the eastern half of Pennsylvania. In the beginning their two Flagship brands were a Pilsner and Mild Ale. Oh yeah they also brewed IPA! As it turned out the flagships were a flop and the IPA was a huge success. They next launched a line of seasonal beers which have gained great success. Since the beginning, Southern Tier has experienced steady growth, currently distributing to over 25% of the United States. Multiple expansions have been made to keep up with demand and the brewery continues to be innovative by producing new products.  Keep a look out for new products coming to stores near you."",""address"":[""2051A Stoneman Circle""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":42.1008,""lon"":-79.3357}}",1,43,1
+barley_s_2_smokehouse_and_brewpub,0,0,244363624449,"{""name"":""Barley's #2 Smokehouse and Brewpub"",""city"":""Columbus"",""state"":""Ohio"",""code"":""43215"",""country"":""United States"",""phone"":""1-614-485-0227"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1130 Dublin Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9745,""lon"":-83.049}}",1,18,1
+inveralmond_brewery-blackfriar,0,0,244745699330,"{""name"":""Blackfriar"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""inveralmond_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,28,1
+otto_s_pub_and_brewery-kclinger_s_brown_ale,0,0,244859469825,"{""name"":""KClinger's Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A brown ale brewed by Otto's for KClinger's Tavern in Hanover Pennsylvania."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,5,1
+santa_cruz_brewing,0,0,244981694465,"{""name"":""Santa Cruz Brewing"",""city"":""Santa Cruz"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.9741,""lon"":-122.031}}",1,3,1
+flying_dog_brewery-gonzo_imperial_porter,0,0,244629962753,"{""name"":""Gonzo Imperial Porter"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Gonzo Imperial Porter is deep and complex. This turbo charged version of the Road Dog Porter is mysteriously dark with a rich malty body, intense roasted flavors, and a surprisingly unique hop kick. With Gonzo weighing in at 7.8% ABV, it will bite you in the ass if you don't show it the proper respect."",""style"":""Porter"",""category"":""Irish Ale""}",1,55,1
+hale_s_ales_3-amber_ale,0,0,244755267584,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,52,1
+golden_valley_brewery_and_pub-geist_bock,0,0,244610826241,"{""name"":""Geist Bock"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_valley_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""This is one of our rare lagers brewed in the style of the German Heiliges Geist Bock, or Holy Ghost Bock. The name refers to the lighter nature of the beer as opposed to the darker and heavier Doppel Bock and Mai Bock also brewed during the spring in Germany. There is a rich malt flavor, a firm German style lager head, and a clean lagered finish to this beer.  Available on draft or in 12 oz. bottles."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,10,1
+brasserie_duyck,0,0,244494565376,"{""name"":""Brasserie Duyck"",""city"":""Jenlain"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.27.49.70.03"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""113, rte Nationale""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.3089,""lon"":3.6285}}",1,49,1
+courage_brewery-john_courage_amber,0,0,244478836736,"{""name"":""John Courage Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""courage_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+boulder_beer_company-obovoid_empirical_stout,0,0,244379746306,"{""name"":""Obovoid Empirical Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,57,1
+ronald_mengerink,0,0,244980908033,"{""name"":""ronald mengerink"",""city"":""baarle-hertog"",""state"":"""",""code"":""2387"",""country"":""Belgium"",""phone"":""0032 14699800"",""website"":""http://www.dedochtervandekorenaar.be"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""pastoor de katerstraat 24""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.4421,""lon"":4.9232}}",1,1,1
+denver_chophouse_and_brewery-nut_brown_ale,0,0,244630880256,"{""name"":""Nut Brown Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,58,1
+great_divide_brewing,0,0,244738359297,"{""name"":""Great Divide Brewing"",""city"":""Denver"",""state"":""Colorado"",""code"":""80205"",""country"":""United States"",""phone"":""1-303-296-9460"",""website"":""http://www.greatdivide.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Since 1994, Great Divide has brewed the most balanced yet assertive and flavorful beers possible.  This commitment has not gone unrewarded  Great Divide has racked up 12 Great American Beer Festival Medals and four World Beer Cup awards, and was recently honored as the 23rd Best Brewer in the World in Ratebeer.com's World's Top 100 Brewers, (2007). See for yourself what the excitement is about  and then introduce your friends to the new frontier of beer. --http://www.greatdivide.com"",""address"":[""2201 Arapahoe Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7539,""lon"":-104.989}}",1,11,1
+stillwater_artisanal_ales-stateside_saison,0,0,245117812737,"{""name"":""Stateside Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stillwater_artisanal_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An 'American Farmhouse Ale.' It's a Belgian-inspired brew that uses a combination of European malts, hops from New New Zealand and the United States.. and a classic farmhouse yeast to achieve a fruity, yet spicy, melange of flavors and aroma."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,46,1
+st_john_brewers-tropical_mango,0,0,245115191297,"{""name"":""Tropical Mango"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_john_brewers"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship beer that embodies the uniqueness and character of the Caribbean. Subtle malt notes start this beer off and it finishes with just the right amount of hops for balance.\r\n\r\nTropical Mango Pale Ale is a light pale ale with a mango fruit essence that is one of a kind taste. No matter where you are enjoying one it will bring you to a Caribbean state of mind."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+brasserie_des_vosges,0,0,244371423232,"{""name"":""Brasserie des Vosges"",""city"":""Dommartin les Remiremont"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.29.22.11.36"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""680 rue de la Brasserie""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":48.0028,""lon"":6.6583}}",1,34,1
+brewery_ommegang-obamagang_inauguration_ale,0,0,244488404993,"{""name"":""Obamagang Inauguration Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_ommegang"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+cigar_city_brewing,0,0,244489519106,"{""name"":""Cigar City Brewing"",""city"":""Tampa"",""state"":""Florida"",""code"":""33607"",""country"":""United States"",""phone"":""813-348-6363 ext 206"",""website"":""http://cigarcitybeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3924 West Spruce Street Suite A""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":27.9587,""lon"":-82.5093}}",1,37,1
+left_coast_brewing,0,0,244737310720,"{""name"":""Left Coast Brewing"",""city"":""San Clemente"",""state"":""California"",""code"":""92673"",""country"":""United States"",""phone"":""1-949-361-9972"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1245 Puerta del Sol""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.4577,""lon"":-117.589}}",1,8,1
+iron_city_brewing_co,0,0,244736720897,"{""name"":""Iron City Brewing Co."",""city"":""Pittsburgh"",""state"":""Pennsylvania"",""code"":""15201"",""country"":""United States"",""phone"":""412-682-7400"",""website"":""http://www.ironcitybrewingcompany.com/Default.aspx"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Iron City Brewing Company is Pittsburgh born and brewed. We've been a Pittsburgh tradition since 1861. That was the year a German immigrant by the name of Edward Frauenheim founded Iron City Brewery and began a legacy of producing quality beers and lagers in the city of Pittsburgh. Today, the new Iron City Brewing Company is poised to carry on a tradition that is synonymous with pride, innovation and the Western Pennsylvania region. The new Iron City Brewing Company is committed to its employees, its customers, and the community. We have an experienced team with deep resources that is dedicated to making Iron City Brewing Company a successful brewery that the region can be proud to call its own."",""address"":[""3340 Liberty Ave.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.461,""lon"":-79.9653}}",1,7,1
+fifty_fifty_brewing_co-base_camp_golden_ale,0,0,244612726784,"{""name"":""Base Camp Golden Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The lightest of FiftyFifty's ales, Base Camp is a thirst quenching delight. Pale straw to light gold in color, this beer has a mild malt flavor combined with light bitterness and hop flavor. This beer finishes dry and is very light and refreshing on the palate. Base Camp is a \""session beer\"", meaning you can easily toss back a few in one sitting. So go ahead, pull up a chair and camp out for awhile."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,14,1
+dogfish_head_craft_brewery-lawnmower,0,0,244631601152,"{""name"":""Lawnmower"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Lawnmower is our intro for those who need a little help jumping feet first into the crazy world that is Dogfish Head beer.\r\n\r\nIt's a starter beer, but it's not dumbed down. Lawnmower is made with quality ingredients and is a great thirst quencher - perfect to enjoy after a day in the sun mowing the lawn (or anything else that gets you hot and bothered)!\r\n\r\nDraft-Only, Limited Distribution"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+oyster_bar_bistro_and_brewery-belgian_style_wit,0,0,244858224641,"{""name"":""Belgian Style Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oyster_bar_bistro_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+otto_s_pub_and_brewery-mount_hill_pale_ale,0,0,244876771329,"{""name"":""Mount Hill Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An English pale ale brewed by Otto's for the Mount Hill Tavern in Harrisburg Pennsylvania."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,48,1
+pokka_beer_works,0,0,244980514818,"{""name"":""Pokka Beer Works"",""city"":""Nagoya"",""state"":""Chubu"",""code"":"""",""country"":""Japan"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.1814,""lon"":136.906}}",1,0,1
+high_falls_brewing-honey_brown,0,0,244756840451,"{""name"":""Honey Brown"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Brewer's Website:\r\nThe Dundee family began with Honey Brown Lager in the early 1990's during the height of the craft brewing resurgence. Introduced by then brewery head Jack \""JW\"" Wehle, Honey Brown was a full bodied lager brewed with natural honey provided by Wixon's Farm in the Finger Lakes town of Dundee, New York. The brand was an overwhelming success that defied definition as a style and grew to tremendous acclaim, garnering several medals at the World Beer Cup and the Great American Beer Festival."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+brasserie_thiriez,0,0,244495286272,"{""name"":""Brasserie Thiriez"",""city"":""Esquelbecq"",""state"":"""",""code"":"""",""country"":""France"",""phone"":""33-03.28.62.88.44"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""22 rue Wormhout""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.8851,""lon"":2.4329}}",1,50,1
+element_brewing_company-dark_element,0,0,244613513218,"{""name"":""Dark Element"",""abv"":8.75,""ibu"":65.5,""srm"":22.0,""upc"":2147483647,""type"":""beer"",""brewery_id"":""element_brewing_company"",""updated"":""2011-04-18 05:25:23"",""description"":""American Black Ale. Aromas of an American IPA, dark toffee and chocolate flavors without roasted bitterness."",""style"":""Specialty Beer"",""category"":""Other Style""}",1,17,1
+frederic_robinson_ltd-northern_glory_premium_ale,0,0,244623474689,"{""name"":""Northern Glory Premium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""frederic_robinson_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+miller_brewing-miller_lite,0,0,244858814466,"{""name"":""Miller Lite"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our flagship brand, Miller Lite, is the great tasting, less filling beer that defined the American light beer category in 1975. We deliver a clear, simple message to consumers: \""Miller Lite is the better beer choice.\"" What's our proof? \r\n1) Miller Lite is the original light beer. \r\n2) Miller Lite has real beer taste because it's never watered down. \r\n3) Miller Lite is the only beer to win four gold awards in the World Beer Cup for best American-style light lager. (2006, 2002, 1998, 1996) \r\n4) Miller Lite has half the carbs of Bud Light and fewer calories*. \""Miller Lite. Good Call.\"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,4,1
+orkney_brewery-red_macgregor,0,0,244859863042,"{""name"":""Red MacGregor"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orkney_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Red Macgregor is a unique beer: delicate and sophisticated yet the robust cask conditioned version of this beer was the first Scottish beer to win the BIIA World Cask Beer Gold Medal.\r\n\r\nOn the nose, this ruby-red beer is delicate, floral and fruity, with notes of violets, cherries, toffee and caramel. \r\n\r\nOn the palate, the fruits combine with a juicy malt character and hints of toasted malt, with a biscuit malt and spicy hop finish."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,6,1
+dragonmead_microbrewery-nagelweiss,0,0,244629504000,"{""name"":""Nagelweiss"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This German style wheat beer contains about 50% malted wheat and is balanced with Hallertau hops. This beer finishes low in gravity so the final taste is light on the palette and extremely drinkable. This is sure to be a favorite with first time and long time wheat beer drinkers."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,54,1
+southern_tier_brewing_co-hoppe_imperial_extra_pale_ale,0,0,245116174336,"{""name"":""Hoppe Imperial Extra Pale Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The simplicity of Hoppe tests the skill and ability of the brewer to create something truly majestic. We craft this much like a sculptor who uses only a hammer and chisel to shape stone into a masterpiece. Hoppe is spawned of these few essentials: barley, wheat, hops, yeast and water. This limited palette is an exercise in minimalism, with refined elements which are deliberately selected. This simple combination creates a golden shimmering brew infused with delicate aromas. The artful nature of this beer is exposed with the first taste. As the malt and hops create a composition of flavors, an elegant finish leaves an impression that your tastes will not soon forget."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,42,1
+f_x_matt_brewing-saranac_winter_wassail,0,0,244613185537,"{""name"":""Saranac Winter Wassail"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""At the heart of Saranac Winter Wassail is a classic English ale brewed with English Malt & Fuggles Hops. Look for hits of cinnamon, nutmeg, orange and allspice. Cheers to the holiday season!"",""style"":""Winter Warmer"",""category"":""Other Style""}",1,16,1
+humboldt_brewing-hemp_ale,0,0,244740259840,"{""name"":""Hemp Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+great_divide_brewing-hades,0,0,244739276800,"{""name"":""Hades"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Hades is a Belgian-style strong golden ale brewed with a rare Belgian yeast strain that gives the beer a distinctive spicy flavor and aroma. Noticeable hops and medium malt character make it an extremely well-balanced, crisp ale."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,13,1
+new_glarus_brewing_company-wisconsin_belgian_red_brand,0,0,244873560067,"{""name"":""Wisconsin Belgian Red Brand"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+thomas_creek_brewery,0,0,245118205952,"{""name"":""Thomas Creek Brewery"",""city"":""Greenville"",""state"":""South Carolina"",""code"":""29605"",""country"":""United States"",""phone"":""1-864-605-1166"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2054 Piedmont Highway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":34.7968,""lon"":-82.4245}}",1,47,1
+c_h_evans_brewing_company,0,0,244487159808,"{""name"":""C.H. Evans Brewing Company"",""city"":""Albany"",""state"":""New York"",""code"":""12207"",""country"":""United States"",""phone"":""(518) 447-9000"",""website"":""http://www.evansale.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""19 Quackenbush Square""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.6542,""lon"":-73.7481}}",1,31,1
+gold_crown_brewing,0,0,244623081472,"{""name"":""Gold Crown Brewing"",""city"":""Waterloo"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-519-886-2071"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""71 King Street North""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.4676,""lon"":-80.5231}}",1,38,1
+krogh_s_restaurant_and_brewpub-brogen_meadow_pale_ale,0,0,244737703938,"{""name"":""Brogen Meadow Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+flying_dog_brewery-raging_bitch_belgian_ipa,0,0,244620525570,"{""name"":""Raging Bitch Belgian IPA"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""“Two inflammatory words... one wild drink. Nectar imprisoned in a bottle. Let it out. It is cruel to keep a wild animal locked up. Uncap it. Release it....stand back!! Wallow in its golden glow in a glass beneath a white foaming head. Remember, enjoying a RAGING BITCH, unleashed, untamed, unbridled- and in heat- is pure GONZO!! It has taken 20 years to get from there to here. Enjoy!”"",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,33,1
+shepherd_neame-master_brew_bitter,0,0,244998930432,"{""name"":""Master Brew Bitter"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shepherd_neame"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+boulder_beer_company-planet_porter_boulder_porter,0,0,244364214272,"{""name"":""Planet Porter / Boulder Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulder_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,19,1
+spanish_peaks_brewing-winter_cheer,0,0,245116567552,"{""name"":""Winter Cheer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spanish_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,43,1
+barley_s_brewing_1,0,0,244363624450,"{""name"":""Barley's Brewing #1"",""city"":""Columbus"",""state"":""Ohio"",""code"":""43215"",""country"":""United States"",""phone"":""1-614-228-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""467 North High Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9719,""lon"":-83.0027}}",1,18,1
+iron_hill_brewery_newark,0,0,244745764864,"{""name"":""Iron Hill Brewery - Newark"",""city"":""Newark"",""state"":""Delaware"",""code"":""19711"",""country"":""United States"",""phone"":""1-302-266-9000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""147 East Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.6834,""lon"":-75.7467}}",1,28,1
+pacific_rim_brewing-castaway_barley_wine_winter_ale,0,0,244982153216,"{""name"":""Castaway Barley Wine Winter Ale"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+schloss_eggenberg,0,0,244981760000,"{""name"":""Schloss Eggenberg"",""city"":""Vorchdorf"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0-76-14/63-45-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Eggenberg 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.9904,""lon"":13.9238}}",1,3,1
+folx_les_caves,0,0,244629962754,"{""name"":""Folx-les-Caves"",""city"":""Jauche"",""state"":""Brabant Wallon"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""B-1350 Jauche""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.6818,""lon"":4.9547}}",1,55,1
+hannen_brauerei-hannen_alt,0,0,244755333120,"{""name"":""Hannen Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hannen_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""Classic German Alt"",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,52,1
+gordon_biersch_brewing-schwarzbier,0,0,244610891776,"{""name"":""Schwarzbier"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,10,1
+brasserie_la_binchoise-blonde_tradition,0,0,244494565377,"{""name"":""Blonde Tradition"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_binchoise"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+de_leyerth_brouwerijen-urthel_vlaemse_bock,0,0,244611350528,"{""name"":""Urthel Vlaemse Bock"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_leyerth_brouwerijen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,12,1
+boulevard_brewing_company-double_wide_i_p_a,0,0,244379746307,"{""name"":""Double Wide I.P.A."",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""boulevard_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Double-Wide I.P.A. uses Zeus and Magnum hops for both bittering and aroma, with Ahtanum hops added solely for aroma. Two additional dry hopping regimens employ Ahtanum, Centennial, and Chinook varietals. The resulting beer – not surprisingly – has a hop forward aroma, redolent of peach and apricot. The assertive flavor bursts forth with citrus notes of blood orange and lemon, a caramel malt backbone serves to balance the intensity of the hops. There is little restraint in the flavor of this beer; it is certainly not for the pedestrian palate."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,57,1
+sacramento_brewing_company-abbey_extra,0,0,244980908034,"{""name"":""Abbey Extra"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sacramento_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,1,1
+dragonmead_microbrewery-willy_s_oompa_loompa,0,0,244630945792,"{""name"":""Willy's Oompa-Loompa"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dragonmead_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Little more can be said about this beer than these two words: Chocolate and Stout. This brew fills the palate with slightly sweet, super chocolate, malty flavor.""}",1,58,1
+gulpener_bierbrouwerij-mestreechs_aajt,0,0,244738424832,"{""name"":""Mestreechs Aajt"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gulpener_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+terrapin_beer_company-rye_squared,0,0,245117812738,"{""name"":""Rye Squared"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Double the malt, double the hops, and double the flavor of the original Rye Pale Ale recipe. (Hence the name Rye Squared.) With its mammoth hop aroma, bitterness and flavor, this beer is not for the faint at heart. The Rye Squared clocks in at a hefty 9.5% ABV so double your pleasure and double your fun because Terrapin went a little crazy with this one!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,46,1
+st_peter_s_brewery,0,0,245115256832,"{""name"":""St Peter's Brewery"",""city"":""Bungay"",""state"":""Suffolk"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01986)-782322"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""St Peter's Hall""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.7282,""lon"":-76.5836}}",1,40,1
+brasserie_ellezelloise-hercule_stout,0,0,244488011776,"{""name"":""Hercule Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_ellezelloise"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,34,1
+broad_ripple_brewing-lawnmower_pale_ale,0,0,244488470528,"{""name"":""Lawnmower Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""broad_ripple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+columbus_brewing_company-summer_teeth,0,0,244489584640,"{""name"":""Summer Teeth"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""columbus_brewing_company"",""updated"":""2011-03-08 12:22:14"",""description"":""This traditional Bavarian-style kellerbier originated from the small artisanal breweries of Franconia, where it is still a favorite in the local beer gardens.  Ours is served unfiltered with a crisp, smooth finish that taste like sunshine. "",""style"":""Kellerbier - Ale"",""category"":""German Ale""}",1,37,1
+live_oak_brewing-live_oak_pilz,0,0,244860518400,"{""name"":""Live Oak Pilz"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""live_oak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Crisp, clean, and refreshing, this pilsner is styled after the original Bohemian classic from the town of Pizen, Czech Republic, Pilz is a golden-colored brew that balances a pleasant hoppiness with its smooth malt flavor. It finishes dry with a moderate bitterness that is a hallmark of the style."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,8,1
+jacob_leinenkugel_brewing_company-original,0,0,244736720898,"{""name"":""Original"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,7,1
+gottberg_brew_pub-steinworthy_oktoberfest,0,0,244612726785,"{""name"":""Steinworthy Oktoberfest"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,14,1
+egan_brewing-irish_stout,0,0,244631601153,"{""name"":""Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+oyster_bar_bistro_and_brewery,0,0,244858224642,"{""name"":""Oyster Bar Bistro and Brewery"",""city"":""Fort Wayne"",""state"":""Indiana"",""code"":""46825"",""country"":""United States"",""phone"":""1-260-490-6755"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.1475,""lon"":-85.1168}}",1,2,1
+paulaner-original_munich_premium_lager,0,0,245000306688,"{""name"":""Original Munich Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+pumphouse_brewery_restaurant-four_alarm_alt,0,0,244980514819,"{""name"":""Four Alarm Alt"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pumphouse_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,0,1
+hirschbru_privatbrauerei_hss-doppel_hirsch_bavarian_doppelbock,0,0,244756905984,"{""name"":""Doppel-Hirsch Bavarian-Doppelbock"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hirschbru_privatbrauerei_hss"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,56,1
+brauerei_fssla-weizla_hell,0,0,244495351808,"{""name"":""Weizla Hell"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_fssla"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,50,1
+ellicott_mills_brewing-alpenhof_baltic_porter,0,0,244613578752,"{""name"":""Alpenhof Baltic Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ellicott_mills_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,17,1
+fuller_smith_turner_pbc-refreshing_summer_ale,0,0,244623474690,"{""name"":""Refreshing Summer Ale"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+minocqua_brewing_company-nut_brown_ale,0,0,244858880000,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Perhaps the most ancient style of beer, our brown ale is robust with a hint of nut flavor. With definable malt characteristics, this dark ale is sure to please any beer enthusiast’s palate."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,4,1
+ostankinskij_pivovarennij_zavod,0,0,244859928576,"{""name"":""Ostankinskij Pivovarennij Zavod"",""city"":""Moskva"",""state"":""Moskva"",""code"":"""",""country"":""Russia"",""phone"":""7-(095)-979-32-36"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ogorodnyj Pr. 20""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":55.7558,""lon"":37.6176}}",1,6,1
+egan_brewing-the_lonely_guy_india_pale_ale,0,0,244629504001,"{""name"":""The Lonely Guy India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,54,1
+sprecher_brewing-sprecher_doppelbock,0,0,245116174337,"{""name"":""Sprecher Doppelbock"",""abv"":7.85,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark lager was originally brewed as liquid bread to sustain Bavarian monks while fasting. Its sweet complex malt character comes from brewing with many varieties of dark roasted caramel malts and long periods of cold storage (6 months)."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,42,1
+faultline_brewing_1-pale_ale,0,0,244613251072,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+humboldt_brewing-red_nectar,0,0,244740259841,"{""name"":""Red Nectar"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,15,1
+great_waters_brewing_company-honey_wheat,0,0,244739276801,"{""name"":""Honey Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+niagara_falls_brewing-kriek,0,0,244873625600,"{""name"":""Kriek"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,41,1
+thunderhead_brewery-amber_ale,0,0,245118205953,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,47,1
+capital_brewery-capital_brown_ale,0,0,244487159809,"{""name"":""Capital Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,31,1
+goose_island_beer_company_clybourn-hex_nut_brown_ale,0,0,244623081473,"{""name"":""Hex Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,38,1
+kulmbacher_brauerei_ag-kapuziner_schwarz_weizen,0,0,244737703939,"{""name"":""Kapuziner Schwarz-Weizen"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+foster_s_australia_ltd-foster_s_premium_ale,0,0,244620591104,"{""name"":""Foster's Premium Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""foster_s_australia_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,33,1
+sherlock_s_home,0,0,244998930433,"{""name"":""Sherlock's Home"",""city"":""Minnetonka"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.9133,""lon"":-93.5033}}",1,44,1
+brasserie_dupont-foret_saison,0,0,244364214273,"{""name"":""Foret Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dupont"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-classic_pale_ale,0,0,245116567553,"{""name"":""Classic Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,43,1
+beck_s,0,0,244363689984,"{""name"":""Beck's"",""city"":"""",""state"":"""",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":""http://www.becks.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,18,1
+jacob_leinenkugel_brewing_company-leinenkugel_s_honey_weiss,0,0,244745764865,"{""name"":""Leinenkugel's Honey Weiss"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Select Pale and Wheat Malt, Cluster hops and a hint of Wisconsin honey give this unique refresher a clean, crisp, slightly sweet taste."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+pike_pub_and_brewery-kilt_lifter_scotch_ale,0,0,244982218752,"{""name"":""Kilt Lifter Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,5,1
+shaftebury_brewing,0,0,244981760001,"{""name"":""Shaftebury Brewing"",""city"":""Delta"",""state"":""British Columbia"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":49.1487,""lon"":-122.912}}",1,3,1
+front_street_brewery-bucktown_stout,0,0,244630028288,"{""name"":""Bucktown Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""front_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,55,1
+harbor_city_brewing-full_tilt_ipa,0,0,244755398656,"{""name"":""Full Tilt IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harbor_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,52,1
+gray_brewing-classic_american_pale_ale,0,0,244737900544,"{""name"":""Classic American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+brasserie_la_choulette-blonde,0,0,244494630912,"{""name"":""Blonde"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_choulette"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+de_struise_brouwers-witte,0,0,244611416064,"{""name"":""Witte"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_struise_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+brasserie_dupont-moinette_brune,0,0,244498169856,"{""name"":""Moinette Brune"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_dupont"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+santa_cruz_brewing-pacific_porter,0,0,244980908035,"{""name"":""Pacific Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_cruz_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,1,1
+egan_brewing-cow_palace_scotch_ale_1998,0,0,244630945793,"{""name"":""Cow Palace Scotch Ale 1998"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,58,1
+half_acre_beer_company,0,0,244738490368,"{""name"":""Half Acre Beer Company"",""city"":""Chicago"",""state"":""IL"",""code"":""60618"",""country"":""United States"",""phone"":"""",""website"":""http://inyourguts.blogspot.com/"",""type"":""brewery"",""updated"":""2010-11-14 11:17:07"",""description"":"""",""address"":[""4257 North Lincoln Avenue""]}",1,11,1
+terrapin_beer_company-terrapin_monk_s_revenge,0,0,245117878272,"{""name"":""Terrapin Monk's Revenge"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian IPA has a malt bill of a Belgian Tripel and a hop bill of a Double IPA. The yeast I chose for this beer comes from one of the 7 Trappist breweries.\r\n\r\nBelieve it or not, this is the first time in my professional brewing career that I have used dextrose (corn syrup) in a Terrapin brew. True to style no doubt.\r\n\r\n“Monk’s Revenge” (otherwise known as the “Big Nasty”) has all the flavor and aroma of a Double IPA while hidden beneath lies the malt character of a fine Belgian Tripel.\r\n\r\nI hope you enjoy my interpretation of this very fun style."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,46,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-bull_town_brown,0,0,245115256833,"{""name"":""Bull Town Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,40,1
+brewery_at_martha_s_vineyard,0,0,244488077312,"{""name"":""Brewery at Martha's Vineyard"",""city"":""Oak Bluffs"",""state"":""Massachusetts"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.4548,""lon"":-70.565}}",1,34,1
+brouwerij_de_ranke,0,0,244488470529,"{""name"":""Brouwerij De Ranke"",""city"":""Wevelgem"",""state"":""West-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-056-41-82-41"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brugsstraat 43""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8105,""lon"":3.1857}}",1,35,1
+copper_eagle_brewing-red_rooster_pale_ale,0,0,244489584641,"{""name"":""Red Rooster Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_eagle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+malt_shovel_brewery,0,0,244860518401,"{""name"":""Malt Shovel Brewery"",""city"":""Camperdown"",""state"":""New South Wales"",""code"":"""",""country"":""Australia"",""phone"":""61-(02)-9519-3579"",""website"":""http://www.maltshovel.com.au/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""99 Pyrmont Bridge Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":-33.8867,""lon"":151.174}}",1,8,1
+kelmer_s_brewhouse,0,0,244736786432,"{""name"":""Kelmer's Brewhouse"",""city"":""Santa Rosa"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.4405,""lon"":-122.714}}",1,7,1
+govnor_s_public_house,0,0,244739604480,"{""name"":""Govnor's Public House"",""city"":""Lake In The Hills"",""state"":""Illinois"",""code"":""60156"",""country"":""United States"",""phone"":""1-847-658-4700"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""220 North Randall Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1779,""lon"":-88.3377}}",1,14,1
+elk_creek_cafe_and_aleworks-great_blue_heron_pale_ale,0,0,244631601154,"{""name"":""Great Blue Heron Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_creek_cafe_and_aleworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Much like the local icon it is named for, our version of American Pale Ale has a bold character. We add a healthy dose of hops in both the kettle and the finishing tank."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+pacific_coast_brewing-holiday_scottish_strong_ale,0,0,244981039104,"{""name"":""Holiday Scottish Strong Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,2,1
+paulaner-salvator,0,0,245000372224,"{""name"":""Salvator"",""abv"":7.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":""Paulaner Salvator, with its strong, typically malty flavour, is what you could call the \""original\"" Paulaner. The bottom-fermented \""Doppelbock\"" beer combines the finest hops and dark barley malt. The Paulaner monks used to drink Salvator as a food substitute during Lent. The most famous master brewer was Frater Barnabas, who took over the Paulaner monastery brewery in 1773. His original recipe remains practically unchanged to this day. In order to preserve the original, Paulaner registered the name \""Salvator\"" with the patent office in 1896.\r\n\r\nSalvator:\r\n18.3% original wort; 7.9% alcohol; 70.6 kcal/100 ml"",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,48,1
+rahr_sons_brewing_company-ugly_pug,0,0,244980580352,"{""name"":""Ugly Pug"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Ugly Pug is a schwarzbier, or black lager. But the real story is its name. Fritz saw his mother-in-law’s pug, Oscar, lounging in a chair and he (Fritz) shouted, “What an ugly pug!” Everyone laughed. Your’re right – they were drinking a test batch that night."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,0,1
+hoptown_brewing-golden_ale,0,0,244756905985,"{""name"":""Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoptown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+brauhaus_johann_albrecht_dsseldorf-messing,0,0,244495482880,"{""name"":""Messing"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_johann_albrecht_dsseldorf"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+elliott_bay_brewery_and_pub-ipa,0,0,244613578753,"{""name"":""IPA"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elliott_bay_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+gordon_biersch_brewing-maibock,0,0,244623540224,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,39,1
+molson_breweries_of_canada-full_moon_winter_ale,0,0,244858880001,"{""name"":""Full Moon Winter Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":""This full-bodied ale is brewed with roasted malts and a hint of Dark Belgian sugar for a perfectly balanced taste."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,4,1
+pacific_beach_brewhouse,0,0,244859928577,"{""name"":""Pacific Beach Brewhouse"",""city"":""Pacific Beach"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.7978,""lon"":-117.24}}",1,6,1
+emery_pub-porter,0,0,244629569536,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""emery_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,54,1
+staatliches_hofbrauhaus_in_munchen-munchner_kindl_weissbier_munchner_weisse,0,0,245116239872,"{""name"":""Münchner Kindl Weissbier / Münchner Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""staatliches_hofbrauhaus_in_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,42,1
+firehouse_brewing-brown_cow_ale,0,0,244613251073,"{""name"":""Brown Cow Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,16,1
+independence_brew_pub-ipa,0,0,244740259842,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""independence_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+green_flash_brewing-le_freak_belgian_style_ipa,0,0,244739342336,"{""name"":""Le Freak Belgian Style IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_flash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Extreme ale converging San Diego-style imperial pale ale and Belgian-style trippel."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,13,1
+nor_wester_brewery_and_public_house,0,0,244873625601,"{""name"":""Nor'Wester Brewery and Public House"",""city"":""Portland"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.5235,""lon"":-122.676}}",1,41,1
+thunderhead_brewery-eigenberg_smoked_porter,0,0,245118271488,"{""name"":""Eigenberg Smoked Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+capital_brewery-capital_island_wheat,0,0,244487225344,"{""name"":""Capital Island Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,31,1
+govnor_s_public_house-fomharfest,0,0,244623147008,"{""name"":""Fomharfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,38,1
+lakefront_brewery-white,0,0,244737769472,"{""name"":""White"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+fox_river_brewing_1-caber_tossing_scottish_ale,0,0,244620591105,"{""name"":""Caber Tossing Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+sierra_nevada_brewing_co-bigfoot_2000,0,0,244998930434,"{""name"":""Bigfoot 2000"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+brasserie_fantme-strange_ghost,0,0,244481458176,"{""name"":""Strange Ghost"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_fantme"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-honey_wheat,0,0,245116567554,"{""name"":""Honey Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,43,1
+big_ridge_brewing-clover_pale_ale,0,0,244363689985,"{""name"":""Clover Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""big_ridge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+jennings_brewery,0,0,244745764866,"{""name"":""Jennings Brewery"",""city"":""Cockermouth"",""state"":""Cumbria"",""code"":""CA13 9NE"",""country"":""United Kingdom"",""phone"":""0845 1297185"",""website"":""http://www.jenningsbrewery.co.uk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Castle Brewery""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":54.6649,""lon"":-3.3634}}",1,28,1
+pivara_skopje-skopsko,0,0,244982284288,"{""name"":""Skopsko"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivara_skopje"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+silverado_brewing-impale_ale,0,0,244981825536,"{""name"":""Impale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""silverado_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,3,1
+gilde_brauerei,0,0,244630028289,"{""name"":""Gilde Brauerei"",""city"":""Hannover"",""state"":""Niedersachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)511-/-9808-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hildesheimer Strae 132""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":52.3544,""lon"":9.7532}}",1,55,1
+harpoon_brewery_windsor,0,0,244755398657,"{""name"":""Harpoon Brewery - Windsor"",""city"":""Windsor"",""state"":""Vermont"",""code"":""5089"",""country"":""United States"",""phone"":""1-802-674-5491"",""website"":""http://www.harpoonbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We started the Harpoon Brewery in 1986 because, like today, we loved beer and wanted more good choices.  While traveling in Europe after college, we drank many wonderfully diverse, fresh, local beers.  We also saw firsthand how important local breweries were to their communities.  After our travels, we asked each other, why not bring great beer and that sense of community to New England?  That was the genesis of the Harpoon Brewery.  Twenty years later we still revel in making great beer and sharing that joy with our friends and neighbors.  The success that we have had running Harpoon is due entirely to the wonderful employees who brew, package, warehouse, sell, deliver, and market our beer and you, the people who drink Harpoon.  We hope that our sense of gratitude is reflected in both the quality of the beer and the spirit of fun and enjoyment surrounding our beer and breweries."",""address"":[""336 Ruth Carney Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.513,""lon"":-72.4015}}",1,52,1
+half_moon_bay_brewing-sandy_beach_blonde_hefeweizen,0,0,244737966080,"{""name"":""Sandy Beach Blonde Hefeweizen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,10,1
+brasserie_la_choulette-les_sans_culottes,0,0,244494827520,"{""name"":""Les Sans Culottes"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_choulette"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+delafield_brewhaus-hopfenstange_pils,0,0,244611416065,"{""name"":""Hopfenstange Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+brew_makers,0,0,244498169857,"{""name"":""Brew Makers"",""city"":""Mountain View"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.3861,""lon"":-122.084}}",1,57,1
+schlobrauerei_reckendorf-dunkel,0,0,244980908036,"{""name"":""Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlobrauerei_reckendorf"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+empyrean_brewing_company-chaco_canyon_honey_gold,0,0,244630945794,"{""name"":""Chaco Canyon Honey Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+half_pints_brewing_company,0,0,244738490369,"{""name"":""Half Pints Brewing Company"",""city"":""Winnipeg"",""state"":""Manitoba"",""code"":"""",""country"":""Canada"",""phone"":"""",""website"":""http://www.halfpintsbrewing.com"",""type"":""brewery"",""updated"":""2010-12-13 19:30:01"",""description"":"""",""address"":[""550 Roseberry Street""]}",1,11,1
+the_church_brew_works-millennium_trippel,0,0,245117878273,"{""name"":""Millennium Trippel"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian Trippel is a very special type of beer. A Belgian Trippel could be called the beer version of a Champagne. It is very light in color and highly carbonated giving an appearance similar to Champagne. The flavor is somewhat sweet and malty as well as strong."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,46,1
+stieglbrauerei_zu_salzburg_gmbh,0,0,245115322368,"{""name"":""Stieglbrauerei zu Salzburg GmbH"",""city"":""Salzburg"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0-662-/-83-87-0"",""website"":""http://www.stieglbrauerei.at/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kendlerstraße 1""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.8005,""lon"":13.0444}}",1,40,1
+brewmasters_restaurant_and_brewery_south-olde_st_nick,0,0,244488142848,"{""name"":""Olde St.Nick"",""abv"":9.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewmasters_restaurant_and_brewery_south"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+brouwerij_girardin-gueuze_1882,0,0,244488470530,"{""name"":""Gueuze 1882"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_girardin"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,35,1
+copper_kettle_brewery-eislin_dubbel,0,0,244489584642,"{""name"":""Eislin Dubbel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""copper_kettle_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Dubbel is a nice brown creamy sweet, malty and strong ale. It is a traditional Belgian dubbel ale with a secondary fermentation. This complex ale has many flavor characteristics. At 8% abv you will notice a slight alcohol warmth at the finish ."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,37,1
+mccashin_s_brewery_malthouse,0,0,244860518402,"{""name"":""McCashin's Brewery & Malthouse"",""city"":""Nelson"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":""64-(03)-547-0526"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""660 Main Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.1989,""lon"":-98.0673}}",1,8,1
+klosterbrauerei_neuzelle-original_badebier_original_bathbeer_monastery_fun,0,0,244736786433,"{""name"":""Original Badebier / Original Bathbeer Monastery Fun"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_neuzelle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,7,1
+gray_brewing-autumn_ale,0,0,244739670016,"{""name"":""Autumn Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,14,1
+erie_brewing_company-presque_isle_pilsner,0,0,244631666688,"{""name"":""Presque Isle Pilsner"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Presque Isle and the bay it creates have played many significant roles in the history of Erie and our young nation. The US Government chose this location to build a fleet of ships during the war of 1812 because it formed the only protected harbor on Lake Erie. In 1813, during the battle of Lake Erie, Commodore Oliver Hazard Perry successfully defended Lake Erie against the British with ships that were built on Presque Isle Bay, making a significant mark on the pages of history. Presque Isle Pilsner, a tribute to history is a hand crafted pilsner that is \""A noble beer for Noble People.\"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,59,1
+pacific_rim_brewing,0,0,244981039105,"{""name"":""Pacific Rim Brewing"",""city"":""Seattle"",""state"":""Washington"",""code"":""98106"",""country"":""United States"",""phone"":""1-206-764-3844"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9832 14th Avenue SW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.5143,""lon"":-122.353}}",1,2,1
+pennichuck_brewing_company-fireman_s_pail_ale,0,0,245000372225,"{""name"":""Fireman's Pail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+rail_house_restaurant_and_brewpub-red,0,0,244980580353,"{""name"":""Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,0,1
+kalamazoo_brewing-two_hearted_ale,0,0,244756905986,"{""name"":""Two-Hearted Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kalamazoo_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,56,1
+brewer_s_art,0,0,244495482881,"{""name"":""Brewer's Art"",""city"":""Baltimore"",""state"":""Maryland"",""code"":""21201"",""country"":""United States"",""phone"":""410-547-6925"",""website"":""http://www.belgianbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Set in a grand Mt. Vernon townhouse, The Brewer's Art offers many temptations for your palate. Our seasonally-influenced menu of European-style country fare features meats, fish, seafood, pasta, and vegetarian offerings.  Dinner is served daily between 5:30pm - 9:00pm (later on Thursdays, Fridays and Saturdays) and light fare is available from 4:00pm - 11:00pm. Our creative pastry chef prepares our homemade desserts. In addition to brewing our fine beers on the premises, we offer a carefully picked selection of beers and fine wines from around the world, and one of Baltimore's best selections of scotches and spirits."",""address"":[""1106 N. Charles St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.3028,""lon"":-76.6164}}",1,50,1
+elm_city_brewing_co-elm_city_schwarzbier,0,0,244613578754,"{""name"":""Elm City Schwarzbier"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elm_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,17,1
+gottberg_brew_pub-1916_irish_stout,0,0,244623540225,"{""name"":""1916 Irish Stout"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,39,1
+mordue_brewery,0,0,244858945536,"{""name"":""Mordue Brewery"",""city"":""Wallsend"",""state"":""Tyne and Wear"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0191)-2961879"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""21A Oak Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":55.0167,""lon"":-1.4925}}",1,4,1
+penn_brewery-penndemonium,0,0,244982611968,"{""name"":""PENNdemonium"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Introduced on May 1, 2007. Available May and June. Distributed throughout our network of wholesalers in draft and 22 oz. bottles."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,6,1
+english_ales_brewery-ironside_best,0,0,244629569537,"{""name"":""Ironside Best"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""english_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-rhubarb,0,0,245116239873,"{""name"":""Rhubarb"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,42,1
+founders_brewing,0,0,244613251074,"{""name"":""Founders Brewing"",""city"":""Grand Rapids"",""state"":""Michigan"",""code"":""49503"",""country"":""United States"",""phone"":""1-616-776-1195"",""website"":""http://www.foundersbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Founders Brewing Company, founded by Mike Stevens and Dave Engbers produced its first beer in November of 1997. Built out of a dream and a passion for home brewing, what started out as a hobby quickly became a thriving business.  As the years have passed, Founders has built its brewery on the exploration of recipe development and brewing techniques. We are not the standard micro-brewery, rather we have traveled a path that breaks from the standard craft-brewer. Carving a niche out of the craft industry, Founders Brewing Company has built its reputation on producing very unique beers. Our focus is to offer our wholesalers, retailers and consumers a product that stands alone on the shelf and offers a true drinking experience to our friends, the consumer.  As the years have passed, Founders has built its brewery on the exploration of recipe development and brewing techniques. We are not the standard micro-brewery, rather we have traveled a path that breaks from the standard craft-brewer. Carving a niche out of the craft industry, Founders Brewing Company has built its reputation on producing very unique beers. Our focus is to offer our wholesalers, retailers and consumers a product that stands alone on the shelf and offers a true drinking experience to our friends, the consumer."",""address"":[""235 Grandville Avenue SW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.9585,""lon"":-85.6735}}",1,16,1
+industrias_la_constancia_ilc,0,0,244740259843,"{""name"":""Industrias La Constancia ILC"",""city"":""San Salvador"",""state"":"""",""code"":"""",""country"":""El Salvador"",""phone"":""503-231-5444"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Avenida Independencia No.526""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":13.6998,""lon"":-89.1832}}",1,15,1
+green_mountain_beverage-woodchuck_amber_draft_cider,0,0,244739342337,"{""name"":""Woodchuck Amber Draft Cider"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mountain_beverage"",""updated"":""2010-07-22 20:00:20"",""description"":""Woodchuck Amber is the original Woodchuck Cider. It's made from a blend of apples and fermented with champagne yeast to produce a great tasting and refreshing alcoholic drink. It's available in 6-packs and 12-packs, as well as on draft."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,13,1
+onion_pub_brewery-pale_ale,0,0,244873625602,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""onion_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+thunderhead_brewery-honey_lager,0,0,245118271489,"{""name"":""Honey Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+carlsberg_bryggerierne,0,0,244487225345,"{""name"":""Carlsberg Bryggerierne"",""city"":""Kbenhavn"",""state"":"""",""code"":"""",""country"":""Denmark"",""phone"":""45-33-27-33-27"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Vesterflledvej 100""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":55.6667,""lon"":12.5393}}",1,31,1
+gray_brewing-classic_oatmeal_stout,0,0,244749238272,"{""name"":""Classic Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+lazy_magnolia_brewing_company,0,0,244737769473,"{""name"":""Lazy Magnolia Brewing Company"",""city"":""Kiln"",""state"":""Mississippi"",""code"":""39556"",""country"":""United States"",""phone"":""(228) 467-2727"",""website"":""http://www.lazymagnolia.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7030 Roscoe Turner Rd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":30.3764,""lon"":-89.4497}}",1,9,1
+fuller_smith_turner_pbc-vintage_ale_2008,0,0,244620656640,"{""name"":""Vintage Ale 2008"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":""I have crafted this very special ale from the finest Challenger and Northdown hops, Maris Otter malted barley, and of course, our unique yeast, to create a truly extraordinary limited edition brew.\r\n\r\nIndividually packed and numbered, this bottle is one of only one hundred and forty-five thousand produced."",""style"":""Old Ale"",""category"":""British Ale""}",1,33,1
+sly_fox_brewhouse_and_eatery_royersford-burns_scottish_ale,0,0,245116895232,"{""name"":""Burns Scottish Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+brasserie_la_binchoise-bruin_tradition_brune_tradition,0,0,244481523712,"{""name"":""Bruin Tradition / Brune Tradition"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_la_binchoise"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+stieglbrauerei_zu_salzburg_gmbh-weizengold_dunkel,0,0,245116633088,"{""name"":""Weizengold Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""Stiegl Weizengold. It has 12o original gravity; the choicest ingredients and a top fermentation process are responsible for the highest possible quality and an unmistakable flavor. It is brewed according to the classic wheat beer recipe: 60 % wheat malt and 40 % barley malt, top fermentation and in compliance with the Purity Law of 1516.  This dark wheat beer specialty is a natural and spicy beer brand.""}",1,43,1
+birra_moretti-la_rossa,0,0,244363689986,"{""name"":""La Rossa"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""birra_moretti"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,18,1
+keesmann_bru-bamberger_herren_pils,0,0,244745764867,"{""name"":""Bamberger Herren Pils"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keesmann_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+prairie_rock_brewing_elgin-vanilla_creme_ale,0,0,244982349824,"{""name"":""Vanilla Creme Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prairie_rock_brewing_elgin"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+slottskllans_bryggeri,0,0,245098676224,"{""name"":""Slottskllans Bryggeri"",""city"":""Uppsala"",""state"":"""",""code"":"""",""country"":""Sweden"",""phone"":""46-018-15-58-00"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Mrstagatan 10-12""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":59.8544,""lon"":17.6627}}",1,3,1
+goose_island_beer_company_clybourn-goose_island_midway_ipa,0,0,244630028290,"{""name"":""Goose Island Midway IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,55,1
+hochstiftliches_brauhaus_in_bayern-will_brau_ur_bock,0,0,244755398658,"{""name"":""Will-Bräu Ur-Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hochstiftliches_brauhaus_in_bayern"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,52,1
+harpoon_brewery_boston-glacier_harvest_09_wet_hop_100_barrel_series_28,0,0,244738031616,"{""name"":""Glacier Harvest '09 Wet Hop (100 Barrel Series #28)"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""For the 28th session of the Harpoon 100 Barrel Series, we’re celebrating this year’s hop harvest with Glacier Harvest Wet Hop beer, a pale ale made with fresh Glacier hops.\r\n \r\nWet hop beers are brewed using fresh, “wet” hops instead of traditional dried hops—hops contain about 60% moisture when they are first picked.\r\n\r\nTypically, when hops are picked they are quickly dried and refrigerated to increase shelf life and make them more consistent for brewing. Freshly picked wet hops, however, need to be used within hours of harvest or they will begin to degrade rapidly. Wet hops retain more of their natural aroma and volatile flavors that dissipate when dried. This gives wet hop beers a fresher hop flavor and aroma than that of beers hopped with processed hops.\r\nThis yields an immersed, intense hop flavor in the beer.\r\n\r\nHarpoon brewer Ray Dobens, creator of the beer, added a heroic dose of fresh hops the day of the harvest.The hop flavor and aroma from this copper-colored ale comes from a generous late addition of freshly harvested “wet” hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+brauhaus_sternen-huusbier_hell,0,0,244494827521,"{""name"":""Huusbier Hell"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauhaus_sternen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+diamond_knot_brewery_alehouse-hefe_weizen,0,0,244611416066,"{""name"":""Hefe-Weizen"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""diamond_knot_brewery_alehouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,12,1
+brewery_corsendonk-christmas_ale,0,0,244498235392,"{""name"":""Christmas Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_corsendonk"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+schooner_brewery-vail_pale_ale,0,0,244980908037,"{""name"":""Vail Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+empyrean_brewing_company-eccentric_ale,0,0,244631011328,"{""name"":""Eccentric Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,58,1
+harvest_moon_brewery_cafe-golden_blonde,0,0,244738555904,"{""name"":""Golden Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvest_moon_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+unibroue-chambly_noire,0,0,245117878274,"{""name"":""Chambly Noire"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""The opaque blackness and beige-colored\r\nfoam mousse of Chambly Noire belie its light,\r\nrefreshing body and clean, long finish,\r\nfeaturing hints of roasted coffee beans, toast\r\nand toffee. \r\n\r\nWe recommend pairing it with grilled salmon,\r\nsteak or tuna au poivre, smoked meats,\r\ncoffee-crusted rack of lamb, or chocolate\r\nespresso flan."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,46,1
+stone_brewing_co,0,0,245115322369,"{""name"":""Stone Brewing Co."",""city"":""Escondido"",""state"":""California"",""code"":""92029"",""country"":""United States"",""phone"":""1-760-471-4999"",""website"":""http://www.stonebrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1999 Citracado Parkway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.1157,""lon"":-117.12}}",1,40,1
+bricktown_brewery-vanilla_berry_orange,0,0,244488142849,"{""name"":""Vanilla Berry Orange"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bricktown_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,34,1
+brouwerij_slaghmuylder-witkap_pater_singel_abbey_ale,0,0,244488470531,"{""name"":""Witkap-Pater Singel Abbey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_slaghmuylder"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+dc_brau,0,0,244622229504,"{""name"":""DC Brau"",""city"":""Washington"",""state"":""DC"",""code"":""20018"",""country"":""United States"",""phone"":"""",""website"":""http://www.dcbrau.com/"",""type"":""brewery"",""updated"":""2011-08-08 19:02:40"",""description"":""The first brewery to open in the nation's capital since Prohibition."",""address"":[""3178-B Bladensburg Rd. NE""]}",1,37,1
+mendocino_brewing_ukiah-talon,0,0,244860583936,"{""name"":""Talon"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_ukiah"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+klosterbrauerei_weltenburg-hefe_weizen_hell,0,0,244736851968,"{""name"":""Hefe-Weizen Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_weltenburg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,7,1
+hacker_pschorr_bru-weisse,0,0,244739670017,"{""name"":""Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hacker_pschorr_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,14,1
+estes_park_brewery-staggering_elk,0,0,244631666689,"{""name"":""Staggering Elk"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+palm_breweries-palm_speciale,0,0,244981104640,"{""name"":""Palm Speciale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""palm_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Since 250 years Palm, a top-fermented amber beer, is brewed in the Belgian province of Brabant.  It has a soft, full and fruity taste.  It is only available in the Benelux.  In France it is known as \""Palm Belgique\"" with 6% alcohol percent."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,2,1
+pennichuck_brewing_company-halligan_ipa,0,0,245000437760,"{""name"":""Halligan IPA"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+rock_bottom_restaurant_brewery_south_denver,0,0,244980580354,"{""name"":""Rock Bottom Restaurant & Brewery - South Denver"",""city"":""Englewood"",""state"":""Colorado"",""code"":""80112"",""country"":""United States"",""phone"":""1-303-792-9090"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9627 East County Line Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.5678,""lon"":-104.874}}",1,0,1
+karl_strauss_brewery_gardens_sorrento_mesa-belgian_abbey_red,0,0,244756905987,"{""name"":""Belgian Abbey Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+brouwerij_de_landtsheer-malheur_brut_reserve,0,0,244495482882,"{""name"":""Malheur Brut Reserve"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_landtsheer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+empyrean_brewing_company-burning_skye_scottish_ale,0,0,244613644288,"{""name"":""Burning Skye Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+granville_island_brewing_company-kitsilano_maple_cream_ale,0,0,244750024704,"{""name"":""Kitsilano Maple Cream Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granville_island_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+nogne_o_det_kompromisslose_bryggeri_a_s-god_jul_winter_ale,0,0,244858945537,"{""name"":""God Jul - Winter Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark ale brewed specially for the Christmas season, with a rich, complex taste of caramel. This is a strong, dark and rather sweet Christmas Beer – just the way we think a Christmas beer should be."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,4,1
+pivovar_starobrno-czech_premium_lager,0,0,244982677504,"{""name"":""Czech Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_starobrno"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+epic_brewing_company-epic_pale_ale,0,0,244629569538,"{""name"":""Epic Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""epic_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Supreme Champion Beer - New Zealand International Beer Awards"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,54,1
+stone_city_brewing-artist_colony_ale,0,0,245116239874,"{""name"":""Artist Colony Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,42,1
+fuller_smith_turner_pbc-fuller_s_esb,0,0,244613316608,"{""name"":""Fuller's ESB"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fuller_smith_turner_pbc"",""updated"":""2010-07-22 20:00:20"",""description"":""ESB was launched into the Fuller's family in 1971, as a winter brew to replace a beer named Old Burton Extra. The potential of the beer was soon realised and ESB was installed as a permanent fixture, creating an immediate impact. \r\n\r\nNot only was it one of the strongest regularly brewed draught beers in the country (at 5.5% ABV), it was also one of the tastiest, and as the awareness of the beer grew, so did its popularity. ESB's reputation was soon enhanced after being named CAMRA's (Campaign for Real Ale) Beer of the Year in 1978, and the beer has not stopped winning since! \r\n\r\nWith three CAMRA Beer of the Year awards, two World Champion Beer awards, and numerous other gold medals to speak of, ESB is, quite simply, the Champion Ale."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,16,1
+ithaca_beer_company-nut_brown,0,0,244740325376,"{""name"":""Nut Brown"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The rich mahogany hue of the Nut Brown is the first thing you will notice. You'll find subtle hints of both chocolate and coffee. We delicately blend chocolate and caramel malts with four others to make this flavorful, easy drinking beer. The malt character will appeal to those looking for a moderately dark ale, but the smoothness is what will surprise all."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,15,1
+grolsche_bierbrouwerij-grolsch_premium_pilsner,0,0,244739342338,"{""name"":""Grolsch Premium Pilsner"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grolsche_bierbrouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""The 'standard' Grolsch beer."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,13,1
+oyster_bar_bistro_and_brewery-pumpkin_ale,0,0,244873691136,"{""name"":""Pumpkin Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oyster_bar_bistro_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+titletown_brewing-railyard_ale,0,0,245118271490,"{""name"":""Railyard Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,47,1
+carolina_beer_company-cottonwood_endo_india_pale_ale,0,0,244487225346,"{""name"":""Cottonwood Endo India Pale Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carolina_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This brew is a favorite for those who love hops! This medium copper-colored ale is dry hopped for a strong hop nose with medium malt overtones and hint of caramel that blend for one great tasting beer!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,31,1
+great_dane_pub_and_brewing_1-raspberry_ale,0,0,244749238273,"{""name"":""Raspberry Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,38,1
+legacy_brewing_co-midnight_wit,0,0,244737769474,"{""name"":""Midnight Wit"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legacy_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Midnight Wit is a Belgian-style white ale with a medium body and spicy, citrus overtones. The texture is silky, creamy, and refreshingly delightful. Brewed with European Pilsner malt, unmalted wheat, a blend of 5 different spices and then fermented with a classic Belgian yeast strain. Our Brewmaster learned the art of brewing tantalizing and award-winning white beers during his time in Belgium and this beer shows it."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,9,1
+gaslight_brewery-bison_brown,0,0,244620656641,"{""name"":""Bison Brown"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,33,1
+smuttynose_brewing_co-shoals_pale_ale,0,0,245116960768,"{""name"":""Shoals Pale Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our interpretation of a classic English beer style is copper-colored, medium-bodied and highly hopped. Its flavor is delightfully complex: tangy fruit at the start, with an assertive hop crispness and a long malty palate that one well-known beer writer has compared to the flavor of freshly-baked bread."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+brauerei_hrle-dunkle_weisse,0,0,244481523713,"{""name"":""Dunkle Weisse"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brauerei_hrle"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+stone_brewing_co-7th_anniversary_ipa,0,0,245116633089,"{""name"":""7th Anniversary IPA"",""abv"":7.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+blucreek_brewing_company,0,0,244363755520,"{""name"":""BluCreek Brewing Company"",""city"":""Madison"",""state"":""Wisconsin"",""code"":""53716"",""country"":""United States"",""phone"":""1-608-204-0868"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2605 South Stoughton Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0598,""lon"":-89.3085}}",1,18,1
+kirin_brewery_company_ltd-kirin_light,0,0,244745830400,"{""name"":""Kirin Light"",""abv"":3.31,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kirin_brewery_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""From Kirin's Site:\r\n\r\nWith just 95 calories and full-flavor, Kirin Light is one of the few great world-class Lights.\r\n\r\nYou might think Kirin Light would be a lightweight contender, content to let his sturdier siblings steal the show. But this fitness-minded newcomer won't compromise. You won't have to compromise either - with just 95 calories and full flavor, Kirin Light is one of the few great world-class lights.\r\n\r\nWhat makes Kirin Light great\r\nCanadian barley malt, Czech hops, rich golden color"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,28,1
+pumphouse_brewery_restaurant-red_alert_ale,0,0,244982349825,"{""name"":""Red Alert Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pumphouse_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,5,1
+southern_tier_brewing_co-creme_brulee_imperial_milk_stout,0,0,245098741760,"{""name"":""Creme Brulee Imperial Milk Stout"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Sweet Stout"",""category"":""British Ale""}",1,3,1
+goose_island_beer_company_clybourn-ruby_mild,0,0,244630093824,"{""name"":""Ruby Mild"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,55,1
+hopworks_urban_brewery-crosstown_pale_ale,0,0,244755398659,"{""name"":""Crosstown Pale Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer bridges east and west with a lane dedicated to riders who aren't afraid to get dirty. Three kinds of organic caramel malts and a 24 pound whirlpool hop bomb keep things interesting while the wheels go round and round. Cheers to narrow knobbies, kazoos, and more cowbell!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+heartland_brewery_union_square-cornhusker_lager,0,0,244738031617,"{""name"":""Cornhusker Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+breckenridge_brewery-mountain_wheat,0,0,244494827522,"{""name"":""Mountain Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+dirt_cheap_cigarettes_and_beer-beer,0,0,244611481600,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dirt_cheap_cigarettes_and_beer"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+brouwerij_bosteels-pauwel_kwak,0,0,244498300928,"{""name"":""Pauwel Kwak"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bosteels"",""updated"":""2010-07-22 20:00:20"",""description"":""LOOK:\r\nKwak is recognisable by its deep bright amber colour and a dense, creamy coloured head. The pale wood of the glass holder makes a pleasant contrast with the beer.\r\n\r\nSMELL:\r\nYou will smell a mellow, fruity and malty aroma with a slightly spicy character (coriander, hops). Additional earthy and very subtle aromas of banana and perhaps also a whiff of pineapple or mango in the background.\r\n\r\nTASTE:\r\nDiscover a very mellow, fruity attack, a nougat-like solidity, and a slightly spicy character with hints of liquorice passing into a warm finish that reminds you of caramelised banana. The bitterness always remains in the background but in the end emerges delicately.""}",1,57,1
+schussenrieder_erlebnisbrauerei-original_n_1_naturtrub,0,0,244980973568,"{""name"":""Original Nº 1 Naturtrüb"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schussenrieder_erlebnisbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+empyrean_brewing_company-eccentric_belgian_wheat,0,0,244631011329,"{""name"":""Eccentric Belgian Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+harvey_son_lewes,0,0,244738555905,"{""name"":""Harvey & Son (Lewes)"",""city"":""Lewes"",""state"":""East Sussex"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01273)-480209"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6 Cliffe High Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8742,""lon"":0.0167}}",1,11,1
+unicer-superbock,0,0,245117943808,"{""name"":""SuperBock"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unicer"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Authentic Flavour\"" Super Bock is the leading beer brand on the Portuguese market and is the only brand to have won 19 consecutive gold medals in the international contest \""Monde Sélection da la Qualité"",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,46,1
+sullivan_s_black_forest_brew_haus_grill-lost_sailor,0,0,245115387904,"{""name"":""Lost Sailor"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""A Hop Head's dream beer, enough said."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,40,1
+brouwerij_de_smedt-affligem_noel,0,0,244488142850,"{""name"":""Affligem Noël"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_smedt"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+brouwerij_van_honsebrouck-kasteel_bier_donker_foncee,0,0,244488536064,"{""name"":""Kasteel Bier Donker-Foncee"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_honsebrouck"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+egan_brewing-czech_out_this_pils,0,0,244622295040,"{""name"":""Czech Out This Pils!"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+midnight_sun_brewing_co-fallen_angel,0,0,244860583937,"{""name"":""Fallen Angel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Fallen Angel Golden Strong Ale, brewed on 6-6-6, is named in the tradition of Belgian golden strong ales--after the devil himself. \r\n\r\nMidnight Sun's Fallen Angel Golden Strong Ale is a traditional Belgian-style golden ale--beautiful gold in color with tiny, conniving bubbles forming a very thick, meticulous head. Effervescent and crisp, this seriously delicious elixir tempts the palate with apple (oh so Garden of Eden), pear and a little earthy mustiness. Fallen Angel captivates your senses with its lightness and brightness while its 8% ABV strength breathes fire into your soul, warming you from the inside out. \r\n\r\nAngel-like in appearance, the devil is in its strength. \r\n\r\nWith its introduction in 2006 and its immediate cult following, Fallen Angel is now brewed and released about once a year."",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,8,1
+klosterbru_bamberg-braunbier,0,0,244736851969,"{""name"":""Braunbier"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbru_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,7,1
+hair_of_the_dog_brewing-doggie_claws_2004,0,0,244739735552,"{""name"":""Doggie Claws 2004"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+f_x_matt_brewing-saranac_adirondack_lager,0,0,244631732224,"{""name"":""Saranac Adirondack Lager"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our classic German lager has a perfect balance of caramel malt sweetness. Look for a rich, amber color and medium body."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+pivovary_staropramen,0,0,244981104641,"{""name"":""Pivovary Staropramen"",""city"":""Praha"",""state"":"""",""code"":""150 54"",""country"":""Czech Republic"",""phone"":"""",""website"":""http://www.staropramen.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Nadrazni 84""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.0685,""lon"":14.4067}}",1,2,1
+port_brewing_company-wipeout_ipa,0,0,245000503296,"{""name"":""Wipeout IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This one is dedicated to everyone who has gotten up at the butt crack of dawn, headed towards the shores and found it 4-6 feet and offshore only to find 30 of your \""buddies\"" have already claimed the peak. As you paddle out, a swell arrives from nowhere signaling your turn to go. The surf Gods are shinning on you today. You turn, stroke like mad for the wave. Standing up you are alone and blammo you Wipeout....blowing the only chance of a right hander all to yourself. You know who you are. We've all been there too. It's inside each and every one of us.\r\n\r\nWelcome to the waters of Wipeout IPA, a massively hopped India Pale Ale with enough substance and body to overcome even the worst and most tragic of on the water spills. We brew Wipeout IPA for everyone- especially those hardy souls who brave the cold winter water and monster sets produced by an amazing northwest swell. \r\n\r\nOnly a tidal wave of hops can overcome the surging tide of malt that is required to produce a beer of this shape. We invite you to drop in, hang on and kick out the backside. That is, unless you enjoy wiping out and all the glory that goes with it.\r\n\r\nMalts- Two Row, Wheat, Carapils and English Crystal Malts\r\nHops- Amarillo, Centennial and Simcoe \r\nYeast- White Labs California Ale\r\n\r\nOriginal Gravity- 1.064\r\nTerminal Gravity- 1.008\r\n7.0% ABV\r\n\r\nDraft- Available in Southern California and Arizona 22 Oz Bottles and Cases- At Port Brewing San Marcos and Pizza Port Carlsbad, San Clemente and Solana Beach and wherever better beers are sold."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+rogue_ales-trafalgar_ipa,0,0,244980580355,"{""name"":""Trafalgar IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Let Battle Commence... Trafalgar is a Gold Medal Award winning bottle conditioned India Pale Ale brewed to a 19th Century recipe. Listed in the Top 500 Ales in the World, Trafalgar measures 6% ABV. Brewed in the Royal Forest of Dean at Freeminer Brewery in the UK and distributed by Rogue Ales in the US.\r\n\r\nTrafalgar IPA is a true India Pale Ale, brewed to an original 19th Century recipe. IPA's were brewed at high APV and heavily hopped to enable their preservation on the long journey to the colonies from England. This Ale is brewed from the oldest working traditional floor maltings in Warminster, Wiltshire. The hops are traditional \""Goldings\"" variety grown around Ledbury, Herefordshire as they have been for centuries."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,0,1
+lake_placid_pub_brewery,0,0,244756905988,"{""name"":""Lake Placid Pub & Brewery"",""city"":""Lake Placid"",""state"":""New York"",""code"":""12946"",""country"":""United States"",""phone"":""518-523-3813"",""website"":""http://www.ubuale.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""813 Mirror Lake Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.2829,""lon"":-73.9813}}",1,56,1
+brouwerij_der_sint_benedictusabdij_de_achelse_kluis,0,0,244495548416,"{""name"":""Brouwerij der Sint-Benedictusabdij de Achelse Kluis"",""city"":""Achel"",""state"":"""",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":""http://www.achelsekluis.org/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.2515,""lon"":5.546}}",1,50,1
+empyrean_brewing_company-third_stone_brown,0,0,244613644289,"{""name"":""Third Stone Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,17,1
+great_dane_pub_and_brewing_2-landmark_light,0,0,244750090240,"{""name"":""Landmark Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+oaken_barrel_brewing,0,0,244859011072,"{""name"":""Oaken Barrel Brewing"",""city"":""Greenwood"",""state"":""Indiana"",""code"":""46143"",""country"":""United States"",""phone"":""1-317-887-2287"",""website"":""http://www.oakenbarrel.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Oaken Barrel Brewing Co. has built its reputation on its award-winning beers. Head brewer Mark Havens and assistant brewer Andrew Castner brew a variety of fresh ales on-site in small batches. They use a fifteen barrel system to brew six standard house ales and a steady stream of specialty beers."",""address"":[""50 North Airport Parkway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.615,""lon"":-86.0901}}",1,4,1
+pivovar_v_hurbanove-golden_pheasant,0,0,244982677505,"{""name"":""Golden Pheasant"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_v_hurbanove"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+erie_brewing_company-heritage_alt_beer,0,0,244629635072,"{""name"":""Heritage Alt Beer"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Erie Brewing Co. Heritage Alt Beer - a classic, old style dark German ale possessing a subtle hint of roasted and chocolate malt flavor, with a smooth balanced finish. Erie Brewing first brewed this annually for the Erie German Heritage Festival. Erie Brewing’s Heritage Alt Beer popularity lead this beer from a commemorative beer for the festival to a complete packaged seasonal release for all to enjoy, whether you are of German Heritage or not. Prost!"",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,54,1
+thirsty_dog_brewing-cerberus_10_dog_ale,0,0,245116239875,"{""name"":""Cerberus 10 Dog Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is made with one grain and 4 Belgian yeasts, a deceptive golden color, and a malty palate lend complexity to this Belgian Trippel Ale."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,42,1
+goose_island_beer_company_clybourn-pmd_mild_ale,0,0,244613382144,"{""name"":""PMD Mild Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,16,1
+jarre_creek_ranch_brewing-amber_ale,0,0,244740325377,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jarre_creek_ranch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,15,1
+hambleton_ales-nightmare,0,0,244739407872,"{""name"":""Nightmare"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hambleton_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,13,1
+pinehurst_village_brewery-double_eagle_high_test_scotch_ale,0,0,244997488640,"{""name"":""Double Eagle \""High-Test\"" Scotch Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pinehurst_village_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,41,1
+tooheys-new,0,0,245118271491,"{""name"":""New"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tooheys"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,47,1
+climax_brewing_copmany-climax_doppel_bock,0,0,244487225347,"{""name"":""Climax Doppel Bock"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditionally brewed by Monks to sustain them while they fasted during lent; the Doppel Bock is a big-bodied and flavorful beer."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,31,1
+great_divide_brewing-ridgeline_amber,0,0,244749303808,"{""name"":""Ridgeline Amber"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ridgeline Amber stands out as a stellar, complex choice in a sea of over-simplified amber beers available today. A malty, copper-hued treat from start to finish, Ridgeline begins with a distinctive, estery aroma. Followed with a complex, nutty malt flavor true to its Scottish-style heritage, Ridgeline delivers unparalleled character and dimension. A touch of hops rounds out its silky, full body, highlighting Ridgeline’s subtle but engrossing character. Show your friends that you care about their taste buds by turning them on to our imminently balanced and perfectly complex Ridgeline Amber. \r\n\r\nOf interest to Great Divide historians – Ridgeline originally debuted at the brewery as Great Divide’s first beer, Arapahoe Amber. It was renamed in 2004 to better reflect the Colorado lifestyle that Great Divide’s beers perfectly complement."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,38,1
+legends_brewhouse_eatery_of_green_bay-amber,0,0,244737835008,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legends_brewhouse_eatery_of_green_bay"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+goose_island_beer_company_clybourn-aviator_doppelbock,0,0,244620722176,"{""name"":""Aviator Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,33,1
+southern_tier_brewing_co-imperial_mokah_blended_stout,0,0,245117026304,"{""name"":""Imperial Mokah Blended Stout"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A Jahva-Choklat hybrid.""}",1,44,1
+brauerei_leibinger,0,0,244481589248,"{""name"":""Brauerei Leibinger"",""city"":""Ravensburg"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)751-/-22469"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Friedhofstrae 20-36""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.7818,""lon"":9.6215}}",1,19,1
+storm_brewing,0,0,245116698624,"{""name"":""Storm Brewing"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""V5L 3V6"",""country"":""Canada"",""phone"":""(604) 255-9119"",""website"":""http://www.stormbrewing.org"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Storm Brewing thundered onto the market in June of 1995 with a brilliantly balanced ale called Red Sky Alt which was reminiscent of the great German Alt Biers of the Golden Years of European brewing. The instant success of Red Sky quickly established the reputation of Brewmaster and owner, James Walton. He is perceived as an innovator and as a stickler for quality by both the media and the trade. Recent expert evaluation rated Storm Brewing's Hurricane I.P.A. among the best in the whole of Canada."",""address"":[""310 Commercial Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.2821,""lon"":-123.07}}",1,43,1
+brasserie_bnifontaine-jade,0,0,244363755521,"{""name"":""Jade"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_bnifontaine"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+klosterbrauerei_weltenburg,0,0,244745830401,"{""name"":""Klosterbrauerei Weltenburg"",""city"":""Regensburg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)941-/-2001-0"",""website"":""http://www.weltenburger.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Heitzerstrae 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.0144,""lon"":12.075}}",1,28,1
+pyramid_ales_brewery-traditional_esb,0,0,244982349826,"{""name"":""Traditional ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+speakeasy_ales_and_lagers,0,0,245098741761,"{""name"":""Speakeasy Ales and Lagers"",""city"":""San Francisco"",""state"":""California"",""code"":""94124"",""country"":""United States"",""phone"":""1-415-642-3371"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1195-A Evans Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.7387,""lon"":-122.381}}",1,3,1
+gottberg_brew_pub-abtskelder_tripel,0,0,244630093825,"{""name"":""Abtskelder Tripel"",""abv"":8.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+jack_russell_brewing-farm_house_ale,0,0,244755464192,"{""name"":""Farm House Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_russell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+heavyweight_brewing,0,0,244738031618,"{""name"":""Heavyweight Brewing"",""city"":""Ocean"",""state"":""New Jersey"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Closed in 1996."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.9653,""lon"":-74.3118}}",1,10,1
+breckenridge_brewery-thunder_stout,0,0,244494893056,"{""name"":""Thunder Stout"",""abv"":4.95,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""breckenridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+dreher_srgyrak_zrt-bak,0,0,244611481601,"{""name"":""Bak"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dreher_srgyrak_zrt"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,12,1
+brouwerij_slaghmuylder,0,0,244498300929,"{""name"":""Brouwerij Slaghmuylder"",""city"":""Ninove"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-054-33-18-31"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Denterhoutembaan 2""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8417,""lon"":4.0213}}",1,57,1
+sierra_nevada_brewing_co-bigfoot_2004,0,0,244980973569,"{""name"":""Bigfoot 2004"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+estes_park_brewery-renegade_ipa,0,0,244631011330,"{""name"":""Renegade IPA"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our award-winning India Pale Ale  is a hop lover’s dream. We use Galena and Cascade hops in the kettle and dry-hop with more cascade during conditioning. This copper-colored ale has a nice maltiness to balance all the hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,58,1
+highland_brewing_company-cold_mountain_winter_ale,0,0,244738555906,"{""name"":""Cold Mountain Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our ever-changing spiced winter seasonal. A tasty brew that complements all your holiday festivities. It is typically malty in body, lightly hopped, and rounded out with spices that we vary from year to year."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,11,1
+weyerbacher_brewing_company-blanche,0,0,245750235136,"{""name"":""Blanche"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Clean, refreshing and perhaps just a bit tart, our brewers developed Weyerbacher Blanche just after their trip to Belgium during the winter of 2000.  Blanche, meaning \""white\"", takes its name from the whitish haze in this pale gold brew, which is a result of the raw wheat and wheat malts used to brew this Belgian-style beer. \r\n\r\nIn 2002, Blanche was named as Best of the Mid-Atlantic/Southeast in the Belgian Specialty category at the US Beer Tasting Championships.\r\n\r\nWhite beers are well known as the principal product from Hoegaarden, a small town in a wheat-growing region east of Brussels.  Light, cloudy and smooth, Weyerbacher Blanche brings you authentic Belgian-style flavor along with microbrewed quality and freshness.\r\n\r\nBlanche is a thirst quenching beer that combines character and flavor with a moderate alcohol content.  Just try a bottle.  In the nose you'll notice spiciness from the coriander seeds and dried curacao orange peels added during the boil.  In the mouth you'll find a mild and refreshing ale with a hint of dryness from the wheat ingredients.  A clean finish follows with just a hint of tart spiciness."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,46,1
+summit_brewing-great_northern_porter,0,0,245115387905,"{""name"":""Great Northern Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""summit_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,40,1
+brouwerij_der_sint_benedictusabdij_de_achelse_kluis-achel_bruin_5,0,0,244488208384,"{""name"":""Achel Bruin 5°"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_der_sint_benedictusabdij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,34,1
+c_b_potts_of_cheyenne-big_horn_total_disorder_porter,0,0,244488536065,"{""name"":""Big Horn Total Disorder Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""c_b_potts_of_cheyenne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,35,1
+f_x_matt_brewing-saranac_summer_ale,0,0,244622295041,"{""name"":""Saranac Summer Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""ith more than 2,800 bodies of water in the Adirondacks, it's not too hard to find a sunny place to relax, rest your feet and look out over the water. To celebrate summer in the Adirondacks, we've brewed a beer with generous amounts of wheat malt for a light, refreshing taste. Look for subtle hints of lemon."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,37,1
+mishawaka_brewing,0,0,244860583938,"{""name"":""Mishawaka Brewing"",""city"":""Mishawaka"",""state"":""Indiana"",""code"":""46545"",""country"":""United States"",""phone"":""1-574-256-9993"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3703 North Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.6931,""lon"":-86.1818}}",1,8,1
+kulmbacher_brauerei_ag,0,0,244736917504,"{""name"":""Kulmbacher Brauerei AG"",""city"":""Kulmbach"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9221-/-705-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lichtenfelser Strae 9""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.106,""lon"":11.4442}}",1,7,1
+hale_s_ales_3-moss_bay_extra,0,0,244739735553,"{""name"":""Moss Bay Extra"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+flagstaff_brewing-sasquatch_stout,0,0,244631732225,"{""name"":""Sasquatch Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flagstaff_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+port_brewing_company-broken_keg_ice_bock,0,0,244981170176,"{""name"":""Broken Keg Ice Bock"",""abv"":15.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,2,1
+prescott_brewing_company-pine_tar_stout,0,0,245000503297,"{""name"":""Pine Tar Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+route_66_brewery-lake_shore_light,0,0,244980580356,"{""name"":""Lake Shore Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,0,1
+lost_coast_brewery,0,0,244879720448,"{""name"":""Lost Coast Brewery"",""city"":""Eureka"",""state"":""California"",""code"":""95501"",""country"":""United States"",""phone"":""1-707-445-4484"",""website"":""http://www.lostcoast.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""617 Fourth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.8032,""lon"":-124.165}}",1,56,1
+brouwerij_st_bernardus-st_bernardus_witbier,0,0,244495548417,"{""name"":""St. Bernardus Witbier"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""This traditional Witbier (Wheat beer) has been developed in cooperation with Master Brewer Pierre Celis, the Godfather of Hoegaarden and Celis White. \r\n\r\nThis beer as well has a second fermentation in the bottle, giving this beer its specific taste (5.5% alcohol content)."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,50,1
+engel_brauerei_schwbisch_gmnd_lang-trompe_la_mort,0,0,244613709824,"{""name"":""Trompe La Mort"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""engel_brauerei_schwbisch_gmnd_lang"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,17,1
+grumpy_troll_restaurant_and_brewery-2nd_street_amber,0,0,244750090241,"{""name"":""2nd Street Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,39,1
+oriental_brewery,0,0,244859011073,"{""name"":""Oriental Brewery"",""city"":"""",""state"":"""",""code"":"""",""country"":""Korea, Republic of"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Oriental Brewery or OB is a South Korean brewery established by the Doosan Group in 1952. It was purchased by InBev in 2003. Today OB produces several of Korea's most popular beverages including the OB, Cass and Cafri lager brands."",""address"":[]}",1,4,1
+prescott_brewing_company-prescott_pale_ale,0,0,244982677506,"{""name"":""Prescott Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,6,1
+f_x_matt_brewing-saranac_mountain_ale,0,0,244629635073,"{""name"":""Saranac Mountain Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Delicious Fruity ale is brewed with blackberries, raspberries and sweetened with a touch of blueberry honey. Light and refreshing.With a reddish-Amber color, be sure to look for the ale bitter and berry sweetness. Enjoy!"",""style"":""Fruit Beer"",""category"":""Other Style""}",1,54,1
+tied_house_cafe_brewery_san_jose-maibock,0,0,245116305408,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,42,1
+goose_island_beer_company_clybourn-rye_stout,0,0,244613382145,"{""name"":""Rye Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+jasper_ridge_brewery,0,0,244740390912,"{""name"":""Jasper Ridge Brewery"",""city"":""Ishpeming"",""state"":""Michigan"",""code"":""49849"",""country"":""United States"",""phone"":""1-906-485-6017"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1075 Country Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":46.5015,""lon"":-87.679}}",1,15,1
+hereford_hops_steakhouse_and_brewpub_3-cleary_red,0,0,244739407873,"{""name"":""Cleary Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+pleasanton_main_street_brewery-island_wheat,0,0,244997488641,"{""name"":""Island Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pleasanton_main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+trailhead_brewing_company-old_courthouse_stout,0,0,245118337024,"{""name"":""Old Courthouse Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trailhead_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,47,1
+commonwealth_brewing_1-amber_ale,0,0,244487290880,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""commonwealth_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,31,1
+great_waters_brewing_company-saint_peter_pale_ale,0,0,244749369344,"{""name"":""Saint Peter Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,38,1
+lewis_clark_brewing_company-tumbleweed_ipa,0,0,244737835009,"{""name"":""Tumbleweed IPA"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lewis_clark_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A GOLD MEDAL WINNER at the Great American Beer Festival, beating out 98 other IPA's and chosen as the best IPA in the country! It's amber color and incredible hoppy aroma will keep you coming back for more. R-U-HOPPY?"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,9,1
+govnor_s_public_house-leprechaun_light,0,0,244747337728,"{""name"":""Leprechaun Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+spaten_franziskaner_brau-maibock,0,0,245117091840,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,44,1
+brewery_creek_brewing-american_blonde,0,0,244481654784,"{""name"":""American Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+sweetwater_brewing_atlanta-hummer,0,0,245116698625,"{""name"":""Hummer"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_atlanta"",""updated"":""2010-07-22 20:00:20"",""description"":""SweetWater Hummer is a tasty Belgian White Ale brewed with coriander and orange peel. Cloudy with subtle fruit tones and a lingering finish. Everybody loves a Hummer!"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,43,1
+brasserie_mcauslan-st_ambroise_apricot_wheat_ale,0,0,244481064960,"{""name"":""St-Ambroise Apricot Wheat Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brasserie_mcauslan"",""updated"":""2010-07-22 20:00:20"",""description"":""Apricot Wheat Ale blends various barley malts with malted wheat and natural apricot essence to create an original-tasting beer with a clean, fruit nose.\r\n\r\n5% alc/vol  Available in Bottles and Draft"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,18,1
+lagunitas_brewing_company-undercover_investigation_shut_down_ale,0,0,244745895936,"{""name"":""Undercover Investigation Shut-Down Ale"",""abv"":9.28,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+qingdao_brewery-green_beer,0,0,244982415360,"{""name"":""Green Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""qingdao_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+steam_whistle_brewery,0,0,245098807296,"{""name"":""Steam Whistle Brewery"",""city"":""Toronto"",""state"":""ON"",""code"":""M5V 3M9"",""country"":""Canada"",""phone"":"""",""website"":""http://www.steamwhistle.ca"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""One kind of beer - Steamwhistle Lager."",""address"":[""255 Bremner Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.6414,""lon"":-79.3869}}",1,3,1
+great_dane_pub_and_brewing_2-new_peculier,0,0,244756119552,"{""name"":""New Peculier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,55,1
+jinro_coors_brewing-cass_fresh,0,0,244755464193,"{""name"":""Cass Fresh"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jinro_coors_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,52,1
+independence_brew_pub-kolsch,0,0,244738097152,"{""name"":""Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""independence_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+brew_kettle_taproom_smokehouse_bop-big_woody_lager,0,0,244494893057,"{""name"":""Big Woody Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brew_kettle_taproom_smokehouse_bop"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+duclaw,0,0,244611481602,"{""name"":""DuClaw"",""city"":""Baltimore"",""state"":""Maryland"",""code"":""21231"",""country"":""United States"",""phone"":""410-563-3400"",""website"":""http://www.duclaw.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""901 S. Bond St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.2807,""lon"":-76.5944}}",1,12,1
+brouwerij_van_steenberge-bornem_double,0,0,244498300930,"{""name"":""Bornem Double"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,57,1
+sioux_falls_brewing,0,0,244980973570,"{""name"":""Sioux Falls Brewing"",""city"":""Sioux Falls"",""state"":""South Dakota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.55,""lon"":-96.7003}}",1,1,1
+f_x_matt_brewing-saranac_imperial_ipa,0,0,244631076864,"{""name"":""Saranac Imperial IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Imperial IPA is part our new High Peak Series, a line of beers that are bigger, more complex and flavorful; beers that are meant to be sipped and savored. Saranac Imperial IPA is brewed with 10 different malts and 10 different hops to make a delectably flavorful and complex Imperial IPA - at 85 IBU's and 8.5 % alc/vol."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,58,1
+indian_wells_brewing,0,0,244738555907,"{""name"":""Indian Wells Brewing"",""city"":""Inyokern"",""state"":""California"",""code"":""93527"",""country"":""United States"",""phone"":""1-760-377-5989"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2565 North Highway 14""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.6675,""lon"":-117.874}}",1,11,1
+whim_ales-old_izaak,0,0,245750300672,"{""name"":""Old Izaak"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""whim_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,46,1
+sweetwater_brewing_atlanta,0,0,245115387906,"{""name"":""Sweetwater Brewing - Atlanta"",""city"":""Atlanta"",""state"":""Georgia"",""code"":""30324"",""country"":""United States"",""phone"":""1-404-691-2537"",""website"":""http://www.sweetwaterbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""195 Ottley Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.8087,""lon"":-84.3813}}",1,40,1
+browar_namyslow_sp_z_o_o-rycerskie,0,0,244488208385,"{""name"":""Rycerskie"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""browar_namyslow_sp_z_o_o"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,34,1
+carlyle_brewing,0,0,244488601600,"{""name"":""Carlyle Brewing"",""city"":""Rockford"",""state"":""Illinois"",""code"":""61104"",""country"":""United States"",""phone"":""1-815-963-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""215 East State Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.2689,""lon"":-89.0907}}",1,35,1
+firehouse_grill_brewery-double_ipa,0,0,244622426112,"{""name"":""Double IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,37,1
+molson_breweries_of_canada-golden,0,0,244860649472,"{""name"":""Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+lagunitas_brewing_company,0,0,244736917505,"{""name"":""Lagunitas Brewing Company"",""city"":""Petaluma"",""state"":""California"",""code"":""94954"",""country"":""United States"",""phone"":""1-707-769-4495"",""website"":""http://www.lagunitas.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1280 North McDowell Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.2724,""lon"":-122.662}}",1,7,1
+hofbruhaus_traunstein,0,0,244739801088,"{""name"":""Hofbruhaus Traunstein"",""city"":""Traunstein"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)861-/-98866-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hofgasse 6-11""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.8691,""lon"":12.6505}}",1,14,1
+founders_brewing-canadian_breakfast_stout,0,0,244631797760,"{""name"":""Canadian Breakfast Stout"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,59,1
+rch_brewery-pitchfork_rebellious_bitter,0,0,244981170177,"{""name"":""Pitchfork Rebellious Bitter"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rch_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-snow_cap_ale,0,0,245000503298,"{""name"":""Snow Cap Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,48,1
+san_diego_brewing-old_395_barleywine,0,0,244980645888,"{""name"":""Old 395 Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+maclay_and_co,0,0,244879785984,"{""name"":""Maclay and Co."",""city"":""Clackmannan"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":56.1073,""lon"":-3.7528}}",1,56,1
+brouwerij_van_steenberge-bornem_triple,0,0,244495548418,"{""name"":""Bornem Triple"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,50,1
+fitger_s_brewhouse_brewery_and_grill-lighthouse_ale,0,0,244613709825,"{""name"":""Lighthouse Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+hereford_hops_steakhouse_and_brewpub_3-doppelbock,0,0,244750155776,"{""name"":""Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,39,1
+oskar_blues_grill_and_brew-one_nut_brown_ale,0,0,244859011074,"{""name"":""One Nut Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""This big tasting brew is only available in the brewpub. Very smooth and balanced with a deep clear brown color. Lightly hopped."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,4,1
+prescott_brewing_company,0,0,244982743040,"{""name"":""Prescott Brewing Company"",""city"":""Prescott"",""state"":""Arizona"",""code"":""86301"",""country"":""United States"",""phone"":""(928) 771-2795"",""website"":""http://prescottbrewingcompany.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""130 W Gurley St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.542,""lon"":-112.47}}",1,6,1
+faultline_brewing_2-alt_bier,0,0,244629635074,"{""name"":""Alt Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,54,1
+tommyknocker_brewery_and_pub-maple_nut_brown_ale_ale,0,0,245116305409,"{""name"":""Maple Nut Brown Ale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""Maple syrup is added to each barrel of Maple Nut Brown Ale to impart roasted sweetness balancing the nut flavor produced by chocolate malts."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,42,1
+great_dane_pub_and_brewing_1-stone_of_scone_scotch_ale,0,0,244740653056,"{""name"":""Stone of Scone Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+joboy_s_brew_pub-joboy_s_ipa,0,0,244740390913,"{""name"":""JoBoy's IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joboy_s_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our offering to the hop heads! A decidedly hoppy, bitter, and moderately strong American IPA. We use a generous amount of whole leaf Cascade, Centennial and Citra hops to showcase the freshness and earthy flavors that only hops can provide."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+hoppin_frog_brewery-fresh_frog_raw_hop_imperial_pale_ale,0,0,244739407874,"{""name"":""Fresh Frog Raw Hop Imperial Pale Ale"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Special hoppy flavors and aromas are captured by adding freshly picked, undired hops during the harvest.\r\n\r\nThese wet hops impart a character unlike other brews, that is quite unique and satisfying for those who love hops – the spice of beer. Smell the hop fields, smell the freshness."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+prescott_brewing_company-petrified_porter,0,0,244997488642,"{""name"":""Petrified Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,41,1
+triumph_brewing_of_princeton-imperial_stout,0,0,245118337025,"{""name"":""Imperial Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,47,1
+deschutes_brewery-bond_street_19th_anniversary,0,0,244619280384,"{""name"":""Bond Street 19th Anniversary"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+hapa_s_brew_haus_and_restaurant-black_lava_lager,0,0,244749434880,"{""name"":""Black Lava Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,38,1
+licher_privatbrauerei,0,0,244737900544,"{""name"":""Licher Privatbrauerei"",""city"":""Lich"",""state"":""Hessen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)6404-/-82-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""In den Hardtberggrten""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.5208,""lon"":8.8166}}",1,9,1
+granite_city_food_brewery_omaha-duke_ipa,0,0,244747403264,"{""name"":""Duke IPA"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_omaha"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,33,1
+the_alchemist-heady_topper,0,0,245117091841,"{""name"":""Heady Topper"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""Is our double I.P.A.! Loaded with hops, this one will put hair on your chest."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,44,1
+brouwerij_bavik_de_brabandere-petrus_dubbel_bruin_ale,0,0,244481720320,"{""name"":""Petrus Dubbel Bruin Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_bavik_de_brabandere"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,19,1
+t_bonz_gill_grill_and_brewery-stout,0,0,245116698626,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_bonz_gill_grill_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,43,1
+brauhaus_johann_albrecht_konstanz,0,0,244481130496,"{""name"":""Brauhaus Johann Albrecht - Konstanz"",""city"":""Konstanz"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7531-/-25045"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Konradigasse 2""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6651,""lon"":9.175}}",1,18,1
+lake_superior_brewing,0,0,244745895937,"{""name"":""Lake Superior Brewing"",""city"":""Duluth"",""state"":""Minnesota"",""code"":""55806"",""country"":""United States"",""phone"":""1-218-723-4000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2711 West Superior Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":46.7611,""lon"":-92.1319}}",1,28,1
+raccoon_river_brewing-vanilla_creme_ale,0,0,244982415361,"{""name"":""Vanilla Creme Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+sweetwater_tavern_centreville-flying_armadillo_porter,0,0,245098872832,"{""name"":""Flying Armadillo Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_tavern_centreville"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+great_divide_brewing-claymore_scotch_ale,0,0,244756119553,"{""name"":""Claymore Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,55,1
+knig_ludwig_schlobrauerei_kaltenberg-konig_ludwig_weissbier_dunkel,0,0,244755464194,"{""name"":""König Ludwig Weissbier Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""knig_ludwig_schlobrauerei_kaltenberg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+indian_wells_brewing-eastern_sierra_lager,0,0,244738097153,"{""name"":""Eastern Sierra Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""indian_wells_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+brewdog_ltd-punk_ipa,0,0,244494893058,"{""name"":""Punk IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewdog_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""This 6% trans-atlantic fusion IPA is light golden in colour with tropical fruits and light caramel on the nose. The palate soon becomes assertive and resinous with the New Zealand hops balanced by the biscuit malt. The finish is aggressive and dry with the hops emerging over the warming alcohol.\r\n\r\nThis fresh, full flavour natural beer is our tribute to the classic IPAs of yester-year. The post modern twist is the addition of amazing fruity hops giving an explosion of tropical fruit flavours and a sharp bitter finish."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,49,1
+eastern_shore_brewing-st_michaels_blonde_ale,0,0,244611481603,"{""name"":""St. Michaels Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eastern_shore_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,12,1
+bube_s_brewery-bube_s_hefeweizen,0,0,244498366464,"{""name"":""Bube's Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bube_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This traditional German-style wheat beer is rich in banana and clove undertones, with a wonderful frothy head."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,57,1
+skagit_river_brewing-del_rio_lager,0,0,244980973571,"{""name"":""Del Rio Lager"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,1,1
+f_x_matt_brewing-saranac_kolsch,0,0,244631076865,"{""name"":""Saranac Kolsch"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This golden sparkling blond ale was brewed to pay homage to a 1000-year tradition rooted in Cologne, Germany. Clear, crisp and easy to drink, the Kolsch of today is lighter than the \""House\"" beer that was served in Cologne 200 years ago - the city that made Kolsch famous. We hope you'll enjoy it!""}",1,58,1
+jack_s_brewing-grid_iron_amber_ale,0,0,244738621440,"{""name"":""Grid Iron Amber Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,11,1
+white_marsh_brewing_company,0,0,245750300673,"{""name"":""White Marsh Brewing Company"",""city"":""White Marsh"",""state"":""Maryland"",""code"":""21236"",""country"":""United States"",""phone"":""410.931.PUBS"",""website"":""http://www.redbrickstation.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""8149 Honeygo Blvd""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.3722,""lon"":-76.4638}}",1,46,1
+terrapin_beer_company-terrapin_golden_ale,0,0,245115453440,"{""name"":""Terrapin Golden Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Terrapin Beer Company was started by two guys who love big, bold beers. We are known for using a ton of flavorful ingredients and for pushing the envelope with the brews we create.\r\n\r\nWe have also been known to take pleasure in hiking, biking, kayaking, and just plain having fun in the great outdoors. When we get hot and sweaty even hopheads like us want nothing more than to enjoy a beer that is crisp and refreshing.\r\n\r\nWhich is why we created the perfect session beer – the Terrapin Golden Ale."",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,40,1
+captain_lawrence_brewing_company-captin_lawrence_pale_ale,0,0,244488208386,"{""name"":""Captin Lawrence Pale Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""captain_lawrence_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""One of the first beers I brewed after moving out to California to begin my brewing education was a Pale Ale. This version is a true testament to the influences the Wild West had on my early brewing. My Pale Ale is loaded with US-grown Cascade, Crystal, and Columbus hops, so be sure to take a good sniff to enjoy their robust aromas before taking your first sip."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,34,1
+cherryland_brewing-golden_rail,0,0,244488667136,"{""name"":""Golden Rail"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cherryland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+fitger_s_brewhouse_brewery_and_grill-9_wheats,0,0,244622426113,"{""name"":""9½ Wheats"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+molson_breweries_of_canada-rickard_s_white_ale,0,0,244860649473,"{""name"":""Rickard's White Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,8,1
+lancaster_brewing_co-baltic_porter,0,0,244736983040,"{""name"":""Baltic Porter"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional lager-style beer, with its dark color and medium body, has a defined hop flavor balanced by the smoothness of extra special roasted malt. This healthy dose of over six malt flavors makes this beer perfect for the transition from winter into spring."",""style"":""Porter"",""category"":""Irish Ale""}",1,7,1
+hoffbrau_steaks_brewery_1-rodeo_red,0,0,244739801089,"{""name"":""Rodeo Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,14,1
+fuller_smith_turner_pbc,0,0,244631797761,"{""name"":""Fuller, Smith & Turner PBC"",""city"":""London"",""state"":""London"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0208)-996-2000"",""website"":""http://www.fullers.co.uk/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Chiswick Lane South""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.4877,""lon"":-0.2498}}",1,59,1
+redhook_ale_brewery-double_black_stout,0,0,244981170178,"{""name"":""Double Black Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,2,1
+pyramid_ales_brewery-apricot_weizen_ale,0,0,245000568832,"{""name"":""Apricot Weizen Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed by the original Wheat Beer Pioneers, Pyramid Apricot Weizen Ale is left unfiltered for extra flavor and aroma.\r\n\r\nThe gold medalist of fruit beers, Pyramid Apricot Weizen is an adventurous wheat ale that offers the pleasing aroma and flavor of fresh apricots, and smooth and refreshing character for which our wheat beers are known.\r\n\r\nOriginal Gravity: 11.75\r\nAlcohol By Volume: 5.10%\r\nMalts: 2-Row Barley, Malted Wheat, Caramel\r\nHops: Nugget\r\nAvailability: Year Round\r\nBest Paired With: Appetizers, salads, and desserts such as pies and pastries.\r\n\r\nBest of the Northwest/Pacific in the \""Fruit Beer\"" category at the 2000 United States Beer Tasting Championship, 2000\r\nGold Medal, GABF, \""Fruit and Vegetable Beers\"", 1994"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,48,1
+shipyard_brewing_portland-ringwood_brewery_old_thumper_extra_special_ale,0,0,244980645889,"{""name"":""Ringwood Brewery Old Thumper Extra Special Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+magic_hat,0,0,244879785985,"{""name"":""Magic Hat"",""city"":""South Burlington"",""state"":""Vermont"",""code"":""5403"",""country"":""United States"",""phone"":""1-802-658-2739"",""website"":""http://www.magichat.net/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Burlington microbrewers of Humble Patience, Fat Angel, #9, Blind Faith IPA, and Heart of Darkness Oatmeal Stout."",""address"":[""5 Bartlett Bay Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.4284,""lon"":-73.2131}}",1,56,1
+bull_bush_pub_brewery-big_ben_brown,0,0,244495548419,"{""name"":""Big Ben Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,50,1
+flatlander_s_restaurant_brewery-harvest_amber_ale,0,0,244613709826,"{""name"":""Harvest Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flatlander_s_restaurant_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,17,1
+hoffbrau_steaks_brewery_2-buffalo_ale,0,0,244750155777,"{""name"":""Buffalo Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,39,1
+pabst_brewing_company-piels_draft,0,0,244859076608,"{""name"":""Piels Draft"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""It took “The Beer Drinker’s Beer” to introduce a real draft in a can—and you can still taste that milestone in brewing history today with every can of Piels. Our Draft Style delivers unsurpassed flavor and character like it was drawn straight from the tap!"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,4,1
+r_b_brewing-pale_ale,0,0,244982808576,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""r_b_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,6,1
+firehouse_brewery_restaurant-bock,0,0,244629635075,"{""name"":""Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,54,1
+trade_winds_brewing,0,0,245116305410,"{""name"":""Trade Winds Brewing"",""city"":""Wailuku"",""state"":""Hawaii"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":20.8911,""lon"":-156.505}}",1,42,1
+great_lakes_brewing-blackout_stout,0,0,244740718592,"{""name"":""Blackout Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Russian Imperial Stout with a hearty malt body and bold hop flavor."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,16,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2005,0,0,244740456448,"{""name"":""Harvest Ale 2005"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,15,1
+hoppin_frog_brewery-silk_porter,0,0,244739473408,"{""name"":""Silk Porter"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark, robust and silky-smooth, with many flavors of roasted, toasted and caramel malts. Porter is an old-world beer style, so popular that it helped start the industrial revolution. Taste the history."",""style"":""Porter"",""category"":""Irish Ale""}",1,13,1
+raccoon_river_brewing,0,0,244997554176,"{""name"":""Raccoon River Brewing"",""city"":""Des Moines"",""state"":""Iowa"",""code"":""50309"",""country"":""United States"",""phone"":""1-515-362-5222"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 North Tenth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.5841,""lon"":-93.6296}}",1,41,1
+troegs_brewing-scratch_24_2009_van_de_hoorn,0,0,245118337026,"{""name"":""Scratch #24 2009 Van de Hoorn"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+deschutes_brewery-quail_springs_ipa,0,0,244619280385,"{""name"":""Quail Springs IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,31,1
+harviestoun_brewery-old_engine_oil_special_reserve_aged_in_malt_whisky_casks,0,0,244749434881,"{""name"":""Old Engine Oil Special Reserve (aged in malt whisky casks)"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harviestoun_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+lion_brewery_inc,0,0,244860846080,"{""name"":""Lion Brewery Inc."",""city"":""Wilkes Barre"",""state"":""Pennsylvania"",""code"":""18705"",""country"":""United States"",""phone"":""(800) 233-8327"",""website"":""http://www.lionbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""With a proud brewing heritage dating back to 1905, The Lion Brewery merges rustic architecture with state-of-the-art brewing technology, a contrast typified by the gleaming stainless steel aging tanks that sit alongside the traditional copper brew kettle. Our brewing process utilizes the traditional English method of upward infusion mashing in our combination mash lauter tun to create lagers and ales inspired by old world values, but with modern quality and consistency. The staff at The Lion Brewery is dedicated to producing true handcrafted beers, made right here in our century-old Brewhouse. All of our premium beers are made using only the four basic ingredients allowed by the Reinheitsgebot, or German purity law. Under the skillful supervision of our Master Brewer, Leo Orlandini, each of our lagers and ales are brewed in small batches using only the finest hops and malts available to guarantee the highest quality and freshness. Each product we brew is an original recipe especially created to deliver a fuller flavor than ordinary beers, yet with an approachable style and character. As a result, our beers have garnered numerous medals from the Great American Beer Festival and the World Beer Championships in recent years."",""address"":[""700 North Pennsylvania Blvd.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2557,""lon"":-75.8583}}",1,9,1
+granite_city_food_brewery_saint_cloud-pride_of_pilsen,0,0,244747468800,"{""name"":""Pride of Pilsen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+thirsty_dog_brewing-labrador_lager,0,0,245117091842,"{""name"":""Labrador Lager"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Traditional German Lager brewed with all German grain & yeast. Very drinkable."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+brouwerij_boon-geuze_boon,0,0,244481720321,"{""name"":""Geuze Boon"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_boon"",""updated"":""2010-07-22 20:00:20"",""description"":""Geuze, a mixture of old and young Lambic. The young Lambic is added to cause a refermentation in the bottle making for a delightfully sparkling and dry beer that has been likened, in all seriousness, to Champagne."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,19,1
+t_bonz_gill_grill_and_brewery-winterfest,0,0,245116764160,"{""name"":""Winterfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_bonz_gill_grill_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,43,1
+brewpub_on_the_green,0,0,244481130497,"{""name"":""Brewpub-on-the-Green"",""city"":""Fremont"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.5483,""lon"":-121.989}}",1,18,1
+lancaster_brewing_co-lancaster_hefe_weizen,0,0,244745961472,"{""name"":""Lancaster Hefe Weizen"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Light and refreshing! This very bubbly Munich style weizen beer is highlighted by a spicy, banana finish.\r\n\r\nAvailable at the Brewery from May - October"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,28,1
+radeberger_exportbierbrauerei-pilsener,0,0,244982480896,"{""name"":""Pilsener"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""radeberger_exportbierbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,5,1
+terrapin_beer_company-big_hoppy_monster,0,0,245098872833,"{""name"":""Big Hoppy Monster"",""abv"":8.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This mammoth imperial red ale leads with a tantalizing hop aroma that is quickly complemented by an enormous malt backbone & finished with a multitude of hoppy goodness."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,3,1
+green_bay_brewing-hinterland_packerland_pilsner,0,0,244756250624,"{""name"":""Hinterland Packerland Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+la_jolla_brewing,0,0,244755464195,"{""name"":""La Jolla Brewing"",""city"":""La Jolla"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.8575,""lon"":-117.876}}",1,52,1
+iron_city_brewing_co-augustiner,0,0,244738097154,"{""name"":""Augustiner"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Augustiner is a premium amber lager with a smooth, full-bodied flavor. From the rich copper color to the subtle caramel taste and clean finish, it’s brewed to please the beer drinker who appreciates the best. This distinctive, well-balanced brew is quickly becoming Pittsburgh’s most talked-about beer. Upgrade to Augustiner!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+brewery_corsendonk-monk_brown_ale,0,0,244494958592,"{""name"":""Monk Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brewery_corsendonk"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+edelweissbrauerei_farny-kristall_weizen,0,0,244611547136,"{""name"":""Kristall-Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""edelweissbrauerei_farny"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+bulmer_cider,0,0,244498366465,"{""name"":""Bulmer Cider"",""city"":""Hereford"",""state"":"""",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.056,""lon"":-2.7175}}",1,57,1
+spring_house_brewing_company-beyond_the_gates_double_ipa,0,0,245097496576,"{""name"":""Beyond The Gates Double IPA"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is for those of you who have been enjoying Seven Gates Pale Ale, and are ready for that next step. Beyond the Gates Double IPA is a highly hopped brew featuring plenty of Cascade and Columbus hops. These varieties give Beyond the Gates a floral citrus aroma, and pack plenty of hopped up flavor into this full-bodied ale, which is coming in @ 7.5 ABV. Let us take you Beyond the Gates, and you'll never look back!"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,1,1
+flensburger_brauerei-pilsener,0,0,244631076866,"{""name"":""Pilsener"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flensburger_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+jt_whitney_s_brewpub_and_eatery-frozen_tundra,0,0,244738621441,"{""name"":""Frozen Tundra"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,11,1
+wild_goose_brewery_llc-wild_goose_pumpkin_patch,0,0,245750300674,"{""name"":""Wild Goose Pumpkin Patch"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_goose_brewery_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Fall Seasonal, Pumpkin Patch Ale, is the perfect beer for an autumn night. Pumpkin Patch pours a hazy orange with frothy, ivory colored head. The nose immediately conjures images of Grandma baking pumpkin pie with notes of nutmeg, cinnamon and ginger. Medium body and mild carbonation yield a spicy, pumpkin flavor - from the 300 lbs. of pumpkin we use to brew this unique beer."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,46,1
+the_alchemist-mortal_sin,0,0,245115453441,"{""name"":""Mortal Sin"",""abv"":6.66,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""This I.P.A. is so rich and delicious that you'll need to confess after drinking one! Generously dry-hopped for your olefactory pleasure."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,40,1
+coopers_brewery-coopers_premium_lager,0,0,244488273920,"{""name"":""Coopers Premium Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Coopers Premium Lager is quite different to the famous Coopers ales.  This lager produces a refreshing flavour with a good balance of malt and hop characters and is brewed using no sugar. With its subtle fruity esters and light golden colour, combined with a judicious blend of Pride of Ringwood and Saaz hops.  This produces a Lager with a crisp malty full flavour."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+climax_brewing_copmany-climax_helles,0,0,244488667137,"{""name"":""Climax Helles"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""The Hoffmann Helles (pronounced Hell-es), which is German for \""bright\"" is a pleasant and easy to drink summer beer with a bready/grainy taste."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,35,1
+flossmoor_station_brewery-el_diablo_tripel,0,0,244622426114,"{""name"":""El Diablo Tripel"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+mountain_sun_pub_brewery-chazz_cat_rye,0,0,244860649474,"{""name"":""Chazz Cat Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mountain_sun_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+leinenkugel_s_ballyard_brewery,0,0,244736983041,"{""name"":""Leinenkugel's Ballyard Brewery"",""city"":""Phoenix"",""state"":""Arizona"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.4484,""lon"":-112.074}}",1,7,1
+hook_norton_brewery-generation,0,0,244739801090,"{""name"":""Generation"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hook_norton_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+gasthof_brauerei_zum_frohsinn-hell,0,0,244631863296,"{""name"":""Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthof_brauerei_zum_frohsinn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+rock_bottom_restaurant_brewery_minneapolis-saison_goux,0,0,244981170179,"{""name"":""Saison Goux"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+red_kettle_brewing-pale,0,0,245000568833,"{""name"":""Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_kettle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+simmerberg_brusttt_und_taferne-dunkles_lager,0,0,244980645890,"{""name"":""Dunkles Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""simmerberg_brusttt_und_taferne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+magnolia_pub_and_brewery-blue_bell_bitter,0,0,244879851520,"{""name"":""Blue Bell Bitter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magnolia_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Diacetyl dominated cask bitter."",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,56,1
+bull_bush_pub_brewery-cream,0,0,244495613952,"{""name"":""Cream"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+flossmoor_station_brewery,0,0,244613775360,"{""name"":""Flossmoor Station Brewery"",""city"":""Flossmoor"",""state"":""Illinois"",""code"":""60422"",""country"":""United States"",""phone"":""1-708-957-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1035 Sterling Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.5433,""lon"":-87.6789}}",1,17,1
+hoppy_brewing_company-hoppy_claus_holiday_ale,0,0,244750221312,"{""name"":""Hoppy Claus Holiday Ale"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppy_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Holiday Ale is a “special” version of our flagship product - Hoppy Face™ Amber Ale; only bigger for you to enjoy during this holiday season!!! Characterized by its distinctive hop aroma and rich, ruby color, Hoppy Claus redefines the way you think about a holiday ale. Hoppy Claus uses only the finest two row malted barley, hops grown in the great Pacific Northwest, and some secret spices that we would love to tell you about; but are unable to do so. This combination results in a clean, crisp, and refreshingly unique hand-crafted experience. Hoppy Brewing Company has never used any artificial preservatives, flavors, or colors in any of its ales. The Hoppy label is your guarantee of purity."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,39,1
+pennichuck_brewing_company-feuerwehrmann_schwarzbier,0,0,244981825536,"{""name"":""Feuerwehrmann Schwarzbier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,4,1
+rahr_sons_brewing_company-bourbon_barrel_aged_winter_warmer,0,0,244982808577,"{""name"":""Bourbon Barrel Aged Winter Warmer"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a special edition of Rahr's Winter Warmer. This fine English ale has been aged in freshly emptied Kentucky oak whisky barrels. The barrel aging has given this already big ale a beautiful whiskey nose along with notes of vanilla and oak. A perfect ale for sipping around a winter fire."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,6,1
+flying_bison_brewing-sky_pilot_scotch_ale,0,0,244629700608,"{""name"":""Sky Pilot Scotch Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""With a coppery-amber color and a full malty body with flavors of nuts and toffee. The English hops lend enough “spice” to leave a very drinkable finish to this comfort food of a beer. Available on draft from November to May."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,54,1
+unibroue-blanche_de_chambly,0,0,245116370944,"{""name"":""Blanche de Chambly"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""(White of Chambly) was the first bottle\r\nrefermented ale produced by Unibroue. It is\r\nbrewed from a blend of pale barley malt,\r\nwheat malt and unmalted wheat, to which\r\nwe blend selected spices and hops.\r\n \r\nBlanche de Chambly is only partially filtered,\r\nretaining its natural cloud of yeast that is\r\ncharacteristic of the original white ales\r\nbrewed during the Middle Ages.\r\n\r\nWe recommend this remarkably refreshing"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,42,1
+greenshields_brewery_and_pub-stout,0,0,244740718593,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greenshields_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,16,1
+kuhnhenn_brewing-120_shilling_scotch_ale,0,0,244740456449,"{""name"":""120 Shilling Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kuhnhenn_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,15,1
+kentucky_hemp_beer_company,0,0,244739473409,"{""name"":""Kentucky Hemp Beer Company"",""city"":""Lexington"",""state"":""Kentucky"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.0317,""lon"":-84.4951}}",1,13,1
+rail_house_restaurant_and_brewpub-raspberry_pilsner,0,0,244997619712,"{""name"":""Raspberry Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+tui_brewery,0,0,245118402560,"{""name"":""Tui Brewery"",""city"":""Mangatainoka"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":""64-(06)-3767549"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""State Highway 2""]}",1,47,1
+dockside_brewing,0,0,244619345920,"{""name"":""Dockside Brewing"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-685-7070"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1253 Johnston Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.2698,""lon"":-123.132}}",1,31,1
+heavenly_daze_brewery_and_grill-heavenly_hefeweizen,0,0,244749500416,"{""name"":""Heavenly Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+logjam_microbrewery-swede_saw_red_ale,0,0,244860911616,"{""name"":""Swede Saw Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""logjam_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+great_lakes_brewing,0,0,244747468801,"{""name"":""Great Lakes Brewing"",""city"":""Cleveland"",""state"":""Ohio"",""code"":""44113"",""country"":""United States"",""phone"":""1-216-771-4404"",""website"":""http://www.greatlakesbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2516 Market Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.4844,""lon"":-81.7042}}",1,33,1
+traffic_jam_and_snug,0,0,245117157376,"{""name"":""Traffic Jam and Snug"",""city"":""Detroit"",""state"":""Michigan"",""code"":""48201"",""country"":""United States"",""phone"":""313-831-9470"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4268 Second Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.351,""lon"":-83.0665}}",1,44,1
+brouwerij_der_sint_benedictusabdij_de_achelse_kluis-achel_bruin_8,0,0,244481720322,"{""name"":""Achel Bruin 8°"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_der_sint_benedictusabdij_de_achelse_kluis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,19,1
+taylor_brewing-dark_satin,0,0,245116764161,"{""name"":""Dark Satin"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,43,1
+brouwerij_huyghe-duinen_dubbel,0,0,244481196032,"{""name"":""Duinen Dubbel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_huyghe"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+left_hand_brewing_company-snow_bound_winter_ale,0,0,244745961473,"{""name"":""Snow Bound Winter Ale"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+rahr_sons_brewing_company-buffalo_butt,0,0,244982480897,"{""name"":""Buffalo Butt"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Rahr's Buffalo Butt is a smooth, medium-bodied amber lager. Notes of caramel with a sound malt character. Nice hop finish, it's as smooth as a baby buffalo's...!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,5,1
+the_alchemist-holy_moly,0,0,245098938368,"{""name"":""Holy Moly"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,3,1
+green_mountain_beverage-woodchuck_dark_and_dry_draft_cider,0,0,244756250625,"{""name"":""Woodchuck Dark and Dry Draft Cider"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mountain_beverage"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,55,1
+lake_superior_brewing-sir_duluth_oatmeal_stout,0,0,244755529728,"{""name"":""Sir Duluth Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_superior_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,52,1
+john_martin_sa-martin_s_pale_ale,0,0,244738162688,"{""name"":""Martin's Pale Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_martin_sa"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,10,1
+brouwerij_de_dolle_brouwers-arabier,0,0,244494958593,"{""name"":""Arabier"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_de_dolle_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""An arabier is a pure malt beer 8°vol/alc brewed with flower Nugget-hops from Poperinge. It has the special dry-hopping taste and aroma, so appreciated by beer lovers all over the world. It is one of the two main beers from De Dolle Brouwers throughout the year. Aging time is limited due to the fact that hop bitterness is declining with the time. Store arabier cool and dark and serve cool at 10°C. Cheers!"",""style"":""Belgian-Style Pale Strong Ale"",""category"":""Belgian and French Ale""}",1,49,1
+elk_grove_brewery_restaurant,0,0,244611547137,"{""name"":""Elk Grove Brewery & Restaurant"",""city"":""Elk Grove"",""state"":""California"",""code"":""95624"",""country"":""United States"",""phone"":""1-916-685-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9085 Elk Grove Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.4093,""lon"":-121.363}}",1,12,1
+c_b_potts_of_cheyenne,0,0,244498366466,"{""name"":""C.B. & Potts of Cheyenne"",""city"":""Cheyenne"",""state"":""Wyoming"",""code"":""82001"",""country"":""United States"",""phone"":""1-307-632-8636"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1650 Dell Range Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.1607,""lon"":-104.802}}",1,57,1
+steinfels_back_brau,0,0,245097562112,"{""name"":""Steinfels Back & Brau"",""city"":""Zrich"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.369,""lon"":8.538}}",1,1,1
+full_sail_brewing_1-ltd_02_lager,0,0,244631142400,"{""name"":""LTD 02 Lager"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""full_sail_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,58,1
+keg_microbrewery_restaurant-wheat,0,0,244738621442,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""keg_microbrewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,11,1
+wilmington_brewing,0,0,245750366208,"{""name"":""Wilmington Brewing"",""city"":""Wilmington"",""state"":""North Carolina"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":34.2257,""lon"":-77.9447}}",1,46,1
+the_bruery-saison_rue,0,0,245115518976,"{""name"":""Saison Rue"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Saison Rue is an unfiltered, bottle conditioned, Belgian/French-style farmhouse ale. This is a beer of subtlety and complexity, with malted rye, spicy, fruity yeast notes, biscuit-like malt backbone, and a slight citrus hop character. With age, this beer will dry out and will become more complex with rustic notes of leather and earth from the contribution of a wild yeast strain. Being a Saison, Saison Rue is ambiguous unto itself as it is a different beer when fresh and when aged. We hope you enjoy it in all of its incarnations."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,40,1
+coors_brewing_golden_brewery-honey_moon_summer_ale,0,0,244488273921,"{""name"":""Honey Moon Summer Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coors_brewing_golden_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Gold Medal-winning Honey Moon Summer Ale is a classic summer ale made even better with real clover honey, fresh orange peel and both pale and white wheat malts.  Proff that brewing the perfect summer ale is a true art."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,34,1
+coeur_d_alene_brewing_company-huckleberry_ale,0,0,244488732672,"{""name"":""Huckleberry Ale"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coeur_d_alene_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,35,1
+flying_dog_brewery-doggie_style_ale,0,0,244622491648,"{""name"":""Doggie Style Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+mudshark_brewing-skyline_stout,0,0,244860715008,"{""name"":""Skyline Stout"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mudshark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Watch Your Pint Cascade From Brown to Black, As This Chocolaty Settles, Creamy, Dark, Not Too Bitter Finish""}",1,8,1
+limburg_beer_company-witbier,0,0,244859994112,"{""name"":""Witbier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""limburg_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+hop_back_brewery-pickled_santa,0,0,244739866624,"{""name"":""Pickled Santa"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hop_back_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+george_gale_company,0,0,244631863297,"{""name"":""George Gale & Company"",""city"":""Portsmouth"",""state"":""Hampshire"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.7989,""lon"":-1.0912}}",1,59,1
+rock_bottom_restaurant_brewery_minneapolis,0,0,244981235712,"{""name"":""Rock Bottom Restaurant & Brewery - Minneapolis"",""city"":""Minneapolis"",""state"":""Minnesota"",""code"":""55402"",""country"":""United States"",""phone"":""1-612-332-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""800 LaSalle Plaza""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.9765,""lon"":-93.2747}}",1,2,1
+redhook_ale_brewery-esb,0,0,245000568834,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+six_rivers_brewery-fat_bastard_barleywine_discontinued,0,0,244980711424,"{""name"":""Fat Bastard Barleywine (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""six_rivers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+marine_pub_brewhouse-premium_gold,0,0,244879851521,"{""name"":""Premium Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marine_pub_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+bull_bush_pub_brewery-kolsch,0,0,244495613953,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bull_bush_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+flyers_restraunt_and_brewery,0,0,244613840896,"{""name"":""Flyers Restraunt and Brewery"",""city"":""Oak Harbor"",""state"":""Washington"",""code"":""98277"",""country"":""United States"",""phone"":""360.675.5858"",""website"":""http://www.eatatflyers.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""32295 State Route 20""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.2992,""lon"":-122.652}}",1,17,1
+hops_grillhouse_brewery_cherry_creek-hoptoberfest,0,0,244750221313,"{""name"":""Hoptoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_grillhouse_brewery_cherry_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,39,1
+portland_brewing-benchmark_old_ale,0,0,244981891072,"{""name"":""Benchmark Old Ale"",""abv"":9.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""portland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,4,1
+river_west_brewing-windy_city_pilsner,0,0,244982874112,"{""name"":""Windy City Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,6,1
+frontwaters_restaurant_and_brewing-port_clinton_porter,0,0,244629700609,"{""name"":""Port Clinton Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""frontwaters_restaurant_and_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,54,1
+voodoo_brewing_co_llc-white_magick_of_the_sun,0,0,245749645312,"{""name"":""White Magick of the Sun"",""abv"":6.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""This Wheat ale is made with a little Voodoo Twist. We use our house Belgian Ale yeast and add the average unmalted wheat, wheat, barley,raw oats, malted rye and just add more of each. Hopped evenly and spiced with coriander, bitter and sweet orange peel, juniper berries, 12 varieties of peppercorns,lemon grass and caraway. About 6.75% alc by vol. \r\n\r\nBottle Conditioned and Refermented.  NOT A WIT BIER!!! Just stuff we like in beer that goes great with food. \r\n\r\nThis beer is to be the answer to those hot summer days. Blows away carbonated water!!!!!"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,42,1
+harmon_brewing_company-point_defiance_ipa,0,0,244740718594,"{""name"":""Point Defiance IPA"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harmon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Four types of malted barley, including a specially roasted Belgium barley make up the grain bill. Centennial, Sterling, and Amarillo hops provide the big hoppy flavor. Double dry-hopped, once with raw Centennial hops and once with raw Amarillo hops present this beer's huge hop aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,16,1
+kulmbacher_brauerei_ag-eku_pils,0,0,244740456450,"{""name"":""EKU Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+labatt_ontario_breweries-labatt_ice,0,0,244739538944,"{""name"":""Labatt Ice"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Labatt Ice, introduced in 1993, was the world’s first Ice-Brewed™ beer and the most successful new brand introduction in Canadian brewing history. Labatt Ice is a fully fermented beer that is allowed to mature at cold temperatures. Labatt Ice uses selected North American hops to complement its smooth, full flavour."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+red_oak_brewery-battlefield_bock,0,0,244997619713,"{""name"":""Battlefield Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_oak_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Battlefield Bock is a smooth and creamy Bavarian Style Bock Lager. It is brewed with our proprietary blend of Bavarian Dark Roasted Malts giving it a distinct taste with hints of coffee and chocolate. We add Noble Czech Saaz Hops to balance the flavor of this rich full bodied lager.  Battlefield Bock is slow cold aged for a minimum of 8 weeks."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,41,1
+twin_rivers_brewing-saison,0,0,245118402561,"{""name"":""Saison"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+dogfish_head_craft_brewery-shelter_pale_ale,0,0,244619411456,"{""name"":""Shelter Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our original brew and our most approachable beer. It's brewed with a premium barley and whole-leaf Glacial & Warrior hops. Our Shelter Pale Ale has a fine malt backbone and a slightly nutty flavor. A versatile, quaffable beer. The Shelter Pale Ale is available exclusively in the Mid-Atlantic region."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+herkimer_pub_brewery-high_point_dunkel,0,0,244749500417,"{""name"":""High Point Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""herkimer_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+mad_anthony_brewing-big_daddy_brown,0,0,244860977152,"{""name"":""Big Daddy Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,9,1
+green_bay_brewing-hinterland_mild_cask_ale,0,0,244747468802,"{""name"":""Hinterland Mild Cask Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,33,1
+two_brothers_brewing-the_bitter_end_pale_ale,0,0,245117157377,"{""name"":""The Bitter End Pale Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Very drinkable light golden ale.  Extremely refreshing hop finish"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,44,1
+browar_warka,0,0,244481785856,"{""name"":""Browar Warka"",""city"":""Warka"",""state"":"""",""code"":"""",""country"":""Poland"",""phone"":""+48(0-48) 666 11 11"",""website"":""http://www.warka.com.pl/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""ul. Gośniewska 65""]}",1,19,1
+terrapin_beer_company-india_style_brown_ale,0,0,245116829696,"{""name"":""India Style Brown Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Terrapin India Style Brown Ale is a head on collision between a hoppy, west coast IPA and a complex, malty brown ale. Brewed with 5 varieties of hops and 7 different malts, this hybrid style represents the best of both worlds."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,43,1
+brouwerij_rodenbach-rodenbach,0,0,244481196033,"{""name"":""Rodenbach"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_rodenbach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+maclay_and_co-wallace,0,0,244868513792,"{""name"":""Wallace"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maclay_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+revolution_brewing_llc-iron_fist_pale_ale,0,0,244982480898,"{""name"":""Iron Fist Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""revolution_brewing_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""An amber pale ale dry hopped with a blend of American hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,5,1
+the_blind_bat_brewery_llc-harborfields_hefeweizen,0,0,245098938369,"{""name"":""Harborfields HefeWeizen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_blind_bat_brewery_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Sometimes it's good to keep it simple. \r\n\r\nHarborfields HefeWeizen is modeled after the German classic, but meant to be available fresh (like you would enjoy if you were in Germany). Shipping over long distances is not always a friend to beer. \r\n\r\nNamed for the Centerport-Greenlawn area of Long Island that is home to the Blind Bat Brewery, Harborfields Hefeweizen goes great with fish, chicken, or a summer salad. Some even like it with brunch! (Please enjoy your waffles responsibly.)"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,3,1
+grizzly_bay_brewing-weizen,0,0,244756316160,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grizzly_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+lakefront_brewery-holiday_spice_lager_beer,0,0,244755529729,"{""name"":""Holiday Spice Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+kaiserdom_privatbrauerei_bamberg,0,0,244738162689,"{""name"":""Kaiserdom Privatbrauerei Bamberg"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-60450"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Breitckerstrae 9""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.9043,""lon"":10.8524}}",1,10,1
+brouwerij_huyghe-delirium_nocturnum,0,0,244494958594,"{""name"":""Delirium Nocturnum"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_huyghe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,49,1
+elysian_brewing_tangletown-warminster_special_bitter,0,0,244611612672,"{""name"":""Warminster Special Bitter"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elysian_brewing_tangletown"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+capital_brewery-capital_bavarian_lager,0,0,244498432000,"{""name"":""Capital Bavarian Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Munich Helles style Lager""}",1,57,1
+stone_brewing_co-double_bastard_ale,0,0,245097562113,"{""name"":""Double Bastard Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,1,1
+gatz_brauhaus-alt,0,0,244631142401,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gatz_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,58,1
+kiuchi_shuzou_goushi_kaisya,0,0,244738686976,"{""name"":""Kiuchi Shuzou Goushi Kaisya"",""city"":""Ibaraki"",""state"":""Kanto"",""code"":"""",""country"":""Japan"",""phone"":""81-029-298-0105"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1257, Kounsosu""]}",1,11,1
+yaletown_brewing-yippee_ipa,0,0,245750366209,"{""name"":""Yippee IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yaletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,46,1
+thirsty_dog_brewing-nut_brown_ale,0,0,245115518977,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,40,1
+court_avenue_brewing-topping_pale_ale,0,0,244488273922,"{""name"":""Topping Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""court_avenue_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,34,1
+deschutes_brewery-bachelor_bitter,0,0,244621246464,"{""name"":""Bachelor Bitter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deschutes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""\""The Traditional British Pint\"" lives on at Deschutes Brewery & Public House.  One of the original three packaged beers, it is still available year-round, but only at our pub.  Coppery in color and robust in flavor, Bachelor Bitter will leave your taste buds humming. Galena, Willamette and Kent Golding hops create fantastic hop bitterness, aroma and flavor.\r\n\r\nBachelor Bitter also kicked off the Bond Street Series that launched in April 2005.  The Bond Street Series is a specialty line of beers available in 22-ounce bottles."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,35,1
+four_peaks_brewing-the_raj_india_pale_ale,0,0,244622491649,"{""name"":""The Raj India Pale Ale"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong India Pale Ale that is marked by intense hop flavor and high hop bitterness. This style of beer needed the high hop and alcohol to survive the trip around Africa. Medium to light body and very bitter. \r\n\r\nAlcohol content approximately 6.9% by volume (ALWAYS ON TAP!!)"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,37,1
+nebraska_brewing_company-red_sled_winter_ale,0,0,244860715009,"{""name"":""Red Sled Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+loaf_and_stein_brewing-nut_brown,0,0,244859994113,"{""name"":""Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""loaf_and_stein_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+iron_springs_pub_brewery,0,0,244739866625,"{""name"":""Iron Springs Pub & Brewery"",""city"":""Fairfax"",""state"":""California"",""code"":""94930"",""country"":""United States"",""phone"":""1-415-485-1005"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""765 Center Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.986,""lon"":-122.584}}",1,14,1
+gray_brewing-pre_prohibition_lager,0,0,244757757952,"{""name"":""Pre-Prohibition Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+rocky_river_brewing-artisan_saison,0,0,244981235713,"{""name"":""Artisan Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rocky_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+river_horse_brewing_company-river_horse_lager,0,0,245000568835,"{""name"":""River Horse Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_horse_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""We mill the choicest two row barley malt in our 100 year old mill room for this all natural, unfiltered Lager. Lightly hopped, fermented slowly. River Horse Lager gets plenty of quality time with us before we pass it on to you."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+slab_city_brewing-high_noon_wheat_beer,0,0,244980711425,"{""name"":""High Noon Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,0,1
+mash_house_restaurant_and_brewery,0,0,244879917056,"{""name"":""Mash House Restaurant and Brewery"",""city"":""Fayetteville"",""state"":""North Carolina"",""code"":""28303"",""country"":""United States"",""phone"":""1-910-867-9223"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4150 Sycamore Dairy Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":35.0707,""lon"":-78.9545}}",1,56,1
+bullfrog_brewery-hands_off_maibock,0,0,244495613954,"{""name"":""Hands Off Maibock"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""bullfrog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A springtime favorite, this traditional German Maibock (my-bock) is golden in color with a rich maltiness and a long, spicy finish."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,50,1
+flying_dog_brewery-heller_hound_bock_beer,0,0,244613840897,"{""name"":""Heller Hound Bock Beer"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,17,1
+hp_bulmer-woodpecker,0,0,244750221314,"{""name"":""Woodpecker"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hp_bulmer"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+privatbrauerei_frankenheim-alt,0,0,244981891073,"{""name"":""Alt"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_frankenheim"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,4,1
+rock_bottom_restaurant_brewery_minneapolis-itasca_extra_pale_ale,0,0,244982874113,"{""name"":""Itasca Extra Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,6,1
+great_bear_brewing-pioneer_peak_porter,0,0,244755857408,"{""name"":""Pioneer Peak Porter"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_bear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,54,1
+wdi_bru_huus,0,0,245749645313,"{""name"":""Wdi-Bru-Huus"",""city"":""Wdenswil"",""state"":"""",""code"":"""",""country"":""Switzerland"",""phone"":""41-01-783-93-92"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Florhofstrasse 13""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.2311,""lon"":8.6691}}",1,42,1
+heineken_international-premium_light_lager_beer,0,0,244740784128,"{""name"":""Premium Light Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heineken_international"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+kulmbacher_brauerei_ag-premium_pils_edelherb,0,0,244740521984,"{""name"":""Premium Pils Edelherb"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+lagunitas_brewing_company-sirius,0,0,244739538945,"{""name"":""Sirius"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,13,1
+rogue_ales-tracktown_ipa,0,0,244997685248,"{""name"":""Tracktown IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Offering a hop-heads paradise, this unfiltered Northwest-Style India Pale Ale introduces a big floral hop character to the aroma, flavor and finish. Hops, Hops, Hops from front to back but nicely offset with a malty richness that prevents this ale from being overbearing. Tracktown is made from 100% Floor Malted Maris Otter, 100% Northwest Amarillo Hops, Free Range Coastal Water, and absolutely No Chemicals, Additives, or Preservatives."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,41,1
+uinta_brewing_compnay-king_s_peak_porter,0,0,245118402562,"{""name"":""King's Peak Porter"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""uinta_brewing_compnay"",""updated"":""2010-07-22 20:00:20"",""description"":""King's Peak Porter is deep mahogany in color and has a full-bodied malty flavor. Hints of chocolate malt are easily detectable.\r\n\r\nTopped with a tan creamy head, this beer has a definite hop character that nicely balances its mild bitterness. \r\n\r\nKing's Peak is the highest point in the state of Utah at 13,528 feet, located in northeastern Utah in the Uinta Mountains."",""style"":""Porter"",""category"":""Irish Ale""}",1,47,1
+dublin_brewing-1798_revolution,0,0,244619411457,"{""name"":""1798 Revolution"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dublin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,31,1
+hofbru_kaltenhausen_salzachtal,0,0,244749565952,"{""name"":""Hofbru Kaltenhausen Salzachtal"",""city"":""Hallein"",""state"":"""",""code"":"""",""country"":""Austria"",""phone"":""43-0-62-45/795-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Salzachtal Bundesstrae Nord 37""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6942,""lon"":13.0784}}",1,38,1
+maisel_bru-eine_bamberger_weisse_hell,0,0,244860977153,"{""name"":""Eine Bamberger Weisse Hell"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maisel_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,9,1
+grumpy_troll_restaurant_and_brewery-how_now,0,0,244747534336,"{""name"":""How Now"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,33,1
+valley_brewing_company-fat_city_ale,0,0,245117222912,"{""name"":""Fat City Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Fat City Ale is the newest release from Valley Brewing Company. Fat City Ale is produced using only the finest 2-Row Barley and fresh Hops resulting in a crisp and refreshing flavor."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,44,1
+california_cider_company,0,0,244481785857,"{""name"":""California Cider Company"",""city"":""San Rafael"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.9735,""lon"":-122.531}}",1,19,1
+the_cambridge_house-abijah_rowe_ipa,0,0,245116895232,"{""name"":""Abijah Rowe IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_cambridge_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditional English India Pale Ale brewed with all English malt & hopped with a blend of English & American hops. High in strength, bitterness & aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+brouwerij_st_bernardus-watou_tripel,0,0,244481196034,"{""name"":""Watou Tripel"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_st_bernardus"",""updated"":""2010-07-22 20:00:20"",""description"":""The flavour of this beer is pleasantly soft and is characterized by a delicate bitterness where the balance between malt and hop is based upon a fruity orange taste with a straight fresh after taste (7.5% alcohol content)"",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,18,1
+magnolia_pub_and_brewery-stout_of_circumstance,0,0,244868579328,"{""name"":""Stout of Circumstance"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magnolia_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,28,1
+richbrau_brewing_company-richbrau_oatmeal_stout,0,0,244982546432,"{""name"":""Richbrau Oatmeal Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""If you don’t do dark beers, do yourself a favor and cancel that policy for this Oatmeal Stout. Keywords: Sweet Lusciousness; Roasty chocolate. Served on a nitro tap."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,5,1
+titletown_brewing-johnny_blood_mcnally_irish_red,0,0,245099003904,"{""name"":""Johnny \""Blood\"" McNally Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,3,1
+hair_of_the_dog_brewing-ruth,0,0,244756316161,"{""name"":""Ruth"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+long_trail_brewing_co-double_bag_ale,0,0,244878016512,"{""name"":""Double Bag Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This malty, full-bodied double alt is also know as \""Stickebier\"" - German slang for \""secret brew\"". Double Bag was originally offered only in our brewery taproom as a special treat to our visitors."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,52,1
+karl_strauss_brewery_gardens_sorrento_mesa-star_of_india_pale_ale,0,0,244738162690,"{""name"":""Star of India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+brouwerij_kerkom-winterkoninkse,0,0,244495024128,"{""name"":""Winterkoninkse"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_kerkom"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+far_west_ireland_brewing-three_threads_porter,0,0,244611612673,"{""name"":""Three Threads Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""far_west_ireland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,12,1
+carlyle_brewing-scottish_ale,0,0,244498432001,"{""name"":""Scottish Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carlyle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,57,1
+summit_brewing-india_pale_ale,0,0,245097562114,"{""name"":""India Pale Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""summit_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""First brewed with an extra dose of hops to help it survive the long journey from England to beer lovers in India, India Pale Ale is now brewed just for the pleasure of its distinctive hoppy flavor."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,1,1
+glacier_brewhouse,0,0,244631142402,"{""name"":""Glacier Brewhouse"",""city"":""Anchorage"",""state"":""Alaska"",""code"":""99501"",""country"":""United States"",""phone"":""(907) 274-2739"",""website"":""http://www.glacierbrewhouse.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""737 W. 5th Ave., Suite 110""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":61.2179,""lon"":-149.896}}",1,58,1
+la_jolla_brewing-blitzen,0,0,244738686977,"{""name"":""Blitzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+yazoo_brewing-hefeweizen,0,0,245750366210,"{""name"":""Hefeweizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yazoo_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An authentic example of a Bavarian Hefeweizen. “Hefe” means cloudy or yeasty and “weizen” means wheat. This beer is made with mostly wheat and uses a true Hefeweizen yeast that gives it a fruity, banana aroma with just a hint of cloves. The tart finish makes this the perfect summer beer.\r\n\r\nFood pairings: Almost anything goes well with Hefeweizen but it especially shines when paired with salads and omelets.\r\n\r\nOG: 12.0 Plato\r\nFG: 2.3 Plato\r\nIBUs: 13\r\nSRM: 3\r\n5.0% abv"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,46,1
+timmermans-timmermans_peche,0,0,245115518978,"{""name"":""Timmermans Pêche"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,40,1
+court_avenue_brewing,0,0,244488339456,"{""name"":""Court Avenue Brewing"",""city"":""Des Moines"",""state"":""Iowa"",""code"":""50309"",""country"":""United States"",""phone"":""1-515-282-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""309 Court Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.5855,""lon"":-93.621}}",1,34,1
+dick_s_brewing-best_bitter,0,0,244621312000,"{""name"":""Best Bitter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+fratellos_restaurant_and_brewery-nut_brown_ale,0,0,244622557184,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fratellos_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,37,1
+new_glarus_brewing_company-copper_kettle_weiss,0,0,244860715010,"{""name"":""Copper Kettle Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,8,1
+long_trail_brewing_co-traditional_ipa,0,0,244860059648,"{""name"":""Traditional IPA"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The first IPAs were unfiltered and featured extra hops and higher strength as a preservative for the long trip from England to the colony of India. Our Traditional IPA is naturally carbonated, dry-hopped & unfiltered like the old days."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+jolly_pumpkin_artisan_ales-fuego_del_otono,0,0,244739866626,"{""name"":""Fuego del Otono"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""To catch a bit of soft radiance in each bottle, we wait for fall colors to begin their bright and fleeting glow before brewing this wonderful ale under their autumn fire. Gentle amber malt blend smooth caramel notes, gently lapping against a shore of distant forgotten spice. A beer to sip, contemplate and enjoy."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,14,1
+great_divide_brewing-hercules_double_ipa,0,0,244757757953,"{""name"":""Hercules Double IPA"",""abv"":9.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Hoppier, maltier and with more alcohol than a standard IPA, Hercules Double IPA definitely is not for the faint of heart. Hercules Double IPA is, however, an elixir fit for the gods. A brash but creamy wonder, Hercules pours a deep orange-coppery color, forming substantial lace in the glass. Hercules Double IPA delivers a huge amount of piney, floral, and citrusy hop aroma and flavor from start to finish. A hefty backbone of nutty, toffee-like malt character balances Hercules’ aggressive, punchy hop profile."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+rogue_ales-dry_hopped_st_rogue_red_ale,0,0,244981235714,"{""name"":""Dry Hopped St. Rogue Red Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""The Malt Advocate described Saint Rogue Red as \""An ale with great character and plenty of hops to satisfy. Full aromatic punch of caramel, citrus fruit and melon, with underlying fresh earth tones. Sweet caramel notes up front are quickly taken over by an array of fruit and hops bitterness that lingers into the night. A more adventurous ale than most.\""\r\n\r\nReddish copper in color, a roasty malt flavor with a hoppy sprucy finish. Saint Rogue Red is made with two-row Harrington, Klages and Munich malts, along with Hugh Baird 30-37, 13-17 Carastan, and Crystal 70-80 malts (44.4% speciality grains .39 lbs grain per bottle); Chinook and Centennial hops. Saint Rogue Red is available in a 22-ounce bottle, 12-ounce 6-pack (new for 2005), and on draft. Saint Rogue Red Dry Hopped-a draft only variation with raw Centennial hops added to the keg, giving the beer an increased hop finish and intense hop aroma."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,2,1
+river_west_brewing,0,0,245000634368,"{""name"":""River West Brewing"",""city"":""Chicago"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.85,""lon"":-87.6501}}",1,48,1
+st_austell_brewery-hsd_hicks_special_draught,0,0,245097365504,"{""name"":""HSD Hicks Special Draught"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_austell_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""St Austell’s most legendary ale, HSD is fullbodied strong and Cornish, brimming with a kaleidoscope of flavours. Brewed with plenty of malt and lashings of English Fuggles and Golding hops, HSD is truly a classic ale of considerable depth and complexity. The real ale alternative to a well rounded premium red wine and simply superb with steaks and other red meat dishes."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,0,1
+mcmenamins_mill_creek-india_pale_ale,0,0,244879917057,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,56,1
+capital_brewery-capital_weizen_doppelbock,0,0,244495679488,"{""name"":""Capital Weizen Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,50,1
+flying_fish_brewing_company-hopfish_ipa,0,0,244613906432,"{""name"":""HopFish IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""At the request of you hopheads, we produced this I.P.A. with a deep golden color, plenty of hop bitterness balanced by malt sweetness. Because of the extensive dry hopping, there's a floral and citrus hop finish. It's then lightly filtered to maintain the appropriate body and flavor. The beer features a combination of American, English and German malts to balance the large amount of hops. The HopFish also uses three hop varieties at five different times and has been dry-hopped for two weeks with 22lbs of Nugget whole leaf hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+idaho_brewing,0,0,244750286848,"{""name"":""Idaho Brewing"",""city"":""Idaho Falls"",""state"":""Idaho"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.4666,""lon"":-112.034}}",1,39,1
+pug_ryan_s_steakhouse_and_brewery-pallavicini_pilsner,0,0,244981956608,"{""name"":""Pallavicini Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pug_ryan_s_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+rogue_ales-hazelnut_brown_nectar,0,0,244982939648,"{""name"":""Hazelnut Brown Nectar"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""HazelNut Brown Nectar is a nutty twist to a traditional European Brown Ale. Dark brown in color with a hazelnut aroma, a rich nutty flavor and a smooth malty finish. Dedicated to the homebrewer in each of us--the homebrewer who inspired this creation is Chris Studach, a friend of Rogues resident wizard John Maier, who added a Northwest twist to the classic style by adding hazelnuts for the host homebrew at the 1993 American Homebrewers Association convention. Chris put the nut in nut brown!\r\n\r\nHazelnut Brown Nectar Ale is a blend of Great Western 2-row Pale, Munich, Hugh Baird Brown, Crystal 80 and Crystal 135, Carastan, and Beeston Pale Chocolate malts; hazelnut extract; Perle and Saaz hops. HazelNut Brown Nectar is available in a 22-ounce bottle, a special commemorative 3-litre bottle with ceramic swing-top, and on draft."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,6,1
+great_dane_pub_and_brewing_2-foxy_brown,0,0,244755922944,"{""name"":""Foxy Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,54,1
+weyerbacher_brewing_company-golf,0,0,245749710848,"{""name"":""Golf"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Brewer's Select Series, Golf is a fest-weisse hybrid or 'Festeweizen.' It will weigh in at 5.0% and is made with Munich, Wheat, and CaraVienna malts and Spalt hops."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,42,1
+high_falls_brewing-dundee_wheat_beer,0,0,244740784129,"{""name"":""Dundee Wheat Beer"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Senator Joseph McCarthy. The Hollow Earth Society. Members of the Spanish Inquisition. All convinced they were blessed with the gift of clarity. And proof that clarity might be overrated. \r\n\r\nSometimes, being unclear—and a little flexible—is a good thing. Like when you are looking for the perfect refreshment. Dundee Wheat Beer combines wheat and yeast into a refreshing hefeweizen-style brew. Unfiltered, so it is slightly cloudy and pleasantly unclear. \r\n\r\nSo the next time you’re convinced you’re right about what you’ve been drinking, give a little “unclarity” a try.\r\n\r\nAn American-style, unfiltered wheat beer. Pale straw in color with a light cloudiness from carefully selected wheat and yeast. Pleasant spicy malt aroma and a crisp hop finish."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,16,1
+labatt_ontario_breweries-canadian_ale,0,0,244740521985,"{""name"":""Canadian Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,15,1
+legacy_brewing_co,0,0,244739604480,"{""name"":""Legacy Brewing Co."",""city"":""Reading"",""state"":""Pennsylvania"",""code"":""19602"",""country"":""United States"",""phone"":""(610) 376-9996"",""website"":""http://www.legacybrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Legacy Brewing Co. is committed to handcrafting unique, high quality beer by employing brewing techniques learned from European and American brewers. The complexity of flavors comes from a combination of high quality imported malts and our hopping methods which includes the use of whole flower hops. The Legacy team includes a creative collection of brewers, engineers, a microbiologist and our friends in the arts community; all with a passion for innovative products. Legacy...we brew pure pleasure!"",""address"":[""545 Canal Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.3256,""lon"":-75.9283}}",1,13,1
+s_a_damm-estrella_levante_clasica,0,0,244997685249,"{""name"":""Estrella Levante Clasica"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""s_a_damm"",""updated"":""2011-07-14 08:52:30"",""description"":"""",""style"":""Baltic-Style Porter"",""category"":""Other Lager""}",1,41,1
+upstream_brewing_old_market-grand_cru,0,0,245118402563,"{""name"":""Grand Cru"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+dubuque_brewing_and_bottling-wild_boar_wild_wheat,0,0,244619476992,"{""name"":""Wild Boar Wild Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dubuque_brewing_and_bottling"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+hoffbrau_steaks_brewery_2,0,0,244749565953,"{""name"":""Hoffbrau Steaks Brewery #2"",""city"":""Dallas"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.803,""lon"":-96.7699}}",1,38,1
+midnight_sun_brewing_co-mayhem_belgian_style_double_ipa,0,0,244861042688,"{""name"":""Mayhem Belgian-style Double IPA"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Chaotic yet hypnotic, Mayhem is a deliberate Double IPA, brewed and conditioned with a special Belgian yeast that contributes complexity and spice. Abundant American hops offer grapefruit, pine, must and mint, which play off the fullness and sweetness of pale malts then provide a biting yet enticing finish.\r\n\r\nMayhem Double IPA accents the complex spice combinations found in Thai, Indian, Cajun, Morrocan, Mexican and Southwest American cuisines as well as BBQ marinades, dry rubs and sauces.\r\n\r\nMayhem creates MAYHEM."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,9,1
+hops_grillhouse_brewery_cherry_creek,0,0,244747534337,"{""name"":""Hops Grillhouse & Brewery - Cherry Creek"",""city"":""Denver"",""state"":""Colorado"",""code"":""80206"",""country"":""United States"",""phone"":""1-303-377-0909"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""149 Steele Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7187,""lon"":-104.95}}",1,33,1
+victory_brewing-brandywine_valley_lager,0,0,245117222913,"{""name"":""Brandywine Valley Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,44,1
+callahan_s_pub_and_brewery,0,0,244481785858,"{""name"":""Callahan's Pub and Brewery"",""city"":""San Diego"",""state"":""California"",""code"":""92126"",""country"":""United States"",""phone"":""1-858-578-7892"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""8280-A Mira Mesa Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.9147,""lon"":-117.146}}",1,19,1
+valley_brewing_company-valley_berry_wheat,0,0,245116895233,"{""name"":""Valley Berry Wheat"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Valley Berry Wheat is a fruit beer produced using pure fruit extracts of Raspberry, Wildberry, Cherry and Blueberry. The beer has a wonderful fruity nose and a smooth clean finish."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,43,1
+brouwerij_van_steenberge-leute_bok_bier,0,0,244481261568,"{""name"":""Leute Bok Bier"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_van_steenberge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,18,1
+mcmullen_sons-ak_original_bitter,0,0,244868644864,"{""name"":""AK Original Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmullen_sons"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+rogue_ales-mogul_ale,0,0,244982546433,"{""name"":""Mogul Ale"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Mogul is a complex blend of 5 malts and 7 hops. This years Mogul (12/05) will only get better with time...its a hedonistic mouthful with layers of rich malt and tremendous bitterness. A quote from John \""more hops\"" Maier, \""Keep Warm, Drink Mogul ~ Prost!\"" This batch of Mogul was brewed with Pale, Munich, Dark caramunich, Melanoidin, and Amber malts. \r\nMoguls hops include Newport, Amarillo, Chinook, Horizon, Cascade, Centennial and Crystal...and Mogul (12/05) is dry-hopped with Amarillo and Centennial at the rate of 1 pound per barrel! Oh Hoppy Day!""}",1,5,1
+titletown_brewing-new_century_beer,0,0,245099003905,"{""name"":""New Century Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+hale_s_ales_3-pale_ale,0,0,244756381696,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+lost_coast_brewery-great_white_beer,0,0,244878082048,"{""name"":""Great White Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+laconner_brewing-india_pale_ale,0,0,244738228224,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""laconner_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+brouwerij_sterkens-white_ale,0,0,244495024129,"{""name"":""White Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""brouwerij_sterkens"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+first_coast_brewing,0,0,244611612674,"{""name"":""First Coast Brewing"",""city"":""Wilmington"",""state"":""North Carolina"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":34.2257,""lon"":-77.9447}}",1,12,1
+carolina_brewery-ipa,0,0,244498432002,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carolina_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,57,1
+the_alchemist-donovan_s_red,0,0,245097627648,"{""name"":""Donovan's Red"",""abv"":5.16,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""Named after Donovan's, a 19th century Irish restaurant in downtown Waterbury. This medium-bodied, red-colored ale has a nice hop flavor and aroma."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,1,1
+golden_pacific_brewing-golden_gate_amber_ale,0,0,244631207936,"{""name"":""Golden Gate Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+lagunitas_brewing_company-the_hairy_eyeball,0,0,244738752512,"{""name"":""The Hairy Eyeball"",""abv"":8.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+titletown_brewing-dousman_street_wheat,0,0,245115584512,"{""name"":""Dousman Street Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,40,1
+cucapa_brewing_company,0,0,244488339457,"{""name"":""Cucapa Brewing Company"",""city"":""Mexicali"",""state"":""Baja"",""code"":"""",""country"":""Mexico"",""phone"":"""",""website"":""http://www.cucapa.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Craft beer, just across the border."",""address"":[],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":31.7291,""lon"":-116.578}}",1,34,1
+dinkelacker_schwaben_bru,0,0,244621312001,"{""name"":""Dinkelacker-Schwaben Bru"",""city"":""Stuttgart"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)711-/-6481-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Tbinger Strae 46""]}",1,35,1
+gasthof_brauerei_zum_frohsinn-weizenbier,0,0,244622557185,"{""name"":""Weizenbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthof_brauerei_zum_frohsinn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,37,1
+new_glarus_brewing_company-hop_hearty_ipa,0,0,244860780544,"{""name"":""Hop Hearty IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+manayunk_brewery_and_restaurant-manayunk_lager,0,0,244860125184,"{""name"":""Manayunk Lager"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""In strict accordance with the German purity law of 1516, we present to you this annually brewed festbier. Traditionally brewed in March and stored deep in the caves of Germany, this beer was brought to the masses to celebrate in October. It is a Vienna-style lager with a bit more malt and hops making a malty but balanced beverage. Copper-orange in color, it sports a toasty malt backbone that wonderfully compliments itself with many of our menu items."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,7,1
+klosterbrauerei_weltenburg-hefe_weizen_dunkel,0,0,244739866627,"{""name"":""Hefe-Weizen Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_weltenburg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+green_flash_brewing-first_anniversary_ale,0,0,244757823488,"{""name"":""First Anniversary Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_flash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+ruppaner_brauerei-spezial_export,0,0,244981235715,"{""name"":""Spezial-Export"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+rogue_ales-chamomellow,0,0,245000634369,"{""name"":""Chamomellow"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Chamomellow is an herbal golden ale infused with chamomile, which provides an enticing floral aroma. Chamomile is one of the oldest garden herbs used by ancient Egyptians and other cultures to battle illness, promote calm and relieve anxiety, hence the name Chamomellow. Dedicated to Caleb McLoughlin, a revolutionary brewer who created this elixir at Rogues Issaquah Brewhouse and won a Gold medal in the Herbs & Spice category at the 2003 Great American Beer Festival.\r\n\r\nChamemollow is created from Northwest Harrington and Klages, and Maier Munich Malts (18% speciality grains, .19 lbs grain per bottle). Kent Golding and Cascade hops, and infused with Chamomile. Available in a limited edition 22-ounce bottles (originally as Test Batch 1 - Gold Medal Series), and on draft at Rogues six Public Houses."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+stone_brewing_co-old_guardian_barley_wine_2007,0,0,245097431040,"{""name"":""Old Guardian Barley Wine 2007"",""abv"":11.26,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+mendocino_brewing_hopland-yuletide_porter,0,0,244879982592,"{""name"":""Yuletide Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,56,1
+capital_city_brewing_company-amber_waves,0,0,244495679489,"{""name"":""Amber Waves"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A medium bodied west coast style amber ale.  This is aggressively hopped with Perle and Cascade hops, and is held together by its sweet malty center."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+fosters_tien_gang,0,0,244613906433,"{""name"":""Fosters Tien Gang"",""city"":""Thnh Pho Ho Ch Minh"",""state"":"""",""code"":"""",""country"":""Viet Nam"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Thnh Pho Ho Ch Minh""]}",1,17,1
+jinro_coors_brewing,0,0,244750286849,"{""name"":""Jinro Coors Brewing"",""city"":""Seoul"",""state"":"""",""code"":"""",""country"":""Korea, Republic of"",""phone"":""82-(0)431-279-4702"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Cheongwon Factory: 52, Joongsam-Ri, Hyundo-Myun""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.5665,""lon"":126.978}}",1,39,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-hefeweizen,0,0,244981956609,"{""name"":""HefeWeizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+ruppaner_brauerei-schimmele_hefe_pils,0,0,244982939649,"{""name"":""Schimmele Hefe Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+hair_of_the_dog_brewing-rose,0,0,244755922945,"{""name"":""Rose"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hair_of_the_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+wharf_rat-oliver_irish_red,0,0,245749710849,"{""name"":""Oliver Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wharf_rat"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,42,1
+htt_brauerei_bettenhuser,0,0,244740784130,"{""name"":""Htt-Brauerei Bettenhuser"",""city"":""Baunatal"",""state"":""Hessen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)561-/-492076"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Knallhtte""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.2615,""lon"":9.4494}}",1,16,1
+labatt_ontario_breweries-genuine_honey_lager,0,0,244740521986,"{""name"":""Genuine Honey Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Genuine Honey Lager was introduced in 2005 in response to consumer demand for honey lagers. Labatt Genuine Honey uses genuine, all-natural, 100% Canadian honey to give consumers a softer, smoother taste. This naturally-aged lager is brewed to the same uncompromising standards applied to every Labatt beer. Genuine Honey Lager is the real thing!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,15,1
+magic_hat-9,0,0,244862550016,"{""name"":""#9"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Not quite pale ale.  A beer cloaked in secrecy.  An ale whose mysterious unusual palate will swirl across your tongue and ask more questions than it answers.\r\n\r\nA sort of dry, crisp, fruity, refreshing, not-quite pale ale.  #9 is really impossible to describe because there's never been anything else quite like it.  Our secret ingredient introduces a most unusual aroma which is balanced with residual sweetness."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+sandlot_brewery_at_coors_field-oktoberfest,0,0,244997685250,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sandlot_brewery_at_coors_field"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,41,1
+vyturio_alaus_darykla-baltas_alus,0,0,245750431744,"{""name"":""Baltas Alus"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vyturio_alaus_darykla"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,47,1
+duclaw-bad_moon_porter,0,0,244619476993,"{""name"":""Bad Moon Porter"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duclaw"",""updated"":""2010-07-22 20:00:20"",""description"":""A complex, robust porter, Bad Moon is medium to full bodied with a slightly sweet, malty presence combined with hints of chocolate and coffee. This is a full-bodied beer that gets its chocolate and coffee-like flavors and color from the use of generous amounts of roasted malts. It has a smooth finish and a balanced hop character."",""style"":""Porter"",""category"":""Irish Ale""}",1,31,1
+hoppin_frog_brewery-frosted_frog_christmas_ale,0,0,244749565954,"{""name"":""Frosted Frog Christmas Ale"",""abv"":8.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The essence of Christmas is captured in this very bottle you are holding. Perfectly blended spices compliment Frosted Frog’s rich malt flavors, creating the ultimate Christmas experience. Celebrate the holidays as you savor this very special seasonal offering."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,38,1
+montana_brewing-billings_ipa,0,0,244861042689,"{""name"":""Billings IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,9,1
+ithaca_beer_company-apricot_wheat,0,0,244747534338,"{""name"":""Apricot Wheat"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our easy drinking wheat beer is light in color and body ... perfect for those looking for a lighter taste. The combination of wheat and barley give our Apricot Wheat a different malt character than any of our other ales. The hint of apricot gives this beer a fruity finish, making it a fun beer to drink."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,33,1
+victory_brewing-throwback_lager,0,0,245750104064,"{""name"":""Throwback Lager"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Crisp, lighter in body, yet still full flavored brew.  Before Prohibition, thirst quenching lagers were firm and substantial, and enjoyed in huge volumes. This recipe incorporates yeast from the C. Schmidt Brewery of Philadelphia and a small portion of brewer's corn to recreate an \""industrial\"" lager of the turn of the century. \r\n\r\nReleased April 6 to celebrate Prohibition's repeal 73 yrs. ago, Throwback Lager is a draft only release that should flow into June"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,44,1
+capital_brewery-blonde_doppelbock,0,0,244481851392,"{""name"":""Blonde Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,19,1
+wagner_valley_brewing-sled_dog_doppelbock,0,0,245749907456,"{""name"":""Sled Dog Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wagner_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,43,1
+caldera_brewing-pale_ale,0,0,244481261569,"{""name"":""Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""caldera_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Available in 12 oz. cans and kegs.  A West-Coast-style pale ale balancing plenty of hops with a malty backbone."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+meckatzer_lwenbru,0,0,244868644865,"{""name"":""Meckatzer Lwenbru"",""city"":""Heimenkirch"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8381-/-504-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Meckatz 10""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6308,""lon"":9.8889}}",1,28,1
+scottish_newcastle_breweries,0,0,244982546434,"{""name"":""Scottish & Newcastle Breweries"",""city"":""Newcastle-upon-Tyne"",""state"":""Northumberland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0191)-2325092"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Gallowgate""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.8918,""lon"":-76.7975}}",1,5,1
+trinity_brewing_company,0,0,245099069440,"{""name"":""Trinity Brewing Company"",""city"":""Colorado Springs"",""state"":""Colorado"",""code"":""80907"",""country"":""United States"",""phone"":""719-634-0029"",""website"":""http://trinitybrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1446 Garden of the Gods""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.8967,""lon"":-104.855}}",1,3,1
+hansa_bryggeri-pilsner,0,0,244756381697,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hansa_bryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+main_street_brewery,0,0,244878147584,"{""name"":""Main Street Brewery"",""city"":""Corona"",""state"":""California"",""code"":""92880"",""country"":""United States"",""phone"":""1-951-371-1471"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""300 North Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.8835,""lon"":-117.565}}",1,52,1
+latrobe_brewing-rolling_rock,0,0,244738228225,"{""name"":""Rolling Rock"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""latrobe_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,10,1
+capital_brewery-capital_special_pilsner,0,0,244495024130,"{""name"":""Capital Special Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,49,1
+flat_branch_pub_brewing-oil_change_oatmeal_stout,0,0,244611678208,"{""name"":""Oil Change Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flat_branch_pub_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Black as diesel oil, Oil Change is big in roasty chocolate flavors. A large amount of flaked oats gives this stout a velvety smoothness. Oil Change is nitrogen charged to give it a thick creamy head."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,12,1
+celis_brewery-dubbel_ale,0,0,244498497536,"{""name"":""Dubbel Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""celis_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+the_bruery-partridge_in_a_pear_tree,0,0,245097627649,"{""name"":""Partridge In A Pear Tree"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our holiday beer is a Belgian-style Dark Strong Ale, brewed with our brewery-made dark candi sugar, Munich and Vienna malts. Dark brown in color, fruity and complex with a rich malt backbone. This is a simple yet immensely complex beer meant to be savored and shared with friends and family."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,1,1
+goose_island_beer_company_fulton_street-demolition,0,0,244631273472,"{""name"":""Demolition"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+lift_bridge_brewery-harvestor_fresh_hop_ale,0,0,244738752513,"{""name"":""Harvestör Fresh Hop Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lift_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Constant addition of fresh Cascade and Willamette hops from Brad’s Stillwater hop garden during boil and fermentation process. Aromatic and caramel malts compliment the hop character for an incredibly balanced beer that celebrates the hop harvest without killing your tongue."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,11,1
+twin_ports_brewing-burntwood_black_ale,0,0,245115584513,"{""name"":""Burntwood Black Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_ports_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,40,1
+dirt_cheap_cigarettes_and_beer,0,0,244620787712,"{""name"":""Dirt Cheap Cigarettes and Beer"",""city"":""Fenton"",""state"":""Missouri"",""code"":""63026"",""country"":""United States"",""phone"":""1-636-343-9770"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""895 Bolger Court""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.5405,""lon"":-90.4607}}",1,34,1
+double_mountain_brewery_taproom-double_mountain_kolsch,0,0,244621377536,"{""name"":""Double Mountain Kolsch"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""double_mountain_brewery_taproom"",""updated"":""2010-07-22 20:00:20"",""description"":""In Cologne, Germany, many a brewery produces a light-bodied ale with a delicate fruitiness and rounded maltiness, attributable to the unique yeast strain commonly used. Our Kölsch is unfiltered and more generously hopped than its German cousin.""}",1,35,1
+goose_island_beer_company_clybourn-porter,0,0,244622557186,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,37,1
+new_glarus_brewing_company-imperial_stout,0,0,244860780545,"{""name"":""Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,8,1
+marquette_harbor_brewery_and_restaurant-plank_road_pale_ale,0,0,244860125185,"{""name"":""Plank Road Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marquette_harbor_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+kulmbacher_brauerei_ag-kapuziner_gold,0,0,244739932160,"{""name"":""Kapuziner Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,14,1
+half_moon_bay_brewing-old_princeton_landing_ipa,0,0,244757823489,"{""name"":""Old Princeton Landing IPA"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+sacramento_brewing_company-abbey_ipa,0,0,244981301248,"{""name"":""Abbey IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sacramento_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Belgian IPA, West Coast hops meet belgian yeast. Spicy, fruity and citrusy notes combine for an interesting fusion brew."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,2,1
+rogue_ales-yellow_snow_ipa,0,0,245000699904,"{""name"":""Yellow Snow IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Yellow Snow IPA was originally introduced for the 2000 Winter Olympics in Salt Lake City.\r\n\r\nYellow Snow is Rogue’s tribute to winter sports everywhere—downhill skiing, snowboarding, cross country, ice hockey, ice fishing, snowmobiling, and even curling. \r\n\r\nIt will be available November 1st in select states where mountains and snow can be found.\r\n\r\nPale golden in color with a hoppy fruity aroma. Big hop flavor up front complemented by medium body and hoppyness mid-pallet. Finishes with a characteristic lingering bitterness."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+stoudt_s_brewery-market_alley,0,0,245097431041,"{""name"":""Market Alley"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Made exclusively for the Lancaster Dispensing Company."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,0,1
+midnight_sun_brewing_co-big_slick_american_barleywine_ale,0,0,244879982593,"{""name"":""Big Slick American Barleywine Ale"",""abv"":11.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This kick ass American Barley Wine is all about hops —Nugget, Chinook, Simcoe and Centennial. And, yeah, LoTs of ‘em. OK…there’s a substantial malt base on which these juicy Pacific NW hops lie down and do their dirty work. Maybe that’s too much info…"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,56,1
+capital_city_brewing_company-st_adrian_s_alt,0,0,244495679490,"{""name"":""St. Adrian's Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,50,1
+freeminer_brewery,0,0,244613906434,"{""name"":""Freeminer Brewery"",""city"":""Cinderford"",""state"":""Gloucestershire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01594)-827989"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Whimsey Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.8325,""lon"":-2.5116}}",1,17,1
+jolly_pumpkin_artisan_ales-maracaibo_especial,0,0,244750286850,"{""name"":""Maracaibo Especial"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich brown ale inspired by the enigmatic monastic brews of Belgium, and the mysterious mist shrouded jungles of the tropics. Brewed with real cacao, and spiced with cinnamon and sweet orange peel for a sensual delight. A brew to be sipped, savored, and enjoyed!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+red_oak_brewery-red_oak_amber_lager,0,0,244981956610,"{""name"":""Red Oak Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_oak_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Red Oak Amber is a Munich Urtyp (Old Style) Lager. We begin the brewing process with custom kilned imported Munich Malt.  Red Oak is then hopped with Spalt Noble Hops imported from Bavaria, the oldest hop growing region in the world.  Before fermentation we add a yeast strain from Weihenstephen, the oldest brewery in the world, founded before 1040 AD. Weeks of aging gives Red Oak the smooth taste it is known for."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+saint_louis_brewery_schlafy_tap_room-coffee_stout,0,0,244982939650,"{""name"":""Coffee Stout"",""abv"":5.7,""ibu"":30.0,""srm"":47.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2011-02-07 14:29:21"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,6,1
+harvey_son_lewes-a_lecoq_imperial_extra_double_stout_1999,0,0,244755922946,"{""name"":""A. LeCoq Imperial Extra Double Stout 1999"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvey_son_lewes"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+widmer_brothers_brewing-drop_top_amber_ale,0,0,245749710850,"{""name"":""Drop Top Amber Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""widmer_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""A rich, flavorful Amber that's smooth and easy to drink. Drop Top is fermented by an American Ale yeast to produce beer with a clean flavor and fruity aroma. The velvet texture is from using Honey malt and a touch of milk sugar. The Alchemy bittering hops provide soft bitterness. Simcoe, a newly developed hop variety, adds unique hop flavor and aroma. 2004 GABF Gold Medal Award Winner\""\r\n-Widmer Brothers Brewing Company"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,42,1
+humboldt_brewing-gold_nectar,0,0,244740849664,"{""name"":""Gold Nectar"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+lafayette_brewing-bill_old_ale,0,0,244740521987,"{""name"":""Bill Old Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lafayette_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,15,1
+magnolia_pub_and_brewery-prescription_pale,0,0,244862615552,"{""name"":""Prescription Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magnolia_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+shipyard_brewing_portland-pugsley_s_signature_series_barley_wine_style_ale,0,0,244997750784,"{""name"":""Pugsley's Signature Series Barley Wine Style Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":""Barley Wine Style Ale is a big beer made with six different malts (Pale Ale, Crystal, Caramunich, Wheat, Chocolate and Roasted Barley) and balanced with a very full hop charge of Summit, Challenger and Fuggles hops. It is a deep reddish brown color with a complex fruity nose, a very full body, and an interesting balance between grains and hops which ends with a pleasing dry taste. To fully enjoy all the flavours, this ale is best drunk at 55 degrees Fahrenheit."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,41,1
+watney_brewery,0,0,245750497280,"{""name"":""Watney Brewery"",""city"":""London"",""state"":""London"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.5002,""lon"":-0.1262}}",1,47,1
+empyrean_brewing_company-fallen_angel_sweet_stout,0,0,244619542528,"{""name"":""Fallen Angel Sweet Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""empyrean_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,31,1
+hops_haven_brew_haus-pumpkin_ale,0,0,244749631488,"{""name"":""Pumpkin Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_haven_brew_haus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+montana_brewing-stillwater_rye,0,0,244861042690,"{""name"":""Stillwater Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+jever_brewery-jever_pilsener,0,0,244747599872,"{""name"":""Jever Pilsener"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jever_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A Norther German (Friesian) Pilsener that is cattegoristic of the style. It is a little more hoppy than Czech pilseners giving it a more herb (bitter?) flavor."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,33,1
+williams_brothers_brewing_company-grozet_gooseberry_and_wheat_ale,0,0,245750104065,"{""name"":""Grozet Gooseberry and Wheat Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""williams_brothers_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,44,1
+carolina_brewery-amber,0,0,244481851393,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carolina_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,19,1
+watch_city_brewing-hops_explosion_ipa,0,0,245749972992,"{""name"":""Hops Explosion IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""watch_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+caledonian_brewing,0,0,244481261570,"{""name"":""Caledonian Brewing"",""city"":""Edinburgh"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0131)-337-1286"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""42 Slateford Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":55.9358,""lon"":-3.2297}}",1,18,1
+mickey_s_brewing_co,0,0,244868644866,"{""name"":""Mickey's Brewing Co."",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.mickeys.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0389,""lon"":-87.9065}}",1,28,1
+shmaltz_enterprises,0,0,244982611968,"{""name"":""Shmaltz Enterprises"",""city"":""San Francisco"",""state"":""California"",""code"":""94110"",""country"":""United States"",""phone"":""1-650-343-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3435 Cesar Chavez #227""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.7481,""lon"":-122.419}}",1,5,1
+troegs_brewing-scratch_15_2008,0,0,245099069441,"{""name"":""Scratch #15 2008"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch #15-2008 is our first collaborative beer in the Scratch series. We teamed up with St. Thomas Roasters of Linglestown to create a Double Espresso Oatmeal Stout.\r\n\r\nThe double in the name refers to the espresso (not the alcohol). Scratch #15’s espresso blend is a medium city-type roast featuring beans from three continents. St. Thomas Roasters roasted and ground the beans; we used them in our hopback. At the end of the boil the hot wort passed through the espresso beans to give a lush coffee espresso nose and hints of coffee flavor.\r\n\r\nChocolate, roasted and caramel malt flavors stand out, while the addition of oats gives Scratch #15 a full, round mouth feel. Galena and Ken Goldings hops are added to balance the overall flavor and not drive up the bitterness. The head retention diminishes quickly because of the oils from the espresso beans."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,3,1
+heartland_brewery_union_square,0,0,244756381698,"{""name"":""Heartland Brewery Union Square"",""city"":""New York"",""state"":""New York"",""code"":""10003"",""country"":""United States"",""phone"":""1-212-645-3400"",""website"":""http://www.heartlandbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.7323,""lon"":-73.9874}}",1,55,1
+mckenzie_brew_house-old_rogue_pale_ale,0,0,244878147585,"{""name"":""Old Rogue Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mckenzie_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+liberty_steakhouse_and_brewery-liberty_raspberry_wheat_ale,0,0,244738228226,"{""name"":""Liberty Raspberry Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This brew combines the mild, tartness of a wheat beer with the flavor of real raspberries. The raspberry flavor is not overpowering. It has a wonderful berry aroma, and is a favorite even among those who claim to \""not like beer\""."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,10,1
+capital_brewery-capital_u_s_pale_ale,0,0,244495024131,"{""name"":""Capital U.S. Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+flying_fish_brewing_company-belgian_abbey_dubbel,0,0,244611678209,"{""name"":""Belgian Abbey Dubbel"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian-style Abbey Dubbel is an exceptionally complex beer with many interwoven flavors. This classic-style Abbey beer features an immense head with a fruity nose and a generous body. Malty in the middle, the beer features a clean, almondy dry finish and a slight alcohol warmth. More like a wine than a beer—it has a lot of the qualities of a fine Burgundy.\r\n\r\nBeer writer Michael Jackson has praised the Flying Fish Dubbel as \""a wonderful example of the style.\"""",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,12,1
+cervecera_cuauhtmoc_moctezuma,0,0,244498497537,"{""name"":""Cervecera Cuauhtmoc-Moctezuma"",""city"":""Monterrey"",""state"":""Nuevo Leon"",""code"":"""",""country"":""Mexico"",""phone"":""52-81-8328-5000"",""website"":""http://www.ccm.com.mx/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Av.Alfonso Reyes Norte No.2202""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":25.7091,""lon"":-100.314}}",1,57,1
+the_livery-american_brown_ale,0,0,245097627650,"{""name"":""American Brown Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Every winter 300 hardy Telemark skiers converge at Mt. Bohemia and the Porcupine Mountains ski areas for three days of back country touring, lift served high speed runs, chili cook offs, and dancing and beer drinking to Finnish Reggae, Bluegrass, or whatever else comes out of the woodwork. Steve brews this hoppy American Brown Ale in honor of his good friends and ski buddies from all over the Midwest and Canada who attend. Rich, malty, and dry-hopped to perfection. Available December through March."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,1,1
+goose_island_beer_company_fulton_street-pere_jacques,0,0,244631273473,"{""name"":""Pere Jacques"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+lightning_boy_brewery,0,0,244861566976,"{""name"":""Lightning Boy Brewery"",""city"":""Belgrade"",""state"":""Montana"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.7786,""lon"":-111.179}}",1,11,1
+upper_mississippi_brewing-pale_pale_boss_ale,0,0,245115650048,"{""name"":""Pale Pale Boss Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upper_mississippi_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,40,1
+dogfish_head_craft_brewery-world_wide_stout,0,0,244620787713,"{""name"":""World Wide Stout"",""abv"":18.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dogfish_head_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark, rich, roasty and complex, World Wide Stout has more in common with a fine port than a can of cheap, mass-marketed beer. Brewed with a ridiculous amount of barley. Have one with (or as!) dessert tonight!""}",1,34,1
+duclaw-blackout,0,0,244621377537,"{""name"":""Blackout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""duclaw"",""updated"":""2010-07-22 20:00:20"",""description"":""Succumb to this dark, medium bodied German-style dark lager’s smooth roasted flavors and light hoppy bitterness. Don’t worry, you’ll remember everything the next morning."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,35,1
+gottberg_brew_pub-english_brown_ale_discontinued,0,0,244622557187,"{""name"":""English Brown Ale (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,37,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_brown_ale,0,0,244860846080,"{""name"":""Nøgne Ø Brown Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""A dark brown English ale, in which classic English malts meet the spicy hoppiness of the new world.  Recommended serving temperature 8°C/45°F. Goes very well with ‘pub grub.’"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,8,1
+middle_ages_brewing-grail_ale,0,0,244860190720,"{""name"":""Grail Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An amber ale with a ruby hue, fresh hop aroma, rich malt body and a complex palate."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+lagunitas_brewing_company-cappuccino_stout,0,0,244739932161,"{""name"":""Cappuccino Stout"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Ale Brewed with Columbian Coffee. Brewed with Sebastopol's Own Hard Core Coffee."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,14,1
+ham_s_restaurant_and_brewhouse-buccaneer_brown_ale,0,0,244757823490,"{""name"":""Buccaneer Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ham_s_restaurant_and_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,59,1
+saint_louis_brewery_schlafy_tap_room-schlafly_kolsch,0,0,244981301249,"{""name"":""Schlafly Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+routh_street_brewery_and_grille-dusseldorf_style_altbier,0,0,245000699905,"{""name"":""Dusseldorf-Style Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,48,1
+thirsty_dog_brewing-siberian_night_imperial_stout,0,0,245097431042,"{""name"":""Siberian Night Imperial Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Imperial Stouts are by far the \""GRAND - DADDY\"" of all stouts. For those who demand flavor, this is the perfect libation."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,0,1
+minneapolis_town_hall_brewery-smoked_hefe,0,0,244880048128,"{""name"":""Smoked Hefe"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+central_waters_brewing_company-brewhouse_coffee_stout,0,0,244495679491,"{""name"":""Brewhouse Coffee Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A coffee lover's delight! A wonderful stout infused with coffee that is specially roasted for us by Emy J's (www.emyjs.com) in Stevens Point, WI.""}",1,50,1
+gold_crown_brewing-premium_lager,0,0,244613971968,"{""name"":""Premium Lager"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gold_crown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+jw_lees_and_co_brewers_ltd-harvest_ale_1997,0,0,244750286851,"{""name"":""Harvest Ale 1997"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,39,1
+red_star_brewery_grille-strawberry_honey_amber_ale,0,0,244982022144,"{""name"":""Strawberry Honey Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_star_brewery_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,4,1
+samuel_smith_old_brewery_tadcaster-taddy_porter,0,0,244983005184,"{""name"":""Taddy Porter"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,6,1
+hoppin_frog_brewery-mean_manalishi_double_i_p_a,0,0,244755988480,"{""name"":""Mean Manalishi Double I.P.A."",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Explore the extremes of hops, and experience all of their bitterness, flavor and aroma with this Double I.P.A. An extreme, super-assertive and satisfying amount of American hop character is balanced with a toasty, caramelized, intense malt presence."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,54,1
+willoughby_brewing,0,0,245749776384,"{""name"":""Willoughby Brewing"",""city"":""Willoughby"",""state"":""Ohio"",""code"":""44094"",""country"":""United States"",""phone"":""1-440-975-0202"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4057 Erie Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.6416,""lon"":-81.4066}}",1,42,1
+humboldt_brewing-nectar_ipa,0,0,244740849665,"{""name"":""Nectar IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,16,1
+lagunitas_brewing_company-censored_aka_the_kronic,0,0,244740587520,"{""name"":""Censored (aka The Kronic)"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,15,1
+mcmenamins_mill_creek-hammerhead_ale,0,0,244862615553,"{""name"":""Hammerhead Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+sierra_leone_brewery,0,0,244997750785,"{""name"":""Sierra Leone Brewery"",""city"":""Freetown"",""state"":""Sierra Leone"",""code"":"""",""country"":""Sierra Leone"",""phone"":""+232 (22) 26 31 18"",""website"":""http://www.slbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Sierra Leone Brewery Limited's (SLBL) core values - respect, enjoyment and a passion for quality - help to define our corporate culture and working methods. They are fundamental to the way we do business today, they support our drive towards economic, environmental and social sustainability"",""address"":[""PO Box 721""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":8.4841,""lon"":-13.2287}}",1,41,1
+wells_and_youngs_brewing_company_ltd-wells_banana_bread_beer,0,0,245750497281,"{""name"":""Wells Banana Bread Beer"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wells_and_youngs_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""A silky, crisp, and rich amber-colored ale with a fluffy head and strong banana note on the nose."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,47,1
+estes_park_brewery-estes_park_gold,0,0,244619542529,"{""name"":""Estes Park Gold"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""estes_park_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our smooth golden ale. Our Gold has a medium body and low to medium hop bitterness \r\nand aroma."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,31,1
+hopworks_urban_brewery-velvet_esb,0,0,244749631489,"{""name"":""Velvet ESB"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This English Session Beer has a delicious floral hop aroma and flavor. A heaping helping of organic caramel malt and touch of organic chocolate malt give this beer its beautiful mahogany color while organic oats from Bob's Red Mill velvetize the texture. Smoother than an infomertial host at half the price!"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,38,1
+nebraska_brewing_company-india_pale_ale,0,0,244861108224,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+jt_whitney_s_brewpub_and_eatery-heartland_weiss,0,0,244747599873,"{""name"":""Heartland Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,33,1
+yegua_creek_brewing_dallas,0,0,245750104066,"{""name"":""Yegua Creek Brewing - Dallas"",""city"":""Dallas"",""state"":""Texas"",""code"":""75206"",""country"":""United States"",""phone"":""214-824-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2920 North Henderson Ave""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.821,""lon"":-96.7848}}",1,44,1
+carver_brewing_co-lightner_creek_lager,0,0,244481916928,"{""name"":""Lightner Creek Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""carver_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A light bodied golden ale, low in hop character with a spicy aroma from whole Czech Saaz hops."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+watson_brothers_brewhouse-y2kipa,0,0,245749972993,"{""name"":""Y2KIPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""watson_brothers_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+capital_city_brewing_company-capitol_kolsch,0,0,244481327104,"{""name"":""Capitol Kolsch"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This lager like ale is modeled after the official beer of Köln, Germany.  Kolsch is delicate and refreshing with a slight fruitiness and supportive, yet unobtrusive hop bitterness""}",1,18,1
+middle_ages_brewing-druid_fluid,0,0,244868644867,"{""name"":""Druid Fluid"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An epic barleywine, made in the tradition of British Farmhouse Brewing. Lavished with a velvety blend of six different malts this is a warming beer with a lush mouthfeel. The complexities your discriminating palate will detect are ever changing as this barleywine matures. When young, an assertive hop character predominates and with age the beauty of the big malt balance unfolds."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,28,1
+slab_city_brewing-william_capen_bitter_ale,0,0,244982611969,"{""name"":""William Capen Bitter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+tucher_bru-helles_hefe_weizen,0,0,245099069442,"{""name"":""Helles Hefe Weizen"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tucher_bru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,3,1
+hite_brewery,0,0,244756447232,"{""name"":""Hite Brewery"",""city"":""Seoul"",""state"":"""",""code"":"""",""country"":""Korea, Republic of"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Hite Brewery Company Limited is a South Korean brewery company headquartered in Yeongdeungpo-gu, Seoul. Its main products are beer, rice wine, and mineral water. The company was established as Chosun Breweries in 1933. In 2001 the company had three factories, and in 2002 its share of the domestic beer market was some 55%, up from 30% in 1992."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.5665,""lon"":126.978}}",1,55,1
+mcmenamins_mill_creek-wheat_beer,0,0,244878213120,"{""name"":""Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,52,1
+liefmans_breweries-all_saints_belgian_golden_ale,0,0,244738293760,"{""name"":""All Saints Belgian Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liefmans_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+capital_brewery-winter_skal,0,0,244495089664,"{""name"":""Winter Skål"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""capital_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,49,1
+flying_fish_brewing_company-grand_cru_winter_reserve,0,0,244611678210,"{""name"":""Grand Cru Winter Reserve"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian-style strong golden ale showcases a variety of the ingredients and brewing methods that help differentiate Flying Fish beers. The Grand Cru is fermented at a higher temperature than our other beers adding an undercurrent of fruitiness (although there is no fruit in the beer). Very lightly filtered, the Grand Cru exhibits complex mouthfeel, strong malt flavors, a spicy hop presence and a soothing alcohol warmth, followed by a clean, dry finish. It is excellent with food as well as served by itself."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,12,1
+clipper_city_brewing_co-holy_sheet,0,0,244498497538,"{""name"":""Holy Sheet"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the centuries-old tradition of Belgian Abbey monks comes our \""Über Abbey\"" Ale. Aromatic and full bodied, pouring deep burgundy in color, it's bold, it's Heavy Seas. Grab a line...Holy Sheet!...or you'll be swept overboard. Seasonally available in February while supplies last."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,57,1
+the_livery-mcgilligans_ipa,0,0,245097627651,"{""name"":""McGilligans IPA"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""India Pale Ales, or IPA’s, were brewed for British soldiers stationed in India. These ales needed to higher in alcohol and have more hops than normal to survive the long journey, and ours is no exception. Brewed with Belgian and German malts and dry hopped with loads of Cascades, our version honors our friend who had his own grueling journey involving a boat and cold water!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,1,1
+gore_range_brewery-fly_fisher_red,0,0,244631273474,"{""name"":""Fly Fisher Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gore_range_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+listermann_brewing_company-wild_mild_ale,0,0,244861566977,"{""name"":""Wild Mild Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""listermann_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A bottle-conditioned English style ale."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,11,1
+weyerbacher_brewing_company-double_simcoe_ipa,0,0,245749514240,"{""name"":""Double Simcoe IPA"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Double Simcoe IPA, 9.0% abv, is our incredible reward for Hopheads seeking over the top flavor in a Double IPA, without the harshness. Brewed  with Simcoe hops, developed and trademarked by Select Botanicals Group, LLC, in the year 2000. This hybrid hops was created to allow maximum aromatic oils, along with low cohumulone(harshness) levels, so that brewers can really load up a lot of 'em in a beer and not have any harshness. The piney, citrusy notes are all here, and in a very clean (non-harsh) way, as well as having an aroma with impact. Introduced by Weyerbacher in 2005 originally as a seasonal, this brew has garnered numbers so high on Beer Advocate, and been in such high demand by consumers,  we decided to add it to our year-round line-up in March 2007. Check it out, and you'll soon see why everyone's talking about it."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,40,1
+east_end_brewing_company-big_hop_harvest_ale,0,0,244620787714,"{""name"":""Big Hop Harvest Ale"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""east_end_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,34,1
+east_end_brewing_company-toaster_imperial_stout,0,0,244621443072,"{""name"":""Toaster Imperial Stout"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""east_end_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is an Imperial version of our Black Strap Stout, this time brewed with MORE blackstrap molasses and MORE brown sugar, plus a whole lot more malt and hops too.  Part of our FESTIVAL OF DARKNESS, this one clocks in at over 10%ABV, and is the thickest beer we've ever brewed here."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,35,1
+gray_brewing,0,0,244748845056,"{""name"":""Gray Brewing"",""city"":""Janesville"",""state"":""Wisconsin"",""code"":""53545"",""country"":""United States"",""phone"":""1-608-752-3552"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2424 West Court Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.6793,""lon"":-89.0498}}",1,37,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_imperial_brown_ale,0,0,244860846081,"{""name"":""Nøgne Ø Imperial Brown Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""There is a long story to this malty ale.  It was first brewed in the spring 2006 in Nørrebro Bryghus in Copenhagen, Denmark, as a joint brew between Nøgne Ø and Nørrebro.  Nørrebro calls their version “Double Knot Brown”.  It is the perfect thing to drink with almost any cheese."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,8,1
+midnight_sun_brewing_co-free_loader_double_red_ipa,0,0,244860190721,"{""name"":""Free Loader Double Red IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Free Loader Double Red IPA was \""double-brewed\"". [How's that for a catchy term that those BiG brewers can't TouCH. I love it, LoVe it, LOVE it.] The first batch of red IPA was mashed, sparged, and transferred to the kettle. The second batch of red IPA was mashed, sparged and transferred to the kettle using the sweet wort from batch one as its mash \""water\"". Hmmm...using \""beer\"" to make beer. Hence the name FREE LOADER. This Double Red IPA is just that--big, red, hoppy."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,7,1
+lagunitas_brewing_company-lucky_13_mondo_large_red_ale,0,0,244739997696,"{""name"":""Lucky 13 Mondo Large Red Ale"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our 13th Anniversary Beer in was a Staff Favorite, So We Make it Each Year. BIG on the Amarillo Hops and Rich Dark Malts for a Round and Huge, Smoky Flavor."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,14,1
+hansa_bryggeri,0,0,244757823491,"{""name"":""Hansa Bryggeri"",""city"":""Bergen"",""state"":"""",""code"":"""",""country"":""Norway"",""phone"":""47-55-99-77-00"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kokstaddalen 3""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":60.2945,""lon"":5.2592}}",1,59,1
+salt_lake_brewing_squatters,0,0,244981301250,"{""name"":""Salt Lake Brewing - Squatters"",""city"":""Salt Lake City"",""state"":""Utah"",""code"":""84101"",""country"":""United States"",""phone"":""1-801-328-2329"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""147 West Broadway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.7626,""lon"":-111.895}}",1,2,1
+roy_pitz_brewing_company-daddy_fat_sacs_imperial_ipa,0,0,245000699906,"{""name"":""Daddy Fat Sacs Imperial IPA"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roy_pitz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The one and only IPA that doesn't leave your pallet with a bitter after taste. This beer took years of practice to get down and when we finally got it right, we knew it. The beer is made with three malts in considerable additions that leave it with a more malty and sweet taste. There are five different hop additions that were carefully planed out to impart just enough bitterness to give it the body and depth that it needed without leaving you with the astringent and bitter aftertaste. We then added a plethora of English flavor and aroma hops that round out the floral and citrus esters. With the beer being so well balanced between bitter and sweet, we than added \""big sacks\"" of bittering hops to the conditioning vessel to impart all the wonderful citrus and floral notes deep into the beer while leaving the bittering aspects of the hop behind. The result was a beer that makes you want to nose dive right in complimented by the well balanced taste of this wonderful brew."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,48,1
+tyranena_brewing-fargo_brothers_hefeweizen,0,0,245097496576,"{""name"":""Fargo Brothers Hefeweizen"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Fargo brothers arrived in Lake Mills in 1845, armed with a strong collective will and a pioneering spirit. The Fargo family became leaders in commerce, industry, agriculture, civics and religion. Through the years, these hard working men and their families shaped the character and very essence of our beautiful hometown. Their legacy endures in the buildings and businesses they built and the civility they brought to this city. In this same pioneering spirit, we brew our Fargo Brothers Hefeweizen to honor this \""first family\"" of Lake Mills.\r\n\r\nFargo Brothers Hefeweizen is brewed in the tradition of a Bavarian-style weißbier with a clove-like flavor and aroma with banana undertones and no bitterness.  The unfiltered yeast makes this beer cloudy."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,0,1
+minneapolis_town_hall_brewery-tripel_vision,0,0,244880048129,"{""name"":""Tripel Vision"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+central_waters_brewing_company-mud_puppy_porter,0,0,244495745024,"{""name"":""Mud Puppy Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_waters_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust, yet surprisingly refreshing porter, Mud Puppy is a favorite of dark beer lovers. Characterized by a thick, rocky head and luscious chocolate-like nose, the malty profile is balanced by liberal hopping for its style."",""style"":""Porter"",""category"":""Irish Ale""}",1,50,1
+granite_city_food_brewery_saint_cloud-duke_of_wellington_ipa,0,0,244741046272,"{""name"":""Duke of Wellington IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""granite_city_food_brewery_saint_cloud"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_white_ale,0,0,244750286852,"{""name"":""Hitachino Nest White Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+rivertowne_pour_house,0,0,244982022145,"{""name"":""Rivertowne Pour House"",""city"":""Monroeville"",""state"":""Pennsylvania"",""code"":""15146"",""country"":""United States"",""phone"":""412-372-8199"",""website"":""http://www.myrivertowne.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""312 Center Rd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.4465,""lon"":-79.7642}}",1,4,1
+san_marcos_brewery_grill-premium_golden_ale,0,0,244983005185,"{""name"":""Premium Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+jurupa_valley_brewing,0,0,244755988481,"{""name"":""Jurupa Valley Brewing"",""city"":""Riverside"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.9533,""lon"":-117.396}}",1,54,1
+wye_valley_brewery-butty_bach,0,0,245749776385,"{""name"":""Butty Bach"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wye_valley_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,42,1
+iron_hill_brewery_wilmingon-anvil_ale,0,0,244740915200,"{""name"":""Anvil Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""English style best bitter. It is a traditional English pub ale that is easy drinking, often referred to as a \""session beer\"". It is medium-bodied and copper colored with a noticeable malt flavor up front that finishes with a hop bitterness and floral hop flavor."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,16,1
+lake_superior_brewing-kayak_kolsch,0,0,244740587521,"{""name"":""Kayak Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_superior_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+mercury_brewing_company-ipswich_ipa,0,0,244862681088,"{""name"":""Ipswich IPA"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our IPA is an unfiltered cross between an English and American IPA, with a strong, dry bitterness balanced with a slight malty sweetness. A mixture of first-rate U.S. and Belgian malts, combined with English roasted barley and highly hopped with Cascade and Warrior hops make our IPA a brewery favorite."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,13,1
+sierra_nevada_brewing_co-bigfoot_1996,0,0,244997816320,"{""name"":""Bigfoot 1996"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+weyerbacher_brewing_company-weyerbacher_fireside_ale,0,0,245750562816,"{""name"":""Weyerbacher Fireside Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+f_x_matt_brewing-saranac_marzenbier,0,0,244619542530,"{""name"":""Saranac Marzenbier"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Bigger..Richer...Smoother, are all ways to describe a Marzenbier. Look for a toasted malt character balanced with slight hop bitterness. Marzenbiers are traditionally aged for months and unveiled to great celebration.""}",1,31,1
+htt_brauerei_bettenhuser-luxus_pils,0,0,244749631490,"{""name"":""Luxus Pils"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""htt_brauerei_bettenhuser"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+new_holland_brewing_company-black_tulip,0,0,244861108225,"{""name"":""Black Tulip"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Golden in color with a slightly sweet body. Its ester-laden character reveals an enigmatic dance between Belgian ale yeast and candy sugar complimented by a pleasing dry finish. Black Tulip is a versatile beer for food. Enjoyable pairings include mild bleu cheeses, berries and other light desserts."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,9,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2005_calvados,0,0,244747599874,"{""name"":""Harvest Ale 2005 (Calvados)"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+carver_brewing_co,0,0,244481916929,"{""name"":""Carver Brewing Co."",""city"":""Durango"",""state"":""Colorado"",""code"":""81301"",""country"":""United States"",""phone"":""(970) 259 - 2545"",""website"":""http://www.carverbrewing.com/_/home.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Carver Brothers Bakery first opened on June 1, 1983, in Winter Park, Colorado. It started with Jim, Bill, Sara and Eleanor Carver. In 1986 Jim, Bill and Barb Wynne opened Carvers Bakery / Café in Durango and the Winter Park Bakery was sold.   In 1988 Carvers opened the brewery  making it the first brewery in the four corners region since prohibition. Although still known affectionately by the locals as Carvers, Carvers then became Carver Brewing Company.  Since then Carvers has seen many exciting changes: opening it's outdoor Beer Garden in 1994 and undergoing dramatic remodels in the restaurant and on the patio in '98 and '02. In April of '07 it was deemed necessary to expand the brewery.  The brewery is now housed in the area previously occupied by the bakery.  After 20 years of serving Colorado's mountain folk, Carvers continues to provide the very best in food and beer."",""address"":[""1022 Main Ave.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.2748,""lon"":-107.88}}",1,19,1
+weinkeller_brewery_berwyn-esb,0,0,245750038528,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,43,1
+cedar_brewing-black_cobra_stout,0,0,244481327105,"{""name"":""Black Cobra Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cedar_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,18,1
+middle_ages_brewing,0,0,244868710400,"{""name"":""Middle Ages Brewing"",""city"":""Syracuse"",""state"":""New York"",""code"":""13204"",""country"":""United States"",""phone"":""1-888-289-4250"",""website"":""http://www.middleagesbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Step back in time to when men were men, women were brewsters, and hand-crafted fine ale filled every flagon. Your quest for great taste leads you out of the past and into Middle Ages Brewing Company where we are sworn to uphold the tradition of brewing beer in small batches. Taste the difference hand-crafting makes."",""address"":[""120 Wilkinson Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0508,""lon"":-76.1617}}",1,28,1
+sonoran_brewing_company-victorian_ipa,0,0,245099659264,"{""name"":""Victorian IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sonoran_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our IPA has lots of malt and hop character.  This style originated during Queen Victoria’s reign as a strong, flavorful ale, which was able to survive the ocean voyage from England to India during the British occupation."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,5,1
+tworows_restaurant_brewery_dallas-bulldog_brown,0,0,245099134976,"{""name"":""Bulldog Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tworows_restaurant_brewery_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,3,1
+hofbruhaus_traunstein-altbairisch_dunkel,0,0,244756447233,"{""name"":""Altbairisch Dunkel"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hofbruhaus_traunstein"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+meantime_brewing_company_limited-meantime_coffee,0,0,244878213121,"{""name"":""Meantime Coffee"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""meantime_brewing_company_limited"",""updated"":""2010-07-22 20:00:20"",""description"":""Whilst we wouldn’t recommend having this at breakfast with your bacon and eggs, our Coffee Beer is made with real coffee and has a caffeine hit to match. The natural flavours of the beans selected and hand roasted by our friends at the Union Coffee Roasters go well with the roast barley in the beer to give a silky-smooth drink with distinct chocolate and vanilla notes. \r\n\r\nOur first formulation of this beer was the first UK brewed beer to carry the Fairtrade logo, and, although we have reformulated it to create an even better blend of malt and roast coffee flavours, we can no longer get enough coffee in each bottle to qualify for Fairtrade status. However we are still using the same Faitrade Araba Bourbon beans from Rwanda’s Abuhuzamugambi Bakawa Co-operative.\r\n\r\nAt the Meantime Brewing Co we love flavour, so it wasn’t exactly difficult for us to see how the scents and aromas of coffee and barley would create a perfect match like just like mint and lamb, toffee and banana, peaches and cream, peanut butter and jam. Serve lightly chilled with as many chocolate truffles as your conscience allows.\r\n\r\nEach serving is equal to one cup of coffee"",""style"":""Porter"",""category"":""Irish Ale""}",1,52,1
+listermann_brewing_company-186_000_mps_malt_liquor,0,0,244861173760,"{""name"":""186,000 MPS Malt Liquor"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""listermann_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+carolina_brewery,0,0,244495089665,"{""name"":""Carolina Brewery"",""city"":""Chapel Hill"",""state"":""North Carolina"",""code"":""27516"",""country"":""United States"",""phone"":""1-919-942-1800"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""460 West Franklin Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":35.9103,""lon"":-79.0632}}",1,49,1
+fox_river_brewing_1-fox_light,0,0,244611678211,"{""name"":""Fox Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+cumberland_brewery,0,0,244498563072,"{""name"":""Cumberland Brewery"",""city"":""Louisville"",""state"":""Kentucky"",""code"":""40205"",""country"":""United States"",""phone"":""(502) 458-8727"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Giving new meaning to the term microbrewery, Cumberland Brews may be one of the smallest eateries in town, with a half-dozen four-top tables and a short bar with nine stools making tight quarters of what used to be the White Mountain Creamery. (Techically, it's not a microbrewery but a brewpub - a restaurant that makes its own beer on the premises - but I'm not one to quibble in the face of a good pun.) It's usually packed, too, earning its crowds the old-fashioned way by providing very good food, friendly service, and the sine qua non for a brewpub: extremely high-quality hand-crafted artisan beers. Hand-crafted offerings are produced by Head Brewer Cameron Finnis."",""address"":[""1576 Bardstown Rd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.2309,""lon"":-85.7055}}",1,57,1
+three_floyds_brewing-drunk_monk_hefeweizen,0,0,245097627652,"{""name"":""Drunk Monk Hefeweizen"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,1,1
+gottberg_brew_pub-belgian_ale_discontinued,0,0,244631339008,"{""name"":""Belgian Ale (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+long_valley_pub_brewery-black_river_brown,0,0,244861632512,"{""name"":""Black River Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_valley_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+wychwood_brewery,0,0,245749514241,"{""name"":""Wychwood Brewery"",""city"":""Witney"",""state"":""Oxford"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01993)-890800"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""The Eagle Maltings""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.7523,""lon"":-1.2558}}",1,40,1
+egan_brewing-white_fathers_witbier,0,0,244620853248,"{""name"":""White Fathers Witbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+elk_grove_brewery_restaurant-otis_alt,0,0,244621443073,"{""name"":""Otis Alt"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""elk_grove_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,35,1
+green_mill_brewing_saint_paul-india_pale_ale,0,0,244748910592,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mill_brewing_saint_paul"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+olde_main_brewing,0,0,244860846082,"{""name"":""Olde Main Brewing"",""city"":""Ames"",""state"":""Iowa"",""code"":""50010"",""country"":""United States"",""phone"":""1-515-232-0553"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""316 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.0248,""lon"":-93.6147}}",1,8,1
+midnight_sun_brewing_co-mars_belgian_imperial_red_ipa,0,0,244860256256,"{""name"":""Mars - Belgian Imperial Red IPA"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Named after the Roman god of war, Mars radiates red color and brilliant beauty yet enrages the taste buds with wrathful force.  This Imperial IPA seizes its intense bitterness from an immense amount of hops.  Belgian yeast retaliates, adding complexity and character."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,7,1
+legends_brewhouse_eatery_of_green_bay,0,0,244739997697,"{""name"":""Legends Brewhouse & Eatery of Green Bay"",""city"":""Green Bay"",""state"":""Wisconsin"",""code"":""54313"",""country"":""United States"",""phone"":""1-920-662-1111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2840 Shawano Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.5534,""lon"":-88.0977}}",1,14,1
+high_falls_brewing-highfalls_indiaman_trader_india_pale_export_ale,0,0,244757823492,"{""name"":""HighFalls Indiaman Trader India Pale Export Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+santa_fe_brewing_company-chicken_killer_barley_wine,0,0,244981301251,"{""name"":""Chicken Killer Barley Wine"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Chicken Killer Barley Wine is the revolutionary beer that will someday define America's unique Barley Wine style. It is brewed with twice the ingredients of the Santa Fe Brewing Company's other beers, and only half the usual amount of liquid is extracted from these ingredients. This makes one substantial beer. At over ten percent alcohol, Chicken Killer is actually as substantial as wine, but this is not to say that it is difficult to drink. On the contrary; be careful with this one. The flavors of the beer are at first as overwhelming as the intense Santa Fe sun. But in the same way our sun gives us the unrivaled brilliant colors of Santa Fe, the potency of Chicken Killer gives us the remarkable spectrum of flavors that can be found in no other beer, in no other city. If you did not have the opportunity to try last year's vintage, come try this year's!"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,2,1
+ruppaner_brauerei-hefe_weizen_dunkel,0,0,245000765440,"{""name"":""Hefe Weizen Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+uinta_brewing_compnay,0,0,245097496577,"{""name"":""Uinta Brewing Compnay"",""city"":""Salt Lake City"",""state"":""Utah"",""code"":""84104"",""country"":""United States"",""phone"":""1-801-467-0909"",""website"":""http://www.uintabrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1722 South Fremont Drive (2375 West)""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.7326,""lon"":-111.954}}",1,0,1
+moon_river_brewing_company-tarletons_bitters,0,0,244880113664,"{""name"":""Tarletons Bitters"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,56,1
+chicago_brewing-stout,0,0,244495745025,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""chicago_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,50,1
+green_mountain_beverage-cider_jack,0,0,244741111808,"{""name"":""Cider Jack"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mountain_beverage"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,17,1
+klosterbru_bamberg,0,0,244750352384,"{""name"":""Klosterbru Bamberg"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-57722"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Obere Mhlbrcke 1-3""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.8891,""lon"":10.887}}",1,39,1
+roost_brewery-porter,0,0,244982022146,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roost_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,4,1
+schussenrieder_erlebnisbrauerei-schwarzbier,0,0,244983005186,"{""name"":""Schwarzbier"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schussenrieder_erlebnisbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,6,1
+kleinbrouwerij_de_glazen_toren,0,0,244755988482,"{""name"":""Kleinbrouwerij de Glazen Toren"",""city"":""Erpe-Mere"",""state"":""Oost-Vlaanderen"",""code"":"""",""country"":""Belgium"",""phone"":""32-(0)53-83-68-17"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Glazentorenweg 11""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.9193,""lon"":3.9666}}",1,54,1
+wynkoop_brewing-patty_s_chile_beer,0,0,245749776386,"{""name"":""Patty's Chile Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A light German-style beer made with Anaheim chiles and smoked Ancho peppers. A 2006 Great American Beer Festival Bronze Medal Winner in the Fruit and Vegetable Beer category anda Wynkoop specialty."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,42,1
+jj_bitting_brewing-cappa_cappa_crusher,0,0,244740915201,"{""name"":""Cappa Cappa Crusher"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jj_bitting_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+lancaster_brewing_co-doppel_bock,0,0,244740587522,"{""name"":""Doppel Bock"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A mighty lager-style brew, dark in color. Our Doppelbock brings a big malty sweetness together with the classic lager smoothness, topped off with a slightly evident alcohol flavor. A toasty brew to battle even the coldest winter nights.\r\n\r\nAvailable at the Brewery and in bottles & cases from March - May."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,15,1
+midnight_sun_brewing_co-specialty_beer_black_double_ipa,0,0,244862681089,"{""name"":""Specialty Beer: Black Double IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""To commemorate the 30th anniversary of Specialty Imports' specialty wine and beer import business, Midnight Sun Brewing Company brewed a very special beer--a black double IPA--to honor this Alaska company's long-term success. \r\n\r\nThis black double IPA celebrates Specialty Imports' success in importing and distributing the world's best wines and beers to the appreciative folks in Alaska. This \""Specialty Beer\"" brings together smooth, dark malts with intense aromatic hops to create a wonderfully balanced yet committed-to-flavor ale.\r\n\r\nAvailability: \r\nAK - 22-oz bottles (limited release begins 01/16/2009)\r\n\r\n** An oak-aged version will be released in Fall 2009.""}",1,13,1
+southern_star_brewing_company-pine_belt_pale_ale,0,0,245115650048,"{""name"":""Pine Belt Pale Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_star_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A deep copper colored ale with a substantial malt backbone accented with British crystal malts with aggressive hop bitterness and substantial American hop flavor and aroma. The yeast profile is neutral."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+wild_river_brewing_and_pizza_cave_junction-blackberry,0,0,245750562817,"{""name"":""Blackberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_river_brewing_and_pizza_cave_junction"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,47,1
+firehouse_grill_brewery-hefeweizen,0,0,244619542531,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+joboy_s_brew_pub,0,0,244749697024,"{""name"":""JoBoy's Brew Pub"",""city"":""Manheim"",""state"":""Pennsylvania"",""code"":""17545"",""country"":""United States"",""phone"":"""",""website"":""http://www.joboysbrewpub.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""87 Doe Run Rd""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.1707,""lon"":-76.3838}}",1,38,1
+otto_s_pub_and_brewery-arthur_s_nugget_pale_ale,0,0,244861108226,"{""name"":""Arthur's Nugget Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A cask-conditioned American Pale Ale. This is a bright dry ale brewed only with American Nugget hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+klosterbru_bamberg-bamberger_gold,0,0,244747665408,"{""name"":""Bamberger Gold"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbru_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+central_city_brewing_company-springboard_lager,0,0,244481916930,"{""name"":""Springboard Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""central_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+wolf_pack_brewing,0,0,245750038529,"{""name"":""Wolf Pack Brewing"",""city"":""West Yellowstone"",""state"":""Montana"",""code"":""59758"",""country"":""United States"",""phone"":""1-406-646-7727"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""111 South Canyon Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.6584,""lon"":-111.1}}",1,43,1
+climax_brewing_copmany-climax_extra_special_bitter_ale,0,0,244481392640,"{""name"":""Climax Extra Special Bitter Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""climax_brewing_copmany"",""updated"":""2010-07-22 20:00:20"",""description"":""Our E.S.B. is a balanced beer with notes of honey, toffee and caramel, backed by a warm spicy hop bitterness."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,18,1
+midnight_sun_brewing_co-conspiracy,0,0,244868710401,"{""name"":""Conspiracy"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Conspiracy Belgian-style Black Beer is the result of a collaboration between Midnight Sun brewers Gabe Fletcher and Ben Johnson and Pelican Pub (Pacific City, OR) brewer Ben Love. These brewers conspired during barley wine fest week to brew up a deviously delicious dark Belgian-style beer. \r\n\r\nConspiracy is opaque black with a creamy beige head. Black malt shrouds it in mystery; the Belgian yeast imparts intriguing flavor; the alcohol adds danger. If you're up for this mission, watch your back.\r\n\r\nConspiracy will be released in Anchorage and Portland in April 2007."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,28,1
+southend_brewery_and_smokehouse_charleston-bombay_pale_ale,0,0,245099724800,"{""name"":""Bombay Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,5,1
+tyranena_brewing-chief_blackhawk_porter,0,0,245099200512,"{""name"":""Chief Blackhawk Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""In 1767 a great Sauk leader was born.  His name meant \""the black sparrow hawk.\""  He came to be known as Black Hawk.  Strong beliefs, independent thinking and an unwavering commitment to his family and his people earned him a reputation as a man of integrity and courage.  In 1832, along with 1,200 of his people, Black Hawk was driven from his ancestral home during a war that bears his name.  We celebrate this Sauk leader and his courage with our BlackHawk Porter, the kind of beer that make you say, Ma-ka-tai-she-kia-kiak!\r\n\r\nChief BlackHawk Porter is a robust black and sharply bittersweet ale.  This style was traditionally the session beer consumed by the porters in London."",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+hop_back_brewery-summer_lightning,0,0,244756447234,"{""name"":""Summer Lightning"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hop_back_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+metropolitan_brewing-flywheel_bright_lager,0,0,244878278656,"{""name"":""Flywheel Bright Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""metropolitan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The kinetic beauty of spicy hops grabs you by the nose and lets you know: this is German-inspired beer. A mild, bready malt sweetness greets you at the lips, smoothing the crisp hop flavors. Flywheel is meant for bombastic celebrations of singing voices and clamoring mugs. But then, that first contented moment of happy hour is uniquely celebratory as well.\r\n\r\nFlywheel Bright Lager goes great with hot dogs, guitar jams, stir fry, bowling, taco salad, house warmings, baked potatoes, Saturday morning cartoons, tequila, gouda cheese, karaoke, bagel & schmear, Euchre, fresh berries, asparagus, 16-inch softball, sushi, darts, Pad Thai, family reunions, pb&j, flan, romantic weekend getaways, garlic bread, pay raises, nachos, baby showers, fondue, and Frisbee golf."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,52,1
+listermann_brewing_company,0,0,244861239296,"{""name"":""Listermann Brewing Company"",""city"":""Cincinnati"",""state"":""Ohio"",""code"":""45212"",""country"":""United States"",""phone"":""(513) 731-1130"",""website"":""http://www.listermann.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1621 Dana Ave.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.1456,""lon"":-84.4741}}",1,10,1
+coast_brewing,0,0,244495155200,"{""name"":""Coast Brewing"",""city"":""Biloxi"",""state"":""Mississippi"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":30.396,""lon"":-88.8853}}",1,49,1
+fox_river_brewing_1-fox_tail_amber_ale,0,0,244611743744,"{""name"":""Fox Tail Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+daas-daas_organic_blond,0,0,244498563073,"{""name"":""Daas Organic Blond"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""daas"",""updated"":""2010-07-22 20:00:20"",""description"":""Daas Blond is the authentic Belgian strong golden beer, its honey spice aroma and perfect balance of bitter sweet flavours are followed by a classic dry hop finish.  A perfect aperitif beer.\r\n\r\nDaas Beer is the only Belgian beer brewed in Belgium to carry both the  UK Soil Assoc organic certification and the Belgian Certsys certification whist still upholding its Belgian tradition of brewing excellence using the finest organic ingredients."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,57,1
+tied_house_cafe_brewery_san_jose,0,0,245097693184,"{""name"":""Tied House Cafe & Brewery - San Jose"",""city"":""San Jose"",""state"":""California"",""code"":""95110"",""country"":""United States"",""phone"":""1-408-295-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""65 North San Pedro""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.3362,""lon"":-121.894}}",1,1,1
+gottberg_brew_pub-octoberfest_discontinued,0,0,244631339009,"{""name"":""Octoberfest (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,58,1
+long_valley_pub_brewery-lazy_jake_porter,0,0,244861632513,"{""name"":""Lazy Jake Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_valley_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,11,1
+zea_rotisserie_and_brewery,0,0,245749579776,"{""name"":""Zea Rotisserie and Brewery"",""city"":""New Orleans"",""state"":""Louisiana"",""code"":""70130"",""country"":""United States"",""phone"":"""",""website"":""http://www.zearestaurants.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1525 St. Charles Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":29.9386,""lon"":-90.076}}",1,40,1
+ellicott_mills_brewing,0,0,244620918784,"{""name"":""Ellicott Mills Brewing"",""city"":""Ellicott City"",""state"":""Maryland"",""code"":""21043"",""country"":""United States"",""phone"":""1-410-313-8141"",""website"":""http://www.ellicottmillsbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Here at the Mills we have a very simple, yet demanding approach to producing Alpenhof beer. We use the very best ingredients available. We are efficient and precise in production method, yet we allow the product to age to its full maturity. Balance is the key to our beer.  Alpenhof beer is not created to challenge the senses. It is not created to be a complex beer. Well balanced for Alpenhof means smooth and easy-drinking. The way a beer should taste.  To achieve this well balanced taste, only the finest ingredients are used. We import our malt, hops, and yeast from Germany. (For true German style Lager beer, authentic ingredients are essential!) We might spend more for our ingredients, but it is well worth it. This is an expense you can actually taste!"",""address"":[""8308 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.2684,""lon"":-76.7994}}",1,34,1
+f_x_matt_brewing-saranac_india_pale_ale,0,0,244621443074,"{""name"":""Saranac India Pale Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A hop lover's delight. In the India Pale Ale tradition this brew is very hoppy in both aroma and flavor from the generous amounts of cascade hops used in brewing. Look for a medium to full body and golden straw color."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,35,1
+grumpy_troll_restaurant_and_brewery-liberty_pale_ale,0,0,244748976128,"{""name"":""Liberty Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grumpy_troll_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+penn_brewery-penn_oktoberfest,0,0,244983726080,"{""name"":""Penn Oktoberfest"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, deep golden-colored lager fest bier that is exceptionally smooth and mellow. Uses two-row malted barley and a combination of roasted malts. Highly rated by the National Tasting Institute."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,8,1
+moab_brewery,0,0,244860256257,"{""name"":""Moab Brewery"",""city"":""Moab"",""state"":""Utah"",""code"":""84532"",""country"":""United States"",""phone"":""1-435-259-6333"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""686 South Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.5657,""lon"":-109.55}}",1,7,1
+mad_river_brewing-jamaica_brand_sunset_ipa,0,0,244862943232,"{""name"":""Jamaica Brand Sunset IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+inveralmond_brewery,0,0,244757889024,"{""name"":""Inveralmond Brewery"",""city"":""Perth"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01738)-449448"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Inveralmond Way""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":56.4174,""lon"":-3.4779}}",1,59,1
+schooner_brewery-pegasus_pilsner,0,0,244981366784,"{""name"":""Pegasus Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+russian_river_brewing-aud_blonde,0,0,245000765441,"{""name"":""Aud Blonde"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Aud Blonde has a refined characteristic, which can be contributed to us blending pilsner malt with a unique hop called crystal. The distinctive characteristic of the crystal hop lends a citrus, almost eucalyptus quality in the aroma and mouth feel of the brew, while leaving the beer with a long dry finish."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,48,1
+vivungs_bryggeri-dragol,0,0,245744074752,"{""name"":""Dragöl"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vivungs_bryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,0,1
+nodding_head_brewpub-bill_payer_ale_bpa,0,0,244880113665,"{""name"":""Bill Payer Ale / BPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,56,1
+clner_hofbrau_frh,0,0,244495745026,"{""name"":""Clner Hofbrau Frh"",""city"":""Kln"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)221-/-2613-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Am Hof 12-14""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.9401,""lon"":6.957}}",1,50,1
+greene_king,0,0,244741111809,"{""name"":""Greene King"",""city"":""Bury St. Edmunds"",""state"":""Suffolk"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01284)-763222"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Westgate Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":52.241,""lon"":0.7157}}",1,17,1
+lakefront_brewery-fuel_cafe,0,0,244750352385,"{""name"":""Fuel Cafe"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+russian_river_brewing-lap_dance_pale_ale,0,0,244982087680,"{""name"":""Lap Dance Pale Ale"",""abv"":5.55,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,4,1
+shipwrecked_brew_pub-door_county_cherry_wheat,0,0,244983005187,"{""name"":""Door County Cherry Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipwrecked_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,6,1
+knig_ludwig_schlobrauerei_kaltenberg,0,0,244756054016,"{""name"":""Knig Ludwig Schlobrauerei Kaltenberg"",""city"":""Frstenfeldbruck"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8141-/-2430"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Augsburgerstrae 41""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.1826,""lon"":11.2522}}",1,54,1
+wynkoop_brewing-wixa_weiss,0,0,245749841920,"{""name"":""Wixa Weiss"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Anunfiltered wheat beer, weiss beer is a bavarian tradition. Our version is immensely refreshing and authentic, delivering the classic weiss aromas of clove and banana. A two-time Great American Beer Festival Medal winner in the German Style Wheat Ale category."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,42,1
+kleinbrouwerij_de_glazen_toren-jan_de_lichte,0,0,244740915202,"{""name"":""Jan de Lichte"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kleinbrouwerij_de_glazen_toren"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+lancaster_brewing_co-lancaster_winter_warmer,0,0,244740587523,"{""name"":""Lancaster Winter Warmer"",""abv"":8.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our classic Olde Ale redefines the term \""full-bodied\"" with its deliverance of complex and firm malt flavor. A fine blend of British and American hops provides an even bitterness as this beer finishes with a warming alcohol flavor."",""style"":""Old Ale"",""category"":""British Ale""}",1,15,1
+new_belgium_brewing-mothership_wit,0,0,244862681090,"{""name"":""Mothership Wit"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our first venture into organically-produced beer, Mothership Wit Organic Wheat Beer elevates the zesty Wit or White beers of Belgium. Our far-flung Beer Rangers affectionately refer to our Fort Collins brewery as the Mothership, a name that conjures images of earth shot from space and the interconnectivity of it all. Mothership Wit is brewed with wheat and barley malt, as well as coriander and orange peel spicing resulting in a balance of citrus and sour flavors held in suspension by a bright burst of carbonation.""}",1,13,1
+southern_tier_brewing_co-2xipa,0,0,245115715584,"{""name"":""2xIPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,41,1
+wyder_s_cider-dry_pear_hard_cider,0,0,245750562818,"{""name"":""Dry Pear Hard Cider"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wyder_s_cider"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,47,1
+fitger_s_brewhouse_brewery_and_grill-starfire_pale_ale,0,0,244619608064,"{""name"":""Starfire Pale Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitger_s_brewhouse_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+jolly_pumpkin_artisan_ales-la_roja,0,0,244749697025,"{""name"":""La Roja"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jolly_pumpkin_artisan_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An artisan amber ale brewed in the Flanders tradition.  Deep amber with earthy caramel, spice, and sour fruit notes developed through natural barrel aging.  Unfiltered, unpasteurized and blended from barrels ranging in age from two to ten months."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,38,1
+pinnacle_peak_patio_steakhouse_microbrewery-gunslinger_imperial_stout,0,0,244984250368,"{""name"":""Gunslinger Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pinnacle_peak_patio_steakhouse_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,9,1
+la_jolla_brewing-sealane_steam,0,0,244747665409,"{""name"":""Sealane Steam"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+cervecera_cuauhtmoc_moctezuma-noche_buena_special_holiday_amber_beer,0,0,244481982464,"{""name"":""Noche Buena Special Holiday Amber Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_cuauhtmoc_moctezuma"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+wolf_tongue_brewery-mister_hoppy_ipa,0,0,245750038530,"{""name"":""Mister Hoppy IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wolf_tongue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,43,1
+clipper_city_brewing_co-gold_ale,0,0,244481392641,"{""name"":""Gold Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""clipper_city_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+miller_brewing-olde_english_800,0,0,244868710402,"{""name"":""Olde English 800"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+sprecher_brewing,0,0,245099790336,"{""name"":""Sprecher Brewing"",""city"":""Glendale"",""state"":""Wisconsin"",""code"":""53209"",""country"":""United States"",""phone"":""1-414-964-2739"",""website"":""http://www.sprecherbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""701 West Glendale Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.1,""lon"":-87.9198}}",1,5,1
+tyranena_brewing-headless_man_amber_alt,0,0,245099200513,"{""name"":""Headless Man Amber Alt"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The ancient peoples that inhabited Wisconsin are known for building numerous celestial stone monuments and earthen effigy mounds to serve as symbols of their culture and their beliefs.  Unfortunately, most of these structures have fallen victim to the farmer's plow over the past 150 years.  Not far from the brewery, lying preserved on the floor of Rock Lake, are two effigy mounds - a Headless Man and a Turtle.  Legend tells us, as the Turtle can survive on both land and in water, its spirit helped guide the Headless Man into the afterlife.  May the Turtle's spirit guide you to happiness with a Headless Man Amber Alt.\r\n\r\nThe Headless Man is brewed in the \""old way\"" of a Düsseldorf-style Altbier.  A unique cold lagering process gives this amber ale its smooth taste."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,3,1
+hoppin_frog_brewery-barrel_aged_b_o_r_i_s_imperial_stout,0,0,244756447235,"{""name"":""Barrel-Aged B.O.R.I.S. Imperial Stout"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Made from our B.O.R.I.S. Imperial Stout, that was rated one of the World’s 50 Best Beers, and won the Gold Medal at the GABF in 2008. BARREL-AGED B.O.R.I.S. has picked up rich characters of vanilla, dark fruit, oak, and spice. It’s unbelievably complex and savory"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,55,1
+michigan_brewing-nut_brown_ale,0,0,244878278657,"{""name"":""Nut Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A mild, roasted nut and caramel flavored ale with a deep brown color. It is a medium-bodied beer with a mild to medium hop bitterness and aroma."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,52,1
+little_creatures_brewery-little_creatures_pilsner,0,0,244861239297,"{""name"":""Little Creatures Pilsner"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_creatures_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Czech Saaz hops are added early in the boil with a late hopping using a hybrid variety we keep to ourselves, giving light flavour and a soft bitterness. Lightly kilned pilsner malt gives the beer both it’s light, slightly golden colour, and leaves a crisp clean taste on the palate."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,10,1
+coopers_brewery-extra_strong_vintage_ale,0,0,244495155201,"{""name"":""Extra Strong Vintage Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coopers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""If fine wine were beer it would no doubt be Coopers Extra Strong Vintage Ale. This strong ale imparts rich full flavours that are suitable for maturation. Brewed with choice malts and an extended top fermentation, Coopers Extra Strong Vintage Ale will improve with age, becoming more interesting and complex in flavour for up to 18 months. The results are well worth the wait!""}",1,49,1
+g_heileman_brewing-old_style,0,0,244611743745,"{""name"":""Old Style"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""g_heileman_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+eel_river_brewing-certified_organic_india_pale_ale,0,0,244630552576,"{""name"":""Certified Organic India Pale Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""eel_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,57,1
+tongerlo-tongerlo_christmas,0,0,245097758720,"{""name"":""Tongerlo Christmas"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tongerlo"",""updated"":""2010-07-22 20:00:20"",""description"":""TONGERLO CHRISTMAS 6,5°\r\nCopper-coloured beer of pure spring barley, with a touch of vanilla in the aroma, a fruity and complex flavour and a smooth aftertaste."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,1,1
+great_dane_pub_and_brewing_1-black_wolf_ale,0,0,244757233664,"{""name"":""Black Wolf Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+malt_shovel_brewery-james_squire_porter,0,0,244861632514,"{""name"":""James Squire Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""malt_shovel_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,11,1
+erie_brewing_company-derailed_black_cherry_ale,0,0,244620918785,"{""name"":""Derailed Black Cherry Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewery folklore tells a story about a train engineer with a passion for the taste of Railbender Ale. With every stop he made in Erie came an equal number of stops at our brewery. One extended visit to our fermenter left the engineer in a rather befuddled state of mind. On his fateful trip out of Erie that evening, his train mysteriously derailed. The engineer swears that a huge black cherry tree had fallen across the tracks as the culprit. No such tree was ever found, but the front of the locomotive was spattered with hundreds of red sports. In tribute to this folklore our expert brewers introduce Derailed Black Cherry Ale – brewed with fresh sweet black cherries and the finest malted barley to create a truly cherrylicious ale. Please enjoy responsibly, as we would never want you to get derailed!"",""style"":""Fruit Beer"",""category"":""Other Style""}",1,34,1
+f_x_matt_brewing-saranac_mocha_stout,0,0,244621443075,"{""name"":""Saranac Mocha Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Combines the rich roasted flavor of our traditional stout with a deep, robust mocha. Look for a full-bodied taste with a crescendo of complex flavor notes."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+ham_s_restaurant_and_brewhouse,0,0,244748976129,"{""name"":""Ham's Restaurant and Brewhouse"",""city"":""Greenville"",""state"":""North Carolina"",""code"":""27834"",""country"":""United States"",""phone"":""1-252-830-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""701 Evans Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.6083,""lon"":-77.3732}}",1,37,1
+pike_pub_and_brewery-india_pale_ale,0,0,244983791616,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,8,1
+moose_s_tooth_pub_and_pizzeria-bear_tooth_ale,0,0,244860256258,"{""name"":""Bear Tooth Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moose_s_tooth_pub_and_pizzeria"",""updated"":""2010-07-22 20:00:20"",""description"":""A deep-red, full-bodied, malty ale heavily hopped with Centennial hops to produce a citrusy, spruce-like flavor and aroma. A final dose of Centennail hops in the conditioning tank lends an India Pale Ale-like aroma to the finished beer."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+mad_river_brewing,0,0,244862943233,"{""name"":""Mad River Brewing"",""city"":""Blue Lake"",""state"":""California"",""code"":""95525"",""country"":""United States"",""phone"":""1-707-668-4151"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""195 Taylor Way""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.879,""lon"":-123.993}}",1,14,1
+iron_springs_pub_brewery-honey_bunny_blonde_ale,0,0,244757889025,"{""name"":""Honey Bunny Blonde Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+sharktooth_brewing-porter,0,0,244981366785,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sharktooth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,2,1
+saint_arnold_brewing-fancy_lawnmower_beer,0,0,245000765442,"{""name"":""Fancy Lawnmower Beer"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A true German-style Kölsch. Originally brewed in Cologne, this beer is light yet has a sweet malty body that is balanced by a complex, citrus hop character. Multiple additions of German Hallertauer hops are used to achieve this delicate flavor. We use a special Kölsch yeast, an ale yeast that ferments at lager temperatures, to yield the slightly fruity, clean flavor of this beer. Fancy Lawnmower Beer is a world class brew yet light enough to be enjoyed by Texans after strenuous activities, like mowing the lawn.\r\n\r\nSaint Arnold Fancy Lawnmower Beer is best consumed at 35-45° Fahrenheit.""}",1,48,1
+voodoo_brewing_co_llc-black_magick,0,0,245744140288,"{""name"":""Black Magick"",""abv"":15.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""This is an Imperial Stout that is Brewed to great strength and complexity. We then gently age that beer in Elaigh Craig 13 1/2 year old Bourbon Barrels for 1 yr. and then primed and bottled to bottle condition for continued aging and celler life. Black Magick should be able to be aged up to about 5 years, to heighten the complexity and smooth nature of this beer. This beer should be opened to breath, pour into snifter and enjoy at 55-60 F. \r\n\r\nThis is a truly Barrel aged ale and is not to have a large carbonation. We bottle condition it to achieve cask like characteristics."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,0,1
+o_hara_s_brewpub_and_restaurant,0,0,244880179200,"{""name"":""O'Hara's Brewpub and Restaurant"",""city"":""Saint Cloud"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.5539,""lon"":-94.1703}}",1,56,1
+cooper_s_cave_ale_company-bumppo_s_brown_ale,0,0,244495810560,"{""name"":""Bumppo's Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooper_s_cave_ale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Bumppo's Brown Ale is a dark Dark Mild Ale. It is lightly hopped with a medium body, darkened and flavored with chocolate malt."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,50,1
+grupo_modelo,0,0,244741111810,"{""name"":""Grupo Modelo"",""city"":""Mexico City"",""state"":"""",""code"":"""",""country"":""Mexico"",""phone"":"""",""website"":""http://www.gmodelo.com.mx/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":19.427,""lon"":-99.1276}}",1,17,1
+lancaster_brewing_co-hop_hog_ipa,0,0,244750352386,"{""name"":""Hop Hog IPA"",""abv"":7.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our hoppiest beer to date.  This formidable India Pale Ale has a hop aroma that demands attention.  The bold, citrus hop flavor is balanced by a dry malt character that makes this refreshing ale a true classic."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,39,1
+sand_creek_brewing_company-imperial_stout,0,0,244982087681,"{""name"":""Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sand_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,4,1
+sierra_nevada_brewing_co-bigfoot_2005,0,0,244983070720,"{""name"":""Bigfoot 2005"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+lakefront_brewery-big_easy_beer,0,0,244756054017,"{""name"":""Big Easy Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,54,1
+yamhill_brewing,0,0,245749841921,"{""name"":""Yamhill Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.5235,""lon"":-122.676}}",1,42,1
+klosterbrauerei_neuzelle-golden_abbot_lager,0,0,244740980736,"{""name"":""Golden Abbot Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_neuzelle"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+mad_crab_restaurant_and_brewery,0,0,244863533056,"{""name"":""Mad Crab Restaurant and Brewery"",""city"":""Strongsville"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.3145,""lon"":-81.8357}}",1,15,1
+new_glarus_brewing_company-native_ale,0,0,244862746624,"{""name"":""Native Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,13,1
+southern_tier_brewing_co-422_pale_wheat_ale,0,0,245115715585,"{""name"":""422 Pale Wheat Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Pour 422 Pale Wheat Ale into a pint glass, give it a long whiff and you’ll realize that this isn’t your average pale golden wheat. Preserved in its unfiltered state, 422 is a fantastic session ale in which flavors of wheat, barley and hops commingle to a refreshing and zesty conclusion. Hints of orange and sweet malts waft to the fore as a touch of bitterness contributes to a smooth finish. 422 is brewed as a tribute to preserving our precious planet and it’s environment. It is responsibly packaged with over 80% recycled consumer products and is completely recyclable. Enjoy 422 all year as to take one stride closer to a eco-friendly life."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,41,1
+abdullah,0,0,89908535623680,"{""click"":""to edit"",""new in 2.0"":""there are no reserved field names""}",1,47,1
+flagstaff_brewing-bubbaganoush_pale_ale,0,0,244619608065,"{""name"":""Bubbaganoush Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flagstaff_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+jt_whitney_s_brewpub_and_eatery-ipa,0,0,244749762560,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+pyramid_ales_brewery-snow_cap,0,0,244984250369,"{""name"":""Snow Cap"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, full-bodied winter warmer crafted in the British tradition of holiday beers. This deep mahogany colored brew balances complex fruit flavors with a refreshingly smooth texture, making Snow Cap a highly drinkable and desirable cold weather companion."",""style"":""Old Ale"",""category"":""British Ale""}",1,9,1
+labatt_keith_s_brewery_oland_breweries,0,0,244747665410,"{""name"":""Labatt / Keith's Brewery / Oland Breweries"",""city"":""Halifax"",""state"":""Nova Scotia"",""code"":""0"",""country"":""Canada"",""phone"":""1-902-453-1867"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3055 Agricola Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.6598,""lon"":-63.5997}}",1,33,1
+cervecera_nacional-cabro_extra,0,0,244481982465,"{""name"":""Cabro Extra"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cervecera_nacional"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+columbus_brewing_company,0,0,244481392642,"{""name"":""Columbus Brewing Company"",""city"":""Columbus"",""state"":""OH"",""code"":""43215"",""country"":""United States"",""phone"":""614-464-2739"",""website"":""www.columbusbrewingco.com"",""type"":""brewery"",""updated"":""2011-03-08 12:19:07"",""description"":""Located just south of downtown Columbus, Ohio, adjacent to German Village in the historic Brewery District, Columbus Brewing Company Restaurant features award-winning food and beer in an upscale-casual setting. "",""address"":[""525 Short St.""]}",1,18,1
+minhas_craft_brewery,0,0,244868775936,"{""name"":""Minhas Craft Brewery"",""city"":""Monroe"",""state"":""Wisconsin"",""code"":""53566"",""country"":""United States"",""phone"":""1-608-325-3191"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1208 14th Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.6001,""lon"":-89.6422}}",1,28,1
+spring_house_brewing_company-atomic_raygun_imperial_red,0,0,245099790337,"{""name"":""Atomic Raygun Imperial Red"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""We welcome the latest release Atomic Raygun Imperial Red! Brewed with Pilsner, Chocolate and Caramel malts but well balanced with Columbus and Centennial Hops and coming in at 90 IBU's.  The Octane level on this one is coming in at 8.3!"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,5,1
+union_barrel_works-wobbly_bob_dopplebock,0,0,245099266048,"{""name"":""Wobbly Bob Dopplebock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_barrel_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark Dunkle style lager with an original gravity above 19 degrees Plato. Rich and malty, this is a strong bock with a mellow finish."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,3,1
+hue_brewery,0,0,244756512768,"{""name"":""Hue Brewery"",""city"":""Hue"",""state"":"""",""code"":"""",""country"":""Viet Nam"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hue""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":-33.2175,""lon"":151.426}}",1,55,1
+mohrenbrauerei_august_huber-gambrinus,0,0,244878344192,"{""name"":""Gambrinus"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mohrenbrauerei_august_huber"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+lost_coast_brewery-pale_ale,0,0,244861304832,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lost_coast_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+cooperstown_brewing_company-benchwarmer_porter,0,0,244495155202,"{""name"":""Benchwarmer Porter"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooperstown_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Benchwarmer\"" is a very smooth Porter brewed in accordance with the original \""high gravity\"" porters of early London. More than 4% chocolate malt, which is the most similar to the brown malts of the early 1700’s, gives \""Benchwarmer\"" its dry coffee-like finish. It is fermented with the Ringwood yeast which is an excellent yeast for the brewing of porters. The widely accepted theory of how porter got its name is that it was a very popular beer among the porters who hauled produce and goods around the marketplace of early industrialized London."",""style"":""Porter"",""category"":""Irish Ale""}",1,49,1
+gaslight_brewery-steam_beer,0,0,244611809280,"{""name"":""Steam Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gaslight_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+einbecker_brauhaus_ag-schwarzbier_dunkel,0,0,244630552577,"{""name"":""Schwarzbier / Dunkel"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""einbecker_brauhaus_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,57,1
+troegs_brewing-dreamweaver,0,0,245097824256,"{""name"":""Dreamweaver"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Long toasty days, cool breezy nights and a splash of magic provide the inspiration for the Troegs brothers’ dreamiest Single Batch creation—Dreamweaver Wheat. Combining four wheat types with Munich and Pils malts, noble Saaz hops, and a yeast strain that imparts a spicy, peppery, clove taste with a slight hint of bananas, Dreamweaver Wheat is an unfiltered blast of spicy, mouthwatering joy."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,1,1
+green_mill_brewing_saint_paul-knockadoon_irish_ale,0,0,244757299200,"{""name"":""Knockadoon Irish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mill_brewing_saint_paul"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+mccashin_s_brewery_malthouse-malt_mac_winter_ale,0,0,244861698048,"{""name"":""Malt Mac Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mccashin_s_brewery_malthouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+esser_s_cross_plains_brewery,0,0,244620918786,"{""name"":""Esser's Cross Plains Brewery"",""city"":""Cross Plains"",""state"":""Wisconsin"",""code"":""53528"",""country"":""United States"",""phone"":""1-608-798-3911"",""website"":""http://www.essersbest.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2109 Hickory Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.1147,""lon"":-89.6531}}",1,34,1
+f_x_matt_brewing-saranac_octoberfest,0,0,244621508608,"{""name"":""Saranac Octoberfest"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Octoberfest is a med-bodied, copper colored lager. It's rich, malty taste is subtly balanced by Saaz and Tettnang hops. The beer is aged slowly in the tradition of the Octoberfest beers of Munich."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,35,1
+hirschbru_privatbrauerei_hss-neuschwansteiner_bavarian_lager,0,0,244749041664,"{""name"":""Neuschwansteiner Bavarian Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hirschbru_privatbrauerei_hss"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+pivovar_pardubice_a_s,0,0,244983857152,"{""name"":""Pivovar Pardubice a.s."",""city"":""Pardubice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-466-511-321-4"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Palackho 250""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.0355,""lon"":15.762}}",1,8,1
+morland_and_co-tanners_jack,0,0,244860321792,"{""name"":""Tanners Jack"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""morland_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+manhattan_beach_brewing,0,0,244863008768,"{""name"":""Manhattan Beach Brewing"",""city"":""Manhattan Beach"",""state"":""California"",""code"":""90266"",""country"":""United States"",""phone"":""1-310-378-2744"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""124 Manhattan Beach Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.8844,""lon"":-118.411}}",1,14,1
+iron_springs_pub_brewery-shining_star_pale_ale,0,0,244757889026,"{""name"":""Shining Star Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+smoky_mountain_brewing-black_bear_ale,0,0,245097955328,"{""name"":""Black Bear Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smoky_mountain_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,2,1
+salado_creek_brewing_company-amarossa,0,0,245000830976,"{""name"":""Amarossa"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""salado_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+warwick_valley_wine_co,0,0,245744140289,"{""name"":""Warwick Valley Wine Co."",""city"":""Warwick"",""state"":""NY"",""code"":""10990"",""country"":""United States"",""phone"":""(845) 258-4858"",""website"":""http://www.wvwinery.com"",""type"":""brewery"",""updated"":""2010-12-20 16:17:52"",""description"":"""",""address"":[""114 Little York Rd""]}",1,0,1
+odell_brewing-bobby,0,0,244880179201,"{""name"":""Bobby"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+cooper_s_cave_ale_company-cooper_s_cave_pale_ale,0,0,244495810561,"{""name"":""Cooper's Cave Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cooper_s_cave_ale_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Cooper's Cave Pale Ale is an English Pale Ale throughout.It is a full bodied light colored ale with evenly pronounced hop bitterness. The grain bill consists of two English Pale Malts and an English Crystal Malt. The brewer's favorite...need we say more."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,50,1
+haarlems_biergenootschap_jopen-adriaan,0,0,244741177344,"{""name"":""Adriaan"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""haarlems_biergenootschap_jopen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+liberty_steakhouse_and_brewery,0,0,244750352387,"{""name"":""Liberty Steakhouse and Brewery"",""city"":""Myrtle Beach"",""state"":""South Carolina"",""code"":""29577"",""country"":""United States"",""phone"":""843.626.4677"",""website"":""http://www.libertysteakhouseandbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Liberty means many things to many different people. It's a celebration of the great American farmer and the rich bounty he puts on our plates.  It's a celebration of America's rich ethnic cooking styles. It's a celebration of the resurgence of the handcrafted-brewing style of the pre-prohibition small American brewery.  Liberty Steakhouse & Brewery is based on America's rich ethnic cooking styles, complimented by finely hand-crafted beers, tantalizing starters and perfectly seared steaks. We've got something brewing you're sure to like. Liberty is also a celebration of life, family and the pursuit of happiness. So bring us your hungry, your thirsty and fun-loving, we'll send you home refreshed and fulfilled."",""address"":[""1321 Celebrity Circle""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.7187,""lon"":-78.8831}}",1,39,1
+santa_fe_brewing_company-santa_fe_stout,0,0,244982087682,"{""name"":""Santa Fe Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A hearty sip of the Santa Fe Stout delights one’s taste buds first with a generous Irish serving of roast malt that rolls off the tongue with a creamy bitterness reminiscent of the finest coffee. Supported by the complex, yet light body only possible with a good Irish yeast strain, this coffee-like creaminess eventually yields to the warmth of a subtle variety of hops, and their mild, full flavor. A favorite with regular customers, this rare brew can occasionally be found on draft at restaurants in Santa Fe, but is more likely on tap at the Brewery's tasting room. Despite its intimidating dark color, this brew has an uncanny ability to convert those who claim not to like beer. The balance of flavors and complexity of aroma are recognized and appreciated by all who taste this fine brew.""}",1,4,1
+sly_fox_brewhouse_and_eatery_royersford-anniversary_ipa_ahtanum,0,0,245100249088,"{""name"":""Anniversary IPA Ahtanum"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,6,1
+leinenkugel_s_ballyard_brewery-splitfinger_stout,0,0,244756054018,"{""name"":""Splitfinger Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""leinenkugel_s_ballyard_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+yellowstone_valley_brewing,0,0,245749907456,"{""name"":""Yellowstone Valley Brewing"",""city"":""Billings"",""state"":""Montana"",""code"":""59101"",""country"":""United States"",""phone"":""406-245-0918"",""website"":""http://www.yellowstonevalleybrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2123 1st Avenue North""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.7861,""lon"":-108.498}}",1,42,1
+knigsbacher_brauerei,0,0,244740980737,"{""name"":""Knigsbacher Brauerei"",""city"":""Koblenz"",""state"":""Rheinland-Pfalz"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)261-/-1397-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""An der Knigsbach 8""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.3216,""lon"":7.5862}}",1,16,1
+main_street_brewery-mesa_cerveza_schnorzenboomer,0,0,244863533057,"{""name"":""Mesa Cerveza Schnorzenboomer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,15,1
+new_glarus_brewing_company-smoked_rye_bock,0,0,244862746625,"{""name"":""Smoked Rye Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+speakeasy_ales_and_lagers-old_godfather,0,0,245115781120,"{""name"":""Old Godfather"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""speakeasy_ales_and_lagers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,41,1
+flyers_restraunt_and_brewery-heat_seeker_hefe,0,0,244619673600,"{""name"":""Heat Seeker Hefe"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flyers_restraunt_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A Bavarian style Hefeweizen, a cloudy brew with slight hints of bannana and clove.  Light and refreshing."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,31,1
+jt_whitney_s_brewpub_and_eatery-triple_treat,0,0,244749762561,"{""name"":""Triple Treat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+raccoon_lodge_and_brewpub_cascade_brewing-celtic_copper_ale,0,0,244984315904,"{""name"":""Celtic Copper Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Celtic Copper is a mahogany hued ale with rich malt flavor and subtle hop balance; an excellent choice for those who prefer amber ales."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,9,1
+lagunitas_brewing_company-hop_stoopid,0,0,244747665411,"{""name"":""Hop Stoopid"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,33,1
+cold_spring_brewing-aspen_meadow_black_and_tan,0,0,244482048000,"{""name"":""Aspen Meadow Black and Tan"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cold_spring_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+coronado_brewing_company-four_brothers_pale_ale,0,0,244481458176,"{""name"":""Four Brothers Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""coronado_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+molson_breweries_of_canada-rickard_s_red_ale,0,0,244868841472,"{""name"":""Rickard's Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,28,1
+steamworks-coal_porter,0,0,245099790338,"{""name"":""Coal Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""As you look out over Vancouver's Coal Harbour, relax with this creamy delight. Don't let the colour fool you - this porter is rich but not overpowering with a head that lingers all the way down the glass. Just about anything goes with our Coal Porter, and you don't have to belong to \""High Society\"" to enjoy a glass with oysters."",""style"":""Porter"",""category"":""Irish Ale""}",1,5,1
+unionsbru_haidhausen,0,0,245099266049,"{""name"":""Unionsbru Haidhausen"",""city"":""Mnchen"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-477677"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Einsteinstrae 42""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.1355,""lon"":11.6009}}",1,3,1
+karl_strauss_brewery_gardens_sorrento_mesa,0,0,244756512769,"{""name"":""Karl Strauss Brewery Gardens - Sorrento Mesa"",""city"":""San Diego"",""state"":""California"",""code"":""92121"",""country"":""United States"",""phone"":""1-858-587-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9675 Scranton Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.8969,""lon"":-117.201}}",1,55,1
+moosejaw_pizza_dells_brewing_company-new_hops_ale,0,0,244878344193,"{""name"":""New Hops Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+maisel_bru-pils,0,0,244861370368,"{""name"":""Pils"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maisel_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+courthouse_pub-courthouse_copper,0,0,244495220736,"{""name"":""Courthouse Copper"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""courthouse_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+goose_island_beer_company_clybourn-xxx_porter,0,0,244611809281,"{""name"":""XXX Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+el_toro_brewing_company-el_toro_negro_oatmeal_stout,0,0,244630618112,"{""name"":""El Toro Negro Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""el_toro_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,57,1
+union_barrel_works-union_barrel_works_mai_bock,0,0,245097824257,"{""name"":""Union Barrel Works Mai-Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_barrel_works"",""updated"":""2010-07-22 20:00:20"",""description"":""A pale bock with fresh maltiness in the aroma and palate. Deep golden color with a generous amount of pure honey to smooth the high alcohol finish. Perle and Cluster hops for bittering and Sazz and Hallertau for finishing. Original gravity above 19 Plato."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,1,1
+hapa_s_brew_haus_and_restaurant-red_eye_amber,0,0,244757364736,"{""name"":""Red Eye Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hapa_s_brew_haus_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+middle_ages_brewing-kilt_tilter,0,0,244861698049,"{""name"":""Kilt Tilter"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Scottish \""90/-\"" ale. Brewed only once a year, this ale is rich and full with a dryness that is beautifully balanced with a classic malt sweetness."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,11,1
+felinfoel_brewery_co_ltd,0,0,244620984320,"{""name"":""Felinfoel Brewery Co Ltd"",""city"":""Llanelli"",""state"":""Wales"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-01554-773357"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Farmers Row""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.6987,""lon"":-4.1456}}",1,34,1
+fauerbach_brewing_company,0,0,244621508609,"{""name"":""Fauerbach Brewing Company"",""city"":""Madison"",""state"":""Wisconsin"",""code"":""53705"",""country"":""United States"",""phone"":"""",""website"":""http://www.fauerbachbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1714 Camus Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.0844,""lon"":-89.4761}}",1,35,1
+jack_s_brewing-india_pale_ale,0,0,244749041665,"{""name"":""India Pale Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jack_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+porterhouse_restaurant_and_brewpub-indian_red_ale,0,0,244983857153,"{""name"":""Indian Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""porterhouse_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+moylans_brewing_company,0,0,244860321793,"{""name"":""moylans Brewing company"",""city"":""Novato"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.moylans.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.1074,""lon"":-122.57}}",1,7,1
+mccoy_s_public_house_and_brewkitchen,0,0,244863008769,"{""name"":""McCoy's Public House and Brewkitchen"",""city"":""Kansas City"",""state"":""Missouri"",""code"":""64111"",""country"":""United States"",""phone"":""1-816-960-0866"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4057 Pennsylvania Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.0534,""lon"":-94.5919}}",1,14,1
+ithaca_beer_company-flower_power_india_pale_ale,0,0,244757889027,"{""name"":""Flower Power India Pale Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Enjoy the clover honey hue and tropical nose. Simultaneously Punchy and soothing with a big body and a finish that boasts pineapple and grapefruit. Flower power is hopped and dry-hopped five different times throughout the brewing and fermentation process."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+smuttynose_brewing_co-smuttynose_pumpkin_ale,0,0,245098020864,"{""name"":""Smuttynose Pumpkin Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Smuttynose Pumpkin Ale is our homage to the craft and heritage of America’s brewers. Recipes calling for the use of pumpkins in beer date back to early colonial times, when brewers sought to extend their supply of costly imported malt with locally grown ingredients, such as squash and “pompions.”\r\n\r\nIn that spirit, we brew our ale with the addition of pumpkin to the mash, along with traditional spices to create a delicious American original."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,2,1
+samuel_smith_old_brewery_tadcaster-organic_ale,0,0,245000830977,"{""name"":""Organic Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":""A delicately flavored golden ale in which subtle fruity esters from the Samuel Smith yeast strain interact with a background of maltiness and fresh hops."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,48,1
+weyerbacher_brewing_company-winter_ale,0,0,245744205824,"{""name"":""Winter Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""At Weyerbacher we've created a Winter Ale that is a must for any malty beer lover. Winner of a Silver Medal in the 1998 World Beer Championships, Weyerbacher Winter Ale is brewed with deep-roasted chocolate malt. The taste predominates with a warm, roasty flavor, balanced out with a slightly dry finish. It's smooth but not cloying, with a warming belt of alcohol (5.6% ABV).\r\n\r\nAlthough winter ales predate history, they are believed to have their origin in the pagan celebrations of winter solstice. Later, when monasteries produced the local brew, winter ales were made each year to commemorate the birth of Christ. Back then, winter ales were brewed full-bodied as a source of nutrition for the upcoming winter months. Today, winter ales are typified by their seasonality, their rich, malty flavors and by their deep, dark coloration.\r\n\r\nGenerally available November-March, Weyerbacher Winter Ale is the perfect libation for a winter meal, with good friends, or beside a warm fire fending off a cold winter night."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,0,1
+odell_brewing-odell_red_ale,0,0,244880244736,"{""name"":""Odell Red Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Rocky Mountain Goat is no ordinary goat. Just like Odell Red is no ordinary red. \r\n\r\nWe took the American-style red to a whole new level by adding a variety of aggressive American hops—giving this ale a distinctive fresh hop aroma and flavor. \r\n\r\nWe think you'll agree this red has some serious kick."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,56,1
+coopers_brewery,0,0,244495876096,"{""name"":""Coopers Brewery"",""city"":""Regency Park"",""state"":""South Australia"",""code"":"""",""country"":""Australia"",""phone"":""61-(08)-8440-1800"",""website"":""http://www.coopers.com.au/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Coopers Brewery produce a range of Ales,Stouts and Lagers.   Our ale range is brewed by a method of top fermentation, originating in the Middle Ages.  Coopers uses only natural ingredients including malt, hops, sugar, water and a special yeast strain that's over 90 years old.  Coopers do not use preservatives or chemicals in their ale range.   Coopers also produce Stout and Lager beers.  The Lager beers are bottom fermented in cooler conditions, matured for a short period and pasteurised."",""address"":[""461 South Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-34.8727,""lon"":138.573}}",1,50,1
+hale_s_ales_3-mongoose_ipa,0,0,244741177345,"{""name"":""Mongoose IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hale_s_ales_3"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+main_street_beer_company_1-stubborn_mule_barleywine,0,0,244872511488,"{""name"":""Stubborn Mule Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_beer_company_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+selin_s_grove_brewing_co-captain_selin_s_cream,0,0,244982087683,"{""name"":""Captain Selin's Cream"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""selin_s_grove_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,4,1
+southampton_publick_house-double_ice_bock,0,0,245100314624,"{""name"":""Double Ice Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southampton_publick_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,6,1
+long_trail_brewing_co-harvest,0,0,244878737408,"{""name"":""Harvest"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A light & malty experience modeled after one of our favorite old style English brews."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,54,1
+la_jolla_brew_house-pilsner,0,0,244740980738,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+maisel_bru,0,0,244863598592,"{""name"":""Maisel Bru"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-91827-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Moosstrae 46""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.8928,""lon"":10.9131}}",1,15,1
+new_holland_brewing_company-dragon_s_milk,0,0,244862746626,"{""name"":""Dragon's Milk"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A barrel-aged, strong-ale with a soft and rich caramel-malt character intermingled with deep vanilla tones dancing in an oak bath. Unmistakably distinctive and hauntingly remarkable, Dragon’s Milk’s warming complexity pairs well with smoked meats and cheeses, red meat, or a nice cigar.""}",1,13,1
+sprecher_brewing-anniversary_ale,0,0,245115781121,"{""name"":""Anniversary Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,41,1
+frederic_robinson_ltd,0,0,244619673601,"{""name"":""Frederic Robinson Ltd."",""city"":""Stockport"",""state"":""Cheshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(0161)-480-6571"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Unicorn Brewery""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.499,""lon"":-72.9007}}",1,31,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2005_sherry,0,0,244749762562,"{""name"":""Harvest Ale 2005 (Sherry)"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+railway_brewing-ironhorse_not_brown,0,0,244984381440,"{""name"":""Ironhorse Not Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""railway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,9,1
+lancaster_brewing_co-lancaster_milk_stout,0,0,244747730944,"{""name"":""Lancaster Milk Stout"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""We are proud to offer one of the few surviving examples of this traditional English style sweet stout.  A bold dark ale, bursting with roasted barley dryness and mellowed by hints of chocolate and coffee."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,33,1
+daleside_brewery-monkey_wrench_dark_ale,0,0,244482048001,"{""name"":""Monkey Wrench Dark Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""daleside_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,19,1
+cricket_hill-cricket_s_nocturne,0,0,244481458177,"{""name"":""Cricket's Nocturne"",""abv"":4.5,""ibu"":19.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""cricket_hill"",""updated"":""2010-12-06 13:10:41"",""description"":""Cricket's Nocturne: a dark lager that combines a mild crispness with subtle toasty, chocolate notes to make it the perfect thirst quencher on days when there's a chill in the air. It;s a great accompaniment to hearty winter meals, or dessert by the fireside."",""style"":""American-Style Dark Lager"",""category"":""North American Lager""}",1,18,1
+moon_river_brewing_company-swamp_fox_ipa,0,0,244868841473,"{""name"":""Swamp Fox IPA"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Like its namesake, this ale is known for the sneak attack. Hop-heads will enjoy its assertive bitterness and huge floral, dry hop aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,28,1
+steamworks_brewing_durango-steam_engine_steam,0,0,245099855872,"{""name"":""Steam Engine Steam"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks_brewing_durango"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+upstream_brewing_old_market,0,0,245099266050,"{""name"":""Upstream Brewing Old Market"",""city"":""Omaha"",""state"":""Nebraska"",""code"":""68102"",""country"":""United States"",""phone"":""1-402-344-0200"",""website"":""http://www.upstreambrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Derived from the Native American meaning of Omaha, upstream or against the current, the Upstream Brewing Company is just that�a restaurant different from the rest. Since opening in 1996, the Upstream has been all about fresh�from the handcrafted beers to the locally grown produce to the lively atmosphere. Not to mention the friendly, knowledgeable staff. So stop in today, and find out why we've been named one of Omaha's Best several years running."",""address"":[""514 South Eleventh Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.2553,""lon"":-95.9306}}",1,3,1
+kona_brewing-stout,0,0,244756512770,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,55,1
+moylan_s_brewery_restaurant-moylander_double_ipa,0,0,244878344194,"{""name"":""Moylander Double IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""“If One is Good, Then Two is Better!” Our Moylander Double IPA is fat and resiny, with aggresive and excessive hops swinging on on an enormous malt backbone like naughty monkeys on a vine. Double malt, double hops - do the math, it’s academic. This brew has twice the things you’re looking for, and it’s big enough to share with the one you love. And isn’t that what it's all about?"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,52,1
+marquette_harbor_brewery_and_restaurant,0,0,244861370369,"{""name"":""Marquette Harbor Brewery and Restaurant"",""city"":""Marquette"",""state"":""Michigan"",""code"":""49855"",""country"":""United States"",""phone"":""1-906-228-3533"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""119 South Front Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":46.5431,""lon"":-87.3929}}",1,10,1
+crescent_city_brewhouse-red_stallion,0,0,244495286272,"{""name"":""Red Stallion"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""crescent_city_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+goose_island_beer_company_fulton_street-baderbrau_pilsener,0,0,244611874816,"{""name"":""Baderbräu Pilsener"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_fulton_street"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+fifty_fifty_brewing_co-roundabout_oatmeal_stout,0,0,244630618113,"{""name"":""Roundabout Oatmeal Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Everyone has their price. For some, it's measured in dollars per hour, for others it's powder days. For those that have the gift of passion for the dark side, it's measured in pints of Oatmeal Stout. Another one of FiftyFifty's seasonals, the Roundabout Oatmeal Stout is brown to black in color and nearly opaque. It has a velvet like mouthfeel, moderate hints of dark dried fruit, espresso beans and Dark Chocolate... and just a hint of hop bitterness. The addition of Flaked Oats gives this brew its wonderful creamy texture. Roundabout Oatmeal Stout is one of a series of Stouts that FiftyFifty Brewing Co. will produce during the course of the year. Enjoy!"",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,57,1
+united_breweries_limited-flying_horse_royal_lager_beer,0,0,245097889792,"{""name"":""Flying Horse Royal Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""united_breweries_limited"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,1,1
+harmon_brewing_company-brown_s_point_esb,0,0,244757364737,"{""name"":""Brown's Point ESB"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harmon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This E.S.B. is definately the house favorite. Exclusively hopped with Fuggles, this full bodied amber ale finishes smooth and clean. 5.6% ABV"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,58,1
+midnight_sun_brewing_co-berserker_imperial_stout,0,0,244861763584,"{""name"":""Berserker Imperial Stout"",""abv"":12.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Vicious and viscous, this menacing brew pours opaque black with a creamy maduro-colored head. Its aroma offers seductive whiskey, chewy red wine, dark fruit and lavish tobacco. Berserker Imperial Stout invades your taste buds with in-your-face flavor. Weighing in at almost 13% alcohol by volume, Berserker is completely out-of-control. Give it a good fight.\r\n\r\nThis version of Berserker Imperial Stout was aged in both red wine and whiskey barrels. The entire batch was brought back together before being packaged in kegs and 22-oz bottles."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,11,1
+firehouse_brewery_restaurant-pilsner,0,0,244620984321,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+fitzpatrick_s_brewing-mcbride_porter,0,0,244621574144,"{""name"":""McBride Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fitzpatrick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,35,1
+joboy_s_brew_pub-manheim_stout,0,0,244749041666,"{""name"":""Manheim Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joboy_s_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""An intense and rich, dark, roasty ale with substantial alcohol warming. Requires several months of aging."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,37,1
+prairie_rock_brewing_elgin-honey_brown_ale,0,0,244983922688,"{""name"":""Honey Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prairie_rock_brewing_elgin"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,8,1
+new_holland_brewing_company,0,0,244860321794,"{""name"":""New Holland Brewing Company"",""city"":""Holland"",""state"":""Michigan"",""code"":""49423"",""country"":""United States"",""phone"":""1-616-355-6422"",""website"":""http://newhollandbrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Established in 1996, NHBC has grown from a scrappy two-man start-up to a thriving regional microbrewery, recognized for its creativity and artistry. We are very proud of our accomplishments thus far, and believe in earning our place in the brewing industry and in our customer's hearts and minds everyday. All of our beer is brewed in Holland, Michigan at one of our two locations. We brew, cellar and package the main brands for distribution at our production facility on the north-side of Holland, at 690 Commerce Court. In response to our considerable growth, we opened the new brewery in October of 2006, replacing the original headquarters.  We also brew beer and distill spirits in our pub. The pub is a great place for us to explore new ideas, meet our customers in a comfortable setting and provide a place of community for all who visit. The beers made here are typically special brews that rarely see their way outside of the friendly confines of our pub. In 2007, we brewed and shipped just over 7,400 barrels of beer. (A barrel = 31 gallons.) We work hard to bring you an authentic, interesting and gratifying experience."",""address"":[""66 East Eighth Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.79,""lon"":-86.1041}}",1,7,1
+mercury_brewing_company-ipswich_oatmeal_stout,0,0,244863008770,"{""name"":""Ipswich Oatmeal Stout"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep, rich, and malty with hints of chocolate and coffee. It's what espresso would be if it had the gumption to be beer. We use three different hop additions, specially selected crystal malts, roasted barley, and oatmeal to give it a soft and silky mouth feel. Makes a great dessert. Or meal."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,14,1
+jt_whitney_s_brewpub_and_eatery-rauch_ale,0,0,244757889028,"{""name"":""Rauch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+smuttynose_brewing_co-smuttynose_winter_ale,0,0,245098086400,"{""name"":""Smuttynose Winter Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Smuttynose Winter Ale is a full-bodied, amber beer brewed with a special Trappist ale yeast. Stylistically reminiscent of a Belgian Abbey Double, it features fruity aromas and flavor, balanced by soft Crystal hops. Warming, mellow & pleasantly complex, Smuttynose Winter Ale is your perfect cold weather companion."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,2,1
+samuel_smith_old_brewery_tadcaster,0,0,245000896512,"{""name"":""Samuel Smith Old Brewery (Tadcaster)"",""city"":""Tadcaster"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01937)-839201"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""High Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":53.8834,""lon"":-1.2625}}",1,48,1
+on_tap_bistro_brewery-belgian_double,0,0,244880244737,"{""name"":""Belgian Double"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+crane_river_brewpub_and_cafe,0,0,244495876097,"{""name"":""Crane River Brewpub and Cafe"",""city"":""Lincoln"",""state"":""Nebraska"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.8069,""lon"":-96.6817}}",1,50,1
+hasserder_brauerei,0,0,244741242880,"{""name"":""Hasserder Brauerei"",""city"":""Wernigerode"",""state"":""Sachsen-Anhalt"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)3943-/-9360"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Auerhahnring 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.8439,""lon"":10.7533}}",1,17,1
+michigan_brewing-celis_raspberry,0,0,244872511489,"{""name"":""Celis Raspberry"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An authentic Belgian fruit flavored and spiced ale with a pronounced raspberry flavor and aroma, accented by orange peel and coriander. Clear and bright golden color with a raspberry tint."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,39,1
+sierra_madre_brewing_co,0,0,244982153216,"{""name"":""Sierra Madre Brewing Co."",""city"":""Monterrey"",""state"":""Nuevo Leon"",""code"":""64630"",""country"":""Mexico"",""phone"":""+52 (81) 8348-4896"",""website"":""http://www.smbc.com.mx/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An interesting microbrewery -- brewpub -- that started brewing in 1998."",""address"":[""Av. Insurgentes 3915""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":25.6811,""lon"":-100.363}}",1,4,1
+southern_tier_brewing_co-choklat,0,0,245100380160,"{""name"":""Choklat"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The Popol Vuh, the sacred book of the Maya, unfolds a complex web of mystery around a beverage known as xocoatl (ch-co-atle). At Southern Tier, we’re not surprised that hieroglyphs of the ancient Maya depict chocolate being poured for rulers and gods. Even through the many voyages of Columbus, the mystical bean remained nothing more than a strange currency of the native peoples.\r\n\r\nMoving through centuries, the circular journey of cacao has been realized in our brewing house, encompassing the complexity of the darkest, bitter-sweet candy together with the original frothy cold beverage of the ancient Maya to bring to you our Blackwater Series Choklat Stout. We have combined the finest ingredients to tempt your senses & renew the power & interrelation of history in every bottle.\r\n11.0% abv • 195º L • Imperial Chocolate Stout • 22 oz / 1/6 keg\r\n2-row barley / caramel 60 malt / barley flakes / chocolate malt / bittersweet Belgian chocolate / kettle hops: chinook & willamette"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,6,1
+maui_brewing_co-bikini_blonde_lager,0,0,244878868480,"{""name"":""Bikini Blonde Lager"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maui_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest beer, made from 100% malted barley. This blonde lager is what sailors really swam to shore for; it's light, with very little bitterness and a slight malt finish.""}",1,54,1
+marin_brewing,0,0,244863860736,"{""name"":""Marin Brewing"",""city"":""Larkspur Landing"",""state"":""California"",""code"":""94939"",""country"":""United States"",""phone"":""1-415-461-4677"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1809 Larkspur Landing Circle""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.9479,""lon"":-122.511}}",1,16,1
+mccoy_s_public_house_and_brewkitchen-deluxe_cream_stout,0,0,244863598593,"{""name"":""Deluxe Cream Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mccoy_s_public_house_and_brewkitchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,15,1
+niagara_falls_brewing-premium_light,0,0,244862812160,"{""name"":""Premium Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+sprecher_brewing-sprecher_irish_stout,0,0,245115781122,"{""name"":""Sprecher Irish Stout"",""abv"":5.73,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This tribute to St. Patrick's Day is smooth and creamy, with distinctive flavors and aromas reminiscent of bitter-sweet chocolate and dark coffee. Just one precious batch of this robust, ebony colored stout is brewed each year."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+gasthaus_gosebrauerei_bayerischer_bahnhof-gose,0,0,244619673602,"{""name"":""Gose"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthaus_gosebrauerei_bayerischer_bahnhof"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+jw_lees_and_co_brewers_ltd-moonraker,0,0,244749762563,"{""name"":""Moonraker"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+randy_s_fun_hunters_brewery_restaurant_and_banquet_center,0,0,244984381441,"{""name"":""Randy's Fun Hunters Brewery Restaurant and Banquet Center"",""city"":""Whitewater"",""state"":""Wisconsin"",""code"":""53190"",""country"":""United States"",""phone"":""1-262-473-8000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""841 East Milwaukee Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.832,""lon"":-88.714}}",1,9,1
+logjam_microbrewery-lager,0,0,244870414336,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""logjam_microbrewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+de_proef_brouwerij-reinaert_flemish_wild_ale,0,0,244614430720,"{""name"":""Reinaert Flemish Wild Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+de_halve_maan,0,0,244613971968,"{""name"":""De Halve Maan"",""city"":""Brugge"",""state"":""West-Vlaanderen"",""code"":""BE-8000"",""country"":""Belgium"",""phone"":""+32-50-33.26.97"",""website"":""http://www.halvemaan.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Walplein 26""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.2026,""lon"":3.2242}}",1,18,1
+moonlight_brewing,0,0,244868907008,"{""name"":""Moonlight Brewing"",""city"":""Fulton"",""state"":""California"",""code"":""95439"",""country"":""United States"",""phone"":""1-707-528-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 316""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.498,""lon"":-122.78}}",1,28,1
+tailgate_beer-tailgate_hefeweizen,0,0,245099855873,"{""name"":""Tailgate Hefeweizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tailgate_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""TailGate Beer does the German style wheat beer right. Hints of citrus, complemented by sprinkles of spice that makes a German, full flavored brew that is really hard to say right.  Proud of the names ‘weizen’ (wheat) base ingredient, TGB draws most of its flavor from the famed grass plant. This Hef is one truly crisp, and refreshing unfiltered ale that garnishes well with a lemon or an orange!   Be sure to impress your friends with your fine tuned palate and sophisticated verbiage next time you belly up to order your TailGate Beer “HEH-feh-vite-zehn”"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,5,1
+voodoo_brewing_co_llc,0,0,245744467968,"{""name"":""Voodoo Brewing Co.,LLC"",""city"":""Meadville"",""state"":""Pennsylvania"",""code"":""16335"",""country"":""United States"",""phone"":""1-(412)-468-0295"",""website"":""http://www.voodoobrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""215 1/5 Arch St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.6372,""lon"":-80.1549}}",1,3,1
+la_jolla_brew_house-pale_ale,0,0,244756512771,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+new_belgium_brewing-blue_paddle_pilsener,0,0,244878344195,"{""name"":""Blue Paddle Pilsener"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Climb on in and grab a paddle. Our first foray into lagered beers, Blue Paddle Pilsener-Lager, is a Czech style pilsener with a refreshing crispness from noble hops and a rich, malty finish. ‘Blue Paddle’ refers to the implement our warehouse manager’s Grandma once used to lovingly paddle his a** when she caught him stealing sips of her beer. With more body than a traditional Belgian pils, Blue Paddle is reflective of Europe’s finest pilseners."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,52,1
+milwaukee_ale_house-sheepshead_stout,0,0,244861370370,"{""name"":""Sheepshead Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,10,1
+de_proef_brouwerij-van_den_vern_grand_cru,0,0,244627406848,"{""name"":""Van den Vern Grand Cru"",""abv"":9.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+gordash_brewing_company,0,0,244611940352,"{""name"":""Gordash Brewing Company"",""city"":""Fort Lauderdale"",""state"":""Florida"",""code"":""33312"",""country"":""United States"",""phone"":""(954) 261-0668"",""website"":""http://holymackerelbeers.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3804 S.W 30th Ave""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":26.0745,""lon"":-80.1806}}",1,12,1
+flagstaff_brewing-agassiz_amber,0,0,244630683648,"{""name"":""Agassiz Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flagstaff_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,57,1
+victory_brewing-golden_monkey_tripel,0,0,245097955328,"{""name"":""Golden Monkey Tripel"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Strong and sensual, this golden, Belgian-style ale glows with goodness. The richness of German malts and Belgian yeast are tempered by a sparkling approach and overall light body. Considerable depth of character with abundant herbal, fruity notes make this one to savor."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,1,1
+harvest_moon_brewery_cafe-altruistic_american_ale,0,0,244757364738,"{""name"":""Altruistic American Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvest_moon_brewery_cafe"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+midnight_sun_brewing_co-brewtality_espresso_black_bier,0,0,244861829120,"{""name"":""Brewtality Espresso Black Bier"",""abv"":9.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Assistant Brewer Jeremiah works  primarily at Midnight Sun Brewing Company with regular hours at the AK Rock Gym and the occasional shift or two Kaladi Brothers Coffee. To keep up with his weekly work schedule, he enjoys locally roasted coffee in the morning--OK, sometimes in the afternoon as well--and locally brewed beer in the evening-- OK, sometimes in the morning as well. This beer brings two of his worlds together as an incredible antidote for hibernation.""}",1,11,1
+flossmoor_station_brewery-bavarian_helles,0,0,244621049856,"{""name"":""Bavarian Helles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+flying_dog_brewery-road_dog_ale,0,0,244621574145,"{""name"":""Road Dog Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Blessed by Hunter S. Thompson... Road Dog Porter was our first beer to be illustrated by Ralph Steadman. This is a dark, rich and malty beer, with hints of chocolate and licorice resulting from the use of four prized malts."",""style"":""Porter"",""category"":""Irish Ale""}",1,35,1
+jt_whitney_s_brewpub_and_eatery-goldenshine,0,0,244749107200,"{""name"":""Goldenshine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+pyramid_ales_brewery-pyramid_amber_weizen,0,0,244983922689,"{""name"":""Pyramid Amber Weizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed by the original Wheat Beer Pioneers, Amber Weizen is left unfiltered for extra flavor and aroma. \r\n\r\nRich amber in color, Pyramid Amber Weizen features three different kinds of caramel barley malts and nugget hops resulting in an exceptionally smooth and well-balanced beer that follows in the tradition of our flagship style, Pyramid Hefe Weizen."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,8,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_amber_ale,0,0,244860321795,"{""name"":""Nøgne Ø Amber Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""A rather malty brew, which we think goes very well with cheeses - even well matured blue cheeses. You can also try our Amber paired with a grilled dish. Recommended serving temperature 10°C/50°F."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+middle_ages_brewing-highlander_80,0,0,244863074304,"{""name"":""Highlander 80/-"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Scottish-style brown ale with an attractive dark cherry color; a soft, lightly chewy body and a hint of licorice in its malt character. Rich and dark yet not too strong. 1996 Best Show at the Chicago Real Ale Festival."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,14,1
+kelmer_s_brewhouse-klassic,0,0,244757954560,"{""name"":""Klassic"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kelmer_s_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+sockeye,0,0,245098151936,"{""name"":""Sockeye"",""city"":""Boise"",""state"":""Idaho"",""code"":""83704"",""country"":""United States"",""phone"":""(208) 658-1533"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3019 N Cole Rd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.6326,""lon"":-116.275}}",1,2,1
+san_marcos_brewery_grill-cinnabarr,0,0,245000896513,"{""name"":""Cinnabarr"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+onopa_brewing,0,0,244880310272,"{""name"":""Onopa Brewing"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0389,""lon"":-87.9065}}",1,56,1
+de_dochter_van_de_korenaar-noblesse,0,0,244627800064,"{""name"":""Noblesse"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_dochter_van_de_korenaar"",""updated"":""2010-07-22 20:00:20"",""description"":""pure malt blond ale with a touch of wheat malt.\r\ngreat hop-aroma  due to hop-filtering the hot wort.\r\nbottle-conditioned."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,50,1
+hofbruhaus_traunstein-export_hell,0,0,244741242881,"{""name"":""Export-Hell"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hofbruhaus_traunstein"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+michigan_brewing-hamtramck,0,0,244872577024,"{""name"":""Hamtramck"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brightly filtered, highly carbonated, golden premium-style lager. It is lightly hopped with Polish Lublin hops. The beer will appeal to those who prefer the lighter American style beers."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-apricot,0,0,245099331584,"{""name"":""Apricot"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,4,1
+spaten_franziskaner_brau-pils,0,0,245100380161,"{""name"":""Pils"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+maumee_bay_brewing,0,0,244878868481,"{""name"":""Maumee Bay Brewing"",""city"":""Toledo"",""state"":""Ohio"",""code"":""43602"",""country"":""United States"",""phone"":""1-419-243-1302"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""27 Broadway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.6432,""lon"":-83.5384}}",1,54,1
+maumee_bay_brewing-belgian_trippel,0,0,244863860737,"{""name"":""Belgian Trippel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maumee_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+mercury_brewing_company-ipswich_nut_brown,0,0,244863664128,"{""name"":""Ipswich Nut Brown"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth, hoppy brown ale, full-bodied with caramel and chocolate malt flavors."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,15,1
+north_country_brewery-rock_n_wheat,0,0,244862812161,"{""name"":""Rock-n-Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This unfiltered, true German wheat beer has hints of clove and banana which the yeast produces during fermentation."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,13,1
+stoudt_s_brewery-fat_dog_stout,0,0,245115781123,"{""name"":""Fat Dog Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,41,1
+grand_lake_brewing-plaid_bastard,0,0,244746682368,"{""name"":""Plaid Bastard"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grand_lake_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,31,1
+kaiser_bru-original_lager,0,0,244749828096,"{""name"":""Original Lager"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kaiser_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+real_ale_brewing_company-phoenixx_double_esb,0,0,244984446976,"{""name"":""Phoenixx Double ESB"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""real_ale_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our winter seasonal is inspired by the great ales of the UK but brewed with a distinctively American attitude. English crystal malt gives Phoenixx its subtle toffee and caramel notes, but this ale is about hops. The blend of English hops, highlighted by its namesake, Phoenix, yields a complex hop character that dominates this special brew."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,9,1
+marin_brewing-eldridge_grade_white_knuckle_ale,0,0,244870414337,"{""name"":""Eldridge Grade White Knuckle Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+delafield_brewhaus-oktoberfest,0,0,244614496256,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,19,1
+de_proef_brouwerij-andelot_mystique,0,0,244614037504,"{""name"":""Andelot Mystique"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+moosejaw_pizza_dells_brewing_company-dunkel_lager,0,0,244868907009,"{""name"":""Dunkel Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+the_blind_bat_brewery_llc-wheatley_hills_weizenbock,0,0,245099921408,"{""name"":""Wheatley Hills Weizenbock"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_blind_bat_brewery_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Malty and yeasty, with some sweetness along with hints of cloves and banana. (thanks to the yeast!) \r\n\r\nLow hop bitterness, highly carbonated. Unfiltered, and so a bit cloudy with that magical yeast. \r\n\r\nPairs well with Thai, Szechuan, Mexican, and Caribbean -- und Deutsche Nahrung! (German Food!)"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,5,1
+water_street_brewery-porter,0,0,245744533504,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+lagunitas_brewing_company-lucky_13_anniversary_release,0,0,244756578304,"{""name"":""Lucky 13 Anniversary Release"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,55,1
+nicolet_brewing,0,0,244878409728,"{""name"":""Nicolet Brewing"",""city"":""Florence"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":45.9222,""lon"":-88.2518}}",1,52,1
+minneapolis_town_hall_brewery-thunderstorm,0,0,244861435904,"{""name"":""Thunderstorm"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our popular summer seasonal brewed with honey, orange, and lemonrass."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,10,1
+de_struise_brouwers-pannepot,0,0,244627472384,"{""name"":""Pannepot"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_struise_brouwers"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+gottberg_brew_pub-doppelbock_discontinued,0,0,244611940353,"{""name"":""Doppelbock (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,12,1
+flying_dog_brewery,0,0,244630683649,"{""name"":""Flying Dog Brewery"",""city"":""Denver"",""state"":""Colorado"",""code"":""80205"",""country"":""United States"",""phone"":""303-292-5027"",""website"":""http://www.flyingdogales.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2401 Blake St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7582,""lon"":-104.99}}",1,57,1
+vyturio_alaus_darykla,0,0,245744205824,"{""name"":""vyturio Alaus Darykla"",""city"":""Klaipda"",""state"":"""",""code"":""0"",""country"":""Lithuania"",""phone"":""370-46-484-000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Kuli vart 7""]}",1,1,1
+heartland_brewery_union_square-not_tonight_honey_porter,0,0,244757430272,"{""name"":""Not Tonight Honey Porter"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,58,1
+midnight_sun_brewing_co-cafe_amsterdam_s_10th_anniversary_gruit,0,0,244861829121,"{""name"":""Cafe Amsterdam's 10th Anniversary Gruit"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""SPECIAL COMMEMORATIVE BEER\r\n\r\nFormer brewer Ken Pajak teamed up with MSBC to create a very special beer to celebrate the 10 years that he and wife Shauna have owned Café Amsterdam. Since taking over this mid-town establishment, the Pajaks added a “beer & wine license” and subsequently transformed the European-style café into a beer-centric place to grab breakfast, lunch, dinner and all beers during, around and between these fabulous meals. \r\n\r\nThe cafe's beer menu is extensive and all-encompassing. The staff is knowledgeable and enthusiastic. And the beer pour is always right— temperature, glass, presentation. \r\n\r\n“No hops were harmed in the brewing of this beer.” \r\n\r\nGruit is an old style—one that incorporates spices, herbs and fruit but no hops. The latter detail makes this style very rare in modern times. Café Amsterdam’s Gruit is dark, strong and interesting. This combination of pale and dark malts, sage, thyme, cinnamon, black peppercorn and fresh orange peel composes distinctive, substantial flavors that meld together wonderfully. And at 12% ABV, this cellar-friendly ale is ready to lay you down! Thoroughly enjoy this old-world beer now but stash some away for later dwelvings. \r\n\r\nAvailability: \r\nAK - 22-oz bottles (limited release begins 05/29/2009)"",""style"":""Fruit Beer"",""category"":""Other Style""}",1,11,1
+flying_dog_brewery-in_heat_wheat,0,0,244621049857,"{""name"":""In-Heat Wheat"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""In-Heat Wheat Hefeweizen\r\nShe taunts and teases... In-Heat Wheat is our German-style Hefeweizen. She is a full flavor beer, perfect for the more adventurous craft beer drinker. The addition of malted white wheat gives this brew its smooth, full mouthfeel. A proprietary yeast creates intriguing flavors of bananas and cloves."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,34,1
+flying_fish_brewing_company-extra_pale_ale,0,0,244621574146,"{""name"":""Extra Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_fish_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""An original American pale ale, our XPA highlights the subtle, sophisticated flavors and aromas of our Midwestern two-row malt and imported aromatic and Munich malts. Washington-grown Mt. Hood and Magnum hops create an extremely balanced beer with a beautiful straw color."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2000,0,0,244749107201,"{""name"":""Harvest Ale 2000"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,37,1
+railway_brewing,0,0,244983988224,"{""name"":""Railway Brewing"",""city"":""Anchorage"",""state"":""Alaska"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":61.2181,""lon"":-149.9}}",1,8,1
+odell_brewing-cutthroat_porter,0,0,244860387328,"{""name"":""Cutthroat Porter"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Not quite a stout but definitely no lightweight, Cutthroat Porter is smooth and robust. Inspired by the classic London porters, we use dark roasted malts to create a deep, rich color and flavor that hint at chocolate and coffee. We named it Cutthroat Porter as our tribute to the Colorado state fish - with its own rich heritage and unmistakable dark coloring. And while we're big fans of small batches, here's to the currently threatened Cutthroat population reaching mass quantities."",""style"":""Porter"",""category"":""Irish Ale""}",1,7,1
+midnight_sun_brewing_co-cohoho_imperial_ipa,0,0,244863074305,"{""name"":""CoHoHo Imperial IPA"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""When the loveable \""hopheads\"" at Humpy's Great Alaskan Alehouse requested a winter version of alehouse favorite Sockeye Red IPA, our brewers instinctively spawned CoHoHo Imperial IPA.\r\n\r\nCoHoHo begins with generous measures of pale two-row and specialty malts along with spirit-boosters like maple syrup, brown sugar and honey. Hefty doses of Cascade, Centennial and Simcoe hops beautifully balance that outrageous malt bill and heighten the festive character of this exuberant beer."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,14,1
+klosterbrauerei_neuzelle-porter,0,0,244757954561,"{""name"":""Porter"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""klosterbrauerei_neuzelle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,59,1
+southern_tier_brewing_co-old_man_winter_ale,0,0,245098151937,"{""name"":""Old Man Winter Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,2,1
+santa_fe_brewing_company-state_pen_porter,0,0,245000896514,"{""name"":""State Pen Porter"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A trademark beer of the Santa Fe Brewing Company’s master brewer, Ty Levis, the State Pen Porter has every reason to be one of his favorites. It is flavorful, swimming with notes of nuts and chocolate; it is drinkable, so drinkable that it is almost as if pint after pint were drinking itself."",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+otto_s_pub_and_brewery-zeno_black_lager,0,0,244880310273,"{""name"":""Zeno Black Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,56,1
+de_proef_brouwerij-saison_imperiale,0,0,244627865600,"{""name"":""Saison Imperiale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""de_proef_brouwerij"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+humboldt_brewing-storm_cellar_porter,0,0,244741242882,"{""name"":""Storm Cellar Porter"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,17,1
+mickey_finn_s_brewery-old_roundout_pale_ale,0,0,244872577025,"{""name"":""Old Roundout Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,39,1
+stone_brewing_co-13th_anniversary_ale,0,0,245099397120,"{""name"":""13th Anniversary Ale"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Stone 13th Anniversary Ale pours brilliant deep red with a light tan foam. Up front, the aroma is all piney, resinous and citrus hops. Upon tasting, the hops are still on the front, and they are balanced with the malty, toffee like flavors contributed from the blend of crystal and amber malts used in the brewhouse. The finish is deliciously bitter, with a touch of warmth provided by the 9.5% alcohol. Bitterness comes in at 90+ IBU."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,4,1
+stoudt_s_brewery-stoudt_s_double_india_pale_ale,0,0,245100445696,"{""name"":""Stoudt's Double India Pale Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Strong, full-bodied ale with an intense hop character and deep golden color"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,6,1
+miller_brewing-icehouse,0,0,244878868482,"{""name"":""Icehouse"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""America's first domestic ice beer, Icehouse is traditionally brewed, fermented and, just before aging, its temperature is lowered to below freezing. This process imparts the beer's smoothness and an alcohol content that's slightly higher (5.5% by volume) than other regular premium beer brands. Icehouse was introduced in 1993 and has reinforced its position as the ultimate beer for wind-up and pre-game occasions. Blending humor and high-energy excitement, Icehouse marketing encourages its target consumers to take occasions to the next level with a great-tasting beer."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,54,1
+mendocino_brewing_hopland-eye_of_the_hawk,0,0,244863926272,"{""name"":""Eye of the Hawk"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,16,1
+middle_ages_brewing-wizard_s_winter_ale,0,0,244863664129,"{""name"":""Wizard's Winter Ale"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A hearty british style strong ale with a deep chestnut color. A warming elixir that's magically delicious."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,15,1
+olde_peninsula_brewpub_and_restaurant-1_2_3_ale,0,0,244862812162,"{""name"":""1,2,3 Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,13,1
+taylor_s_crossing_brewing-baden_powell_cream_ale,0,0,245115846656,"{""name"":""Baden Powell Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_crossing_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,41,1
+grand_teton_brewing_1-moose_juice_stout,0,0,244746747904,"{""name"":""Moose Juice Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grand_teton_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,31,1
+kentucky_hemp_beer_company-beer,0,0,244749893632,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kentucky_hemp_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+redfish_new_orleans_brewhouse,0,0,244984446977,"{""name"":""RedFish New Orleans Brewhouse"",""city"":""Boulder"",""state"":""Colorado"",""code"":""80302"",""country"":""United States"",""phone"":""1-303-440-5858"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2027 13th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.0187,""lon"":-105.279}}",1,9,1
+maui_brewing_co,0,0,244870479872,"{""name"":""Maui Brewing Co."",""city"":""Lahaina, Maui"",""state"":""Hawaii"",""code"":""96761"",""country"":""United States"",""phone"":""808.669.3474"",""website"":""http://mauibrewingco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Maui Brewing Co., with a brewpub in Kahana and production brewery in Lahaina, has built a reputation for creating handcrafted beers brewed using the finest natural ingredients.  We have become one of the area's most popular dining locations and are the island's only microbrewery.  Our menu offers a broad selection of fine foods to satisfy any palate."",""address"":[""4405 Honoapiilani Highway #217""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":20.9721,""lon"":-156.677}}",1,33,1
+dick_s_brewing-double_diamond_winter,0,0,244614496257,"{""name"":""Double Diamond Winter"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dick_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+denver_chophouse_and_brewery-honey_wheat,0,0,244614103040,"{""name"":""Honey Wheat"",""abv"":4.46,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""denver_chophouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+new_belgium_brewing,0,0,244868907010,"{""name"":""New Belgium Brewing"",""city"":""Fort Collins"",""state"":""Colorado"",""code"":""80524"",""country"":""United States"",""phone"":""1-888-622-4044"",""website"":""http://www.newbelgium.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We'll set the scene: 1989. Belgium. Boy on bike. (OK, make that a young man of 32). As our aspiring young homebrewer rides his mountain bike with fat tires through European villages famous for beer, New Belgium Brewing Company was but a glimmer in his eye. Or basement. For Jeff Lebesch would return to Fort Collins with a handful of ingredients and an imagination full of recipes. And then there was beer. Jeff's first two basement-brewed creations? A brown dubbel with earthy undertones named Abbey and a remarkably well-balanced amber he named Fat Tire. To say the rest was history would be to overlook his wife's involvement. Kim Jordan was New Belgium's first bottler, sales rep, distributor, marketer and financial planner. And now, she's our CEO."",""address"":[""500 Linden Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.5929,""lon"":-105.07}}",1,28,1
+the_cambridge_house-alt,0,0,245099921409,"{""name"":""Alt"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_cambridge_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Alt, German for \""old,\"" is a traditional medium-bodied ale in which we use an array of the finest German malts & a generous smount of noble hops to produce a crisp, clean and refreshing \""bier.\"""",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,5,1
+weyerbacher_brewing_company-bravo,0,0,245744533505,"{""name"":""Bravo"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""As for Bravo, according to Head Brewer, Chris Wilson, the base of the beer comes from pale, wheat, and crystal malts and features some roasted barley while Pilgrim and Hallertauer make up the light hop profile."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,3,1
+lanchester_brewing-storm_super_premium_malt_liquor,0,0,244756578305,"{""name"":""Storm Super Premium Malt Liquor"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lanchester_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+oak_creek_brewery,0,0,244878409729,"{""name"":""Oak Creek Brewery"",""city"":""Sedona"",""state"":""Arizona"",""code"":""86336"",""country"":""United States"",""phone"":""928-204-1300"",""website"":""http://oakcreekbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2050 Yavapai Dr""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":34.8661,""lon"":-111.796}}",1,52,1
+minnesota_brewing,0,0,244861435905,"{""name"":""Minnesota Brewing"",""city"":""Saint Paul"",""state"":""Minnesota"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.9442,""lon"":-93.0861}}",1,10,1
+deep_creek_brewing-big_bear_stout,0,0,244627537920,"{""name"":""Big Bear Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""deep_creek_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+govnor_s_public_house-2_brothers,0,0,244611940354,"{""name"":""2 Brothers"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,12,1
+founders_hill_brewing-maibock,0,0,244630749184,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_hill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,57,1
+wdi_bru_huus-blond,0,0,245744271360,"{""name"":""Blond"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+heavenly_daze_brewery_and_grill,0,0,244757430273,"{""name"":""Heavenly Daze Brewery and Grill"",""city"":""Denver"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.7392,""lon"":-104.985}}",1,58,1
+midnight_sun_brewing_co-mercury_belgian_style_small_beer,0,0,244861894656,"{""name"":""Mercury - Belgian Style Small Beer"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Messenger of the gods, Mercury symbolizes commerce, travel, thievery, wit and wealth. MERCURY cleverly stole its essence from mistress lover VENUS. Second runnings of the voluptuous quadrupel created this small yet fascinating beer. Indian coriander acknowledges the traveler; a distinct Belgian yeast contributes wit & charm."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,11,1
+four_peaks_brewing-black_betty_schwartzbier,0,0,244621049858,"{""name"":""Black Betty Schwartzbier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This almost black lager originates from Germany and is most closely associated with Porter. The difference being the long maturation period (or lagering time) required to produce a true Schwartzbier. The flavor is reminiscent of treacle, coffee and toasted malt. It is not and should not be perceived as burnt or ashy like some stouts. Black Betty has 5% alc/vol and a smooth character that marks most lager beers.\r\n\r\nThe name, of course, comes from the Huddy Ledbetter song from the 1940’s which was made popular by the band Ram Jam and later by the Black Crows and U2, among others."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,34,1
+fort_collins_brewery,0,0,244621639680,"{""name"":""Fort Collins Brewery"",""city"":""Fort Collins"",""state"":""Colorado"",""code"":""80524"",""country"":""United States"",""phone"":""1-970-472-1499"",""website"":""http://www.fortcollinsbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1900-B East Lincoln Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.5832,""lon"":-105.042}}",1,35,1
+la_jolla_brew_house-amber,0,0,244749107202,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brew_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,37,1
+rch_brewery-old_slug_porter,0,0,244983988225,"{""name"":""Old Slug Porter"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rch_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,8,1
+ohio_brewing-stout,0,0,244860387329,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ohio_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+milwaukee_ale_house-belgian_wit,0,0,244863139840,"{""name"":""Belgian Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+kulmbacher_brauerei_ag-eku_28,0,0,244757954562,"{""name"":""EKU 28"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,59,1
+stewart_s_brewing,0,0,245098151938,"{""name"":""Stewart's Brewing"",""city"":""Bear"",""state"":""Delaware"",""code"":""19701"",""country"":""United States"",""phone"":""1-302-836-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""219 Governor's Square""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.6318,""lon"":-75.6628}}",1,2,1
+seabright_brewery-red_nose,0,0,245000962048,"{""name"":""Red Nose"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+oyster_bar_bistro_and_brewery-oyster_stout,0,0,244880310274,"{""name"":""Oyster Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oyster_bar_bistro_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,56,1
+delafield_brewhaus-old_27_barleywine,0,0,244627865601,"{""name"":""Old #27 Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""delafield_brewhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+jacob_leinenkugel_brewing_company-1888_bock,0,0,244741308416,"{""name"":""1888 Bock"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""In 1888, After enduring one of the coldest winters on record, the employees of Jacob Leinenkugel's spring brewery crafted their first seasonal beer to celebrate the coming of spring. They blended dark and pale roasted malted barley with select hops and allowed for longer aging to create a robust beer with an exceptionally creamy head. Unchanged since 1888, You'll find our bock's sturdy bod and deep color perfect to draw you out of one season and the into next."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,17,1
+mission_springs_brewing-cream_ale,0,0,244872642560,"{""name"":""Cream Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mission_springs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+stone_brewing_co-2004_symposium_ale,0,0,245099462656,"{""name"":""2004 Symposium Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+sullivan_s_black_forest_brew_haus_grill,0,0,245100445697,"{""name"":""Sullivan's Black Forest Brew Haus & Grill"",""city"":""Frankenmuth"",""state"":""Michigan"",""code"":""48734"",""country"":""United States"",""phone"":""1-800-890-6877"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""281 Heinlein Strasse""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.3152,""lon"":-83.7314}}",1,6,1
+millrose_brewing-prairie_inn_pilsner,0,0,244878934016,"{""name"":""Prairie Inn Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millrose_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+mercury_brewing_company-ipswich_winter,0,0,244863926273,"{""name"":""Ipswich Winter"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A British style Old Ale perfect for easing the cold winter months, our Winter Ale offers a malt selection with hints of fig and chocolate, creating the perfect cozy balance of hops and malt."",""style"":""Old Ale"",""category"":""British Ale""}",1,16,1
+midnight_sun_brewing_co-3767_belgian_style_ipa_with_brett,0,0,244863664130,"{""name"":""3767 Belgian-style IPA with Brett"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The extensive distance between two breweries on the West Coast – 3767 miles – is bridged by this collaboration beer. Brewers Gabe Fletcher of Midnight Sun Brewing Company [Anchorage, AK] and Colby Chandler of Ballast Point Brewing Company [San Diego, CA] designed and brewed an exciting representation of their passions: hops, Belgian yeast, oak aging and Brettanomyces. \r\n\r\nJust prior to the Great Alaska Beer & Barley Wine Fest in JAN 2009, Gabe and Colby brewed a West Coast-worthy IPA at Midnight Sun Brewing Company. This hop-centric beer became the jumping-off point for other intense flavors. During its course to completion, 3767 was affected by three different yeast strains--including Brettanomyces, aged for several months in French oak Cabernet Sauvignon barrels, and then bottle- and keg-conditioned. \r\nThe plan is for 3767 to hit Anchorage, Seattle, Portland, San Francisco and San Diego in NOV 2009 for a West Coast Toast. Here’s to the collaborative spirit readily found in our brewing industry. Clink!"",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,15,1
+oskar_blues_grill_and_brew-gubna_imperial_ipa,0,0,244862877696,"{""name"":""Gubna Imperial IPA"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oskar_blues_grill_and_brew"",""updated"":""2010-07-22 20:00:20"",""description"":""Emphasizing that complexity of character can arise from simple elements, this ale is made with three malts and one hop. Its light amber color and slightly spicy malt character are derived from the use of German Dark Munich Malt and Rye Malt respectively. North American 2-row barley combines with the other grains to lay the foundation for the hop onslaught to come. Summit hops are used exclusively in the boil for bitterness, flavor and aroma but it doesn’t end there. Post-fermentation dry hopping allows the 9.5% ABV monstrosity to gently coax the citrus rind and grapefruit aroma to join the 100 IBUs already present. This beer should greet you with a pungent citrus blast, provide a spicy yet round middle and finish with a brisk, clean bitterness."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,13,1
+the_livery-hoppy_chick,0,0,245115846657,"{""name"":""Hoppy Chick"",""abv"":5.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Named for mug club member and local jewelry maker, Angie Caldwell. English Maris Otter pale malt, English Crystal malt, and a blend of English and North American hops create this amber, hoppy IPA with just the right balance."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,41,1
+great_dane_pub_and_brewing_1-old_glory_american_pale_ale,0,0,244746747905,"{""name"":""Old Glory American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+kulmbacher_brauerei_ag-kapuziner_weissbier,0,0,244749893633,"{""name"":""Kapuziner Weißbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+revolution_brewing_llc-bottom_up_wit,0,0,244984446978,"{""name"":""Bottom Up Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""revolution_brewing_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Light, refreshing belgian-style wheat beer spiced with coriander and orange peel"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,9,1
+middle_ages_brewing-middle_ages_apricot_ale,0,0,244870479873,"{""name"":""Middle Ages Apricot Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing and delightful ale with the subtle flavor and aroma of apricots. A wonderful change from the ordinary. This is not a sweet fruit beer."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,33,1
+dixon_s_downtown_grill-solitaire_stout,0,0,244614561792,"{""name"":""Solitaire Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dixon_s_downtown_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+egan_brewing-cheap_koln,0,0,244614103041,"{""name"":""Cheap Köln"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""egan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+new_holland_brewing_company-existential,0,0,244868972544,"{""name"":""Existential"",""abv"":11.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Consider it an extremely hoppy barleywine, or a really big IPA. Either way, ten hop additions contribute to its lush and intriguing body. Aggressive dry-hopping brings a strong citrus character to the aroma. The flavor and smell of orange-blossoms pervade throughout the experience."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,28,1
+the_livery-bluejackets_best,0,0,245099921410,"{""name"":""Bluejackets Best"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a single malt-English pale, and single hop-English Fuggles, India Pale Ale with a rich golden color and spicy finish. Named for brewery supporters John and Cindy Bundick, with reference to John's service on a submarine."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,5,1
+wharf_rat-oliver_pagan_porter,0,0,245744664576,"{""name"":""Oliver Pagan Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wharf_rat"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,3,1
+legends_brewhouse_eatery_of_green_bay-wheat,0,0,244756643840,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legends_brewhouse_eatery_of_green_bay"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+oldenberg_brewery-premium_verum,0,0,244878409730,"{""name"":""Premium Verum"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oldenberg_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+mission_springs_brewing-india_pale_ale,0,0,244861435906,"{""name"":""India Pale Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mission_springs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+dinkelacker_schwaben_bru-das_schwarze_dark,0,0,244627603456,"{""name"":""Das Schwarze / Dark"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""dinkelacker_schwaben_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+govnor_s_public_house-pale_ale,0,0,244738752512,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,12,1
+fox_river_brewing_1-winnebago_wheat,0,0,244630749185,"{""name"":""Winnebago Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fox_river_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,57,1
+weinkeller_brewery_berwyn-berliner_weisse,0,0,245744271361,"{""name"":""Berliner Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+hoffbrau_steaks_brewery_1-shawnee_amber_ale,0,0,244757430274,"{""name"":""Shawnee Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+midnight_sun_brewing_co-obliteration_iii,0,0,244861894657,"{""name"":""Obliteration III"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With passion and purpose, we present this series of hop-centric beers. Using different hop varieties and brewing techniques, we aim to capture bold, distinct hop characteristics in aroma, flavor and finish. While we explore the\r\nworld of hops, we invite you to learn along with us: these beers offer an incredible opportunity to experience the diversity of hops while engaging the palate and obliterating the senses.\r\n\r\nObliteration III is yet another dynamic Double IPA. Its aroma is pungent with fragrant notes of citrus, spice, pine and alcohol. A sturdy malt platform provides the perfect stage for showcasing these high alpha-acid hops, creating flavors and textures that entice then intrigue. Obliteration III finishes with poignant bitterness."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,11,1
+fratellos_restaurant_and_brewery,0,0,244621115392,"{""name"":""Fratellos Restaurant and Brewery"",""city"":""Appleton"",""state"":""Wisconsin"",""code"":""54915"",""country"":""United States"",""phone"":""1-920-991-0000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4301 West Wisconsin""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.2678,""lon"":-88.4731}}",1,34,1
+gilde_brauerei-ratskeller,0,0,244621639681,"{""name"":""Ratskeller"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gilde_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+lake_superior_brewing-old_man_winter_warmer_2001,0,0,244749107203,"{""name"":""Old Man Winter Warmer 2001"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_superior_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+rivertowne_pour_house-old_wylie_s_ipa,0,0,244983988226,"{""name"":""Old Wylie's IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rivertowne_pour_house"",""updated"":""2010-07-22 20:00:20"",""description"":""In honor of our friend and mascot, Wylie the fish, we are hooking you up with an aggressively hopped India Pale, the staple for any fishing trip! This beer is a hop lover’s dream!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+old_hat_brewery-caramel_rye,0,0,244860387330,"{""name"":""Caramel Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,7,1
+milwaukee_ale_house-duggie_meyer_wee_heavy,0,0,244863139841,"{""name"":""Duggie Meyer Wee Heavy"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,14,1
+kulmbacher_brauerei_ag-monchshof_kellerbrau,0,0,244757954563,"{""name"":""Mönchshof Kellerbräu"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kulmbacher_brauerei_ag"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+stone_brewing_co-imperial_stout_2001,0,0,245098151939,"{""name"":""Imperial Stout 2001"",""abv"":9.47,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,2,1
+sierra_nevada_brewing_co-southern_hemisphere_harvest_fresh_hop_ale,0,0,245000962049,"{""name"":""Southern Hemisphere Harvest Fresh Hop  Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our newest addition to our Harvest family is Southern Hemisphere Harvest. This is the first time we know of that an American brewer has put out a beer with fresh-picked hops from the southern hemisphere. The inaugural ale will debut in late April and will feature fresh Pacific Hallertau, New Zealand Motueka and New Zealand Southern Cross hops, all from New Zealand. \r\n\r\nLike our Celebration Ale, the fresh hops in this beer are dried right after being picked then shipped immediately to Chico for brewing so that they retain their peak aromatics and flavors. To ensure the freshest hops possible, we went to the added expense of flying these hops from New Zealand to Chico so we could brew with them the week after they were picked."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+pivovar_nchod,0,0,245004173312,"{""name"":""Pivovar Nchod"",""city"":""Nchod"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-491-407-111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dobroovsk 130""]}",1,56,1
+erie_brewing_company-drake_s_crude,0,0,244627931136,"{""name"":""Drake's Crude"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""erie_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""In 1859 Col. Edwin L. Drake successfully drilled the first oil well in Northwest Pennsylvania. Because of the project known as \""Drake's Folly,\"" Pennsylvania was actually responsible for almost half of the world's oil production until the 1901 oil boom in Texas. Erie Brewing Co. reflects on our regions oil history and oil rush by producing a crude oil Black, silky smooth, malt bonanza oatmeal stout."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,50,1
+labatt_ontario_breweries-labatt_50,0,0,244741308417,"{""name"":""Labatt 50"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""John and Hugh Labatt, grandsons of founder John K. Labatt, launched Labatt 50 in 1950 to commemorate 50 years of partnership. The first light-tasting ale introduced in Canada, Labatt 50 was Canada’s best-selling beer until 1979 when, with the increasing popularity of lagers, it was surpassed by Labatt Blue. Labatt 50 is fermented using a special ale yeast, in use at Labatt since 1933. Specially-selected North American hops and a good balance of dryness, complemented by a fruity taste, provide Labatt 50 with all the distinguishing features of a true ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+moon_river_brewing_company-savannah_fest,0,0,244872642561,"{""name"":""Savannah Fest"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This German-style Festival bier has a rich orange hue. Its medium body is complemented by a Munich malt toastiness and premium German hops which are a blend of Hallertau, Spalt, Hersbruck and Saaz, yielding a spicy, \""noble hop\"" aroma."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,39,1
+stone_brewing_co-vertical_epic_04_04_04,0,0,245099462657,"{""name"":""Vertical Epic 04.04.04"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,4,1
+the_bruery,0,0,245100511232,"{""name"":""The Bruery"",""city"":""Placentia"",""state"":""California"",""code"":""92870"",""country"":""United States"",""phone"":""714-996-6258"",""website"":""http://www.thebruery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We are A small craft brewery located in Orange County, California. Our simple but often confusing name is a fusion of 'brewery' with our family name, Rue. Our calling is to create beers with character and depth using the simplest and purest of means. We do not filter or pasteurize our beers. All of our bottled beers gain carbonation through 100% bottle conditioning, allowing carbonation to naturally occur through a secondary bottle fermentation. We strive to use unconventional ingredients, and we will proudly state what we put in our beers. We enjoy serving you, your friends and your family."",""address"":[""715 Dunn Way""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.8614,""lon"":-117.88}}",1,6,1
+milwaukee_ale_house-dark_belgian_wit,0,0,244878934017,"{""name"":""Dark Belgian Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""milwaukee_ale_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+midnight_sun_brewing_co,0,0,244863991808,"{""name"":""Midnight Sun Brewing Co."",""city"":""Anchorage"",""state"":""Alaska"",""code"":""99507"",""country"":""United States"",""phone"":""1-907-344-1179"",""website"":""http://www.midnightsunbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Since firing up its brew kettle in 1995, Midnight Sun Brewing Company has become a serious yet creative force on the American brewing front. From concept to glass, Midnight Sun relies on an art marries science approach, mixing tradition with innovation, to design and craft bold, distinctive beers for Alaska...and beyond. We at Midnight Sun find inspiration in the untamed spirit and rugged beauty of the Last Frontier and develop unique beers with equally appealing names and labels. But the company's true focus remains in its dedication to producing consistently high-quality beers that provide satisfying refreshment in all seasons... for Alaskans and visitors alike.  From our Pacific Northwest locale, we offer our wonderful beers on draft throughout Alaska and in 22-ounce bottles throughout Alaska and Oregon. We invite you to visit our hardworking, little brewery in South Anchorage every chance you get!"",""address"":[""8111 Dimond Hook Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":61.1473,""lon"":-149.844}}",1,16,1
+midnight_sun_brewing_co-anchor_witbier_with_brettanomyces,0,0,244863729664,"{""name"":""Anchor Witbier with Brettanomyces"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian witbier begins with equal parts malted wheat and pale barley to create its traditional cloudy white appearance. The addition of Brettanomyces gives ANCHOR its trademark \""green apple\"" or \""horse blanket\"" aroma and lends tartness to the flavor and finish. At over 6% ABV, this ANCHOR's got a bit of more kick than most wits."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,15,1
+panther_brewing_company-ziggy_socky_premium_lager_beer,0,0,244985757696,"{""name"":""Ziggy Socky Premium Lager Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""panther_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+the_livery-paris_roubaix_pale_ale,0,0,245115912192,"{""name"":""Paris-Roubaix Pale Ale"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Named after one of the longest running bicycle races in France and aptly nicknamed \""The Hell Of The North\"", the Paris-Roubaix has been held every April since 1915. This Pale Ale is brewed with Belgian and German malts and bittered with 3 different American hops for a pleasing balance."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+half_moon_bay_brewing-harbor_light_ale,0,0,244746747906,"{""name"":""Harbor Light Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_moon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+lakefront_brewery-broke_spoke_pilsner,0,0,244749959168,"{""name"":""Broke Spoke Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+rock_bottom_restaurant_brewery_minneapolis-heifer_weizen,0,0,244984512512,"{""name"":""Heifer-Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,9,1
+midnight_sun_brewing_co-obliteration_iv,0,0,244870545408,"{""name"":""Obliteration IV"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""With passion and purpose, we present this series of hop-centric beers. Using different hop varieties and brewing techniques, we aim to capture bold, distinct hop characteristics in aroma, flavor and finish. While we explore the\r\nworld of hops, we invite you to learn along with us: these beers offer an incredible opportunity to experience the diversity of hops while engaging the palate and obliterating the senses.\r\n\r\nObliteration IV is a tremendous Double Wheat beer. Its aroma is pungent with fragrant notes of citrus, spice, pine and alcohol. An even malt-to-wheat ratio provides a sturdy yet satisfying base for showcasing these high alpha-acid hops, creating flavors and textures that entice then intrigue. An American wheat beer yeast allows Obliteration IV to finish with unadulterated hop bitterness."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,33,1
+double_mountain_brewery_taproom-hop_lava,0,0,244614561793,"{""name"":""Hop Lava"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""double_mountain_brewery_taproom"",""updated"":""2010-07-22 20:00:20"",""description"":""This big, glowing, powerful IPA is packed with assertive Northwest hops that are floral, citrusy and resinous. A healthy dose of Munich malt helps to provide backbone and balance against the hoppy attack. The result? Explosive!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+f_x_matt_brewing-saranac_belgian_ale,0,0,244614103042,"{""name"":""Saranac Belgian Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saranac Belgian Ale is Deliciously Fruity. It is brewed with a generous amount of Belgian Aromatic Malt, Hand selected hops, and a traditional Belgian ale yeast. Brewed in the \""Trappist Style\""."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,18,1
+niagara_falls_brewing-saaz_pilsner,0,0,244868972545,"{""name"":""Saaz Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+the_livery-verchuosity,0,0,245099986944,"{""name"":""Verchuosity"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewmaster Steve took his Belgian Amber Ale and re-fermented it in a merlot cask with 100# of sweet Michigan cherries from Husteds Farm Market. He than moved the resulting beer into another cask with 30# of tart cherries. 5 fermentations due to wild yeast and 9 months later, we have our version of a Belgian Kriek. Named after our good friend and musician, April Verch."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,5,1
+yakima_brewing_and_malting_grant_s_ales-spiced_ale,0,0,245744664577,"{""name"":""Spiced Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yakima_brewing_and_malting_grant_s_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,3,1
+magic_hat-roxy_rolles,0,0,244879196160,"{""name"":""Roxy Rolles"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""A wintry amber ode to the open road.  Our wintry amber ramble of sweet carmelized malt and spicy hops is for those who make their own roads.  Dry hopped with simcoe hops."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,55,1
+pacific_rim_brewing-blacktop_porter,0,0,245002272768,"{""name"":""Blacktop Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,52,1
+molson_breweries_of_canada-ice,0,0,244861435907,"{""name"":""Ice"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+dragonmead_microbrewery,0,0,244627603457,"{""name"":""Dragonmead Microbrewery"",""city"":""Warren"",""state"":""Michigan"",""code"":""48089"",""country"":""United States"",""phone"":""1-586-776-9428"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""14600 East Eleven Mile Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.493,""lon"":-82.9753}}",1,49,1
+great_dane_pub_and_brewing_1-drop_anchor_steam,0,0,244738818048,"{""name"":""Drop Anchor Steam"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+goose_island_beer_company_clybourn-oktoberfest,0,0,244630749186,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,57,1
+wernesgruner_brauerei,0,0,245744271362,"{""name"":""Wernesgrüner Brauerei"",""city"":""Steinberg/Sachsen"",""state"":""Sachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)37462-/-61-0"",""website"":""http://www.wernesgruener.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""founded 1436"",""address"":[""Bergstrae 4""]}",1,1,1
+hoffbrau_steaks_brewery_2-oktoberfest,0,0,244757495808,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoffbrau_steaks_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,58,1
+midnight_sun_brewing_co-the_viking_belgian_style_dark_strong_ale,0,0,244861894658,"{""name"":""The Viking Belgian-style Dark Strong Ale"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""SPECIAL COMMEMORATIVE BEER\r\n\r\nTo commemorate the life of a huge-hearted and long-time friend from the homebrewing community, Midnight Sun Brewing Company brewed a very special beer in honor of David Yanoshek, who was fondly known as “Yano”. \r\n\r\nThis big strong beer celebrates the abundant life of an incredible man with an enormous yet ever engaging laugh. Yano pursued life with a Viking spirit, endless love and boundless energy for family, friends, scouts…and beer. \r\n\r\nA big strong beer for a big strong guy, The Viking Belgian-style Dark Strong Ale boasts a beautiful balance of character and complexity. Dark roasted malts, Belgian yeast, star anise and sweet-ripened raisins come together in an amazing ale that can be enjoyed now and cellared for later celebrations. \r\n\r\nAs you lock horns with this commemorative ale, toast to Yano. With his incredibly stoic spirit and his irrepressible laugh, Yano was the gentle giant who will forever touch our lives. Pröst! \r\n\r\nAll proceeds from sales of this beer will be donated to the Yanoshek family.\r\n\r\nAvailability: \r\nAK - 22-oz bottles (limited release begins 09/12/2008)"",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,11,1
+free_state_brewing-ad_astra_ale,0,0,244621115393,"{""name"":""Ad Astra Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""free_state_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,34,1
+gray_brewing-black_and_tan,0,0,244748124160,"{""name"":""Black and Tan"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gray_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,35,1
+lancaster_brewing_co-spring_bock,0,0,244749172736,"{""name"":""Spring Bock"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional German style lager. Characterized by a deep copper color and rich malt flavor. Balanced with German hops.\r\n\r\nAvailable at the Brewery and in bottles & cases from March - May."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+route_66_brewery,0,0,244984053760,"{""name"":""Route 66 Brewery"",""city"":""Saint Louis"",""state"":""Missouri"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.647,""lon"":-90.225}}",1,8,1
+otto_s_pub_and_brewery-arthur_s_mild_ale,0,0,244860387331,"{""name"":""Arthur's Mild Ale"",""abv"":3.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A British-style mild ale. Milds are a common ale type in England where session ales are lower in alcohol but not low on flavor. Ours has a strong malt backbone and is very quaffable."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,7,1
+montana_brewing,0,0,244863139842,"{""name"":""Montana Brewing"",""city"":""Billings"",""state"":""Montana"",""code"":""59101"",""country"":""United States"",""phone"":""1-406-252-9200"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Montana Brewing Company...small brewery...BIG BEER!"",""address"":[""113 North Broadway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.7822,""lon"":-108.506}}",1,14,1
+lake_louie_brewing,0,0,244757954564,"{""name"":""Lake Louie Brewing"",""city"":""Arena"",""state"":""Wisconsin"",""code"":""53503"",""country"":""United States"",""phone"":""1-608-753-2675"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7556 Pine Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.1706,""lon"":-89.9324}}",1,59,1
+stout_brothers_public_house-stronghold_pilsner,0,0,245098217472,"{""name"":""Stronghold Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stout_brothers_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+six_rivers_brewery,0,0,245001027584,"{""name"":""Six Rivers Brewery"",""city"":""McKinleyville"",""state"":""California"",""code"":""95519"",""country"":""United States"",""phone"":""1-707-839-7580"",""website"":""http://www.sixriversbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1300 Central Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.9491,""lon"":-124.102}}",1,48,1
+pleasanton_main_street_brewery-atta_boy_ipa,0,0,245004238848,"{""name"":""Atta Boy IPA"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pleasanton_main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,56,1
+fifty_fifty_brewing_co-foggy_goggle_belgian_white,0,0,244627931137,"{""name"":""Foggy Goggle Belgian White"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fifty_fifty_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""FiftyFifty's \""Wit\"" beer, Foggy Goggle is a Belgian Style Wheat Beer, cousin of the German Hefeweizen. An unfiltered beer, Foggy Goggle is brewed true to style, using a yeast strain that originated in Belgium, with just a hint of orange peel, lemon peel, and chamomile. The appearance is an opaque yellow with a wonderfully fluffy head. The predominant aroma is citrus with a hint of coriander, and a unique spicy note. With citrus playing a big part of the flavor, Foggy Goggle is a very refreshing choice."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,50,1
+lagunitas_brewing_company-imperial_stout,0,0,244741373952,"{""name"":""Imperial Stout"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,17,1
+moosejaw_pizza_dells_brewing_company-north_of_the_border_porter,0,0,244872642562,"{""name"":""North of the Border Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+stoney_creek_brewing_company-double_chocolate_porter,0,0,245099528192,"{""name"":""Double Chocolate Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoney_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,4,1
+the_narragansett_brewing_company-narragansett_lager,0,0,245100511233,"{""name"":""Narragansett Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_narragansett_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Made on Honor, sold on Merit. Flavorful lager."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,6,1
+minocqua_brewing_company-firestarter_smoked_lager,0,0,244878999552,"{""name"":""Firestarter Smoked Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+north_coast_brewing_company-acme_california_pale_ale,0,0,244863991809,"{""name"":""Acme California Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This easy-drinking Pale Ale revives the name of one of the early icons of California brewing. Clean-tasting and pleasantly malty, Acme Pale is brewed with Yakima Valley hops, American two-row malt and British specialty malts for depth."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+milagro_brewery_and_grill,0,0,244863729665,"{""name"":""Milagro Brewery and Grill"",""city"":""Bernalillo"",""state"":""New Mexico"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.3,""lon"":-106.551}}",1,15,1
+pelican_pub_brewery-doryman_s_dark_ale,0,0,244985823232,"{""name"":""Doryman's Dark Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pelican_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our American Brown Ale has a dark brown color, with a balanced aroma of roasted malts and Northwest-grown hops. The sweetness of the ale and crystal malts blend beautifully with the assertive flavors of Cascade and Mt. Hood hops. A brew to be savored.\r\n\r\nThis beer originated as a prize-winning homebrew many years ago. When Darron, the Head Brewer, began designing the beers for the Pelican Pub and Brewery, he adapted his old 5 gallon homebrew recipe to his new 15 bbl (465 gallon) brewery. It was well worth the effort, for not only has the Doryman's Dark Ale been a perennial favorite here at the Pelican Pub, but it has garnered prestigious professional awards."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,13,1
+the_round_barn_winery_brewery-round_barn_winter_wheat,0,0,245115912193,"{""name"":""Round Barn Winter Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_round_barn_winery_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Winter Wheat is a rich, brown beer with hints of caramel and citrus creating a warming yet refreshing winter beer. Enjoy with Cajun or spicy cuisine. Round Barn beer is bottle conditioned, decant into a pint glass before drinking for the best taste experience.""}",1,41,1
+harpoon_brewery_boston-harpoon_ale,0,0,244746813440,"{""name"":""Harpoon Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""From Harpoon's site:\r\n\r\n\""When first seeing Harpoon Ale in a glass, you will notice its golden caramel color. You will also see that it is not excessively carbonated. High carbonation would mask this beer’s subtle flavor. The first aroma will be fruity. This is produced by the yeast and is a signature characteristic of Harpoon’s proprietary yeast strain. The second perceptible aroma is from the malt, with a delicate caramel note. Upon tasting Harpoon Ale, you will find that the malty, fruity character is nicely balanced by the mild hop bitterness. It has a smooth, medium body. The finish of this beer is crisp but not dry.\r\n\r\n\r\nThe overall character of this beer is fruity, balanced, and mild.\"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+left_hand_brewing_company-left_hand_milk_stout,0,0,244749959169,"{""name"":""Left Hand Milk Stout"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Sweet Stout"",""category"":""British Ale""}",1,38,1
+sa_brain_co_ltd,0,0,244984512513,"{""name"":""SA Brain & Co. Ltd."",""city"":""Cardiff"",""state"":""Wales"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(02920)-402060"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Crawshay Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.4736,""lon"":-3.179}}",1,9,1
+midnight_sun_brewing_co-specialty_beer_oak_aged_black_double_ipa,0,0,244870545409,"{""name"":""Specialty Beer: Oak-Aged Black Double IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This Specialty Beer Black Double IPA celebrates Specialty Imports' success in importing and distributing the world's best wines and beers to the appreciative folks in Alaska. This \""Specialty Beer\"" brings together smooth, dark malts with intense aromatic hops to create a wonderfully balanced yet committed-to-flavor ale. Then this ale was aged in oak barrels for several month""}",1,33,1
+dreher_srgyrak_zrt,0,0,244614627328,"{""name"":""Dreher Srgyrak Zrt."",""city"":""Budapest"",""state"":"""",""code"":"""",""country"":""Hungary"",""phone"":""36-1-432-9700"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Jszbernyi t 7-11""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.4921,""lon"":19.1422}}",1,19,1
+firehouse_brewing-firehouse_red,0,0,244614168576,"{""name"":""Firehouse Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""firehouse_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+north_coast_brewing_company-old_stock_ale_2001,0,0,244868972546,"{""name"":""Old Stock Ale 2001"",""abv"":11.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,28,1
+the_livery-yorkshire_brown,0,0,245099986945,"{""name"":""Yorkshire Brown"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the style of Northern England, this brown ale is dark and rich, with just a hint of chocolate malt and East Kent Golding hops in the finish.""}",1,5,1
+yards_brewing-yards_india_pale_ale,0,0,245744730112,"{""name"":""Yards India Pale Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""IPAs were originally brewed to survive the epic sea voyages from England to India. Ours is no different. Hailing from a firm malt background and loaded through and through with hops, this beer will surely survive the journey from your fridge to your couch."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,3,1
+mammoth_brewing,0,0,244879261696,"{""name"":""Mammoth Brewing"",""city"":""Mammoth Lakes"",""state"":""California"",""code"":""93546"",""country"":""United States"",""phone"":""1-760-934-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""24 Lake Mary Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.6484,""lon"":-118.983}}",1,55,1
+philadelphia_brewing_co-rowhouse_red,0,0,245002338304,"{""name"":""Rowhouse Red"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""philadelphia_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From our city of neighborhoods we offer you this \""Biére de Mars,\"" or ruby farmhouse ale. In true Philadelphia fashion, we meld American and European ingredients into a complex ale with flavors of toasted malt and rye. Rowhouse Red is the perfect accompaniment for some quality time in the backyard garden (or on the front stoop) of your urban farmhouse."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,52,1
+new_belgium_brewing-la_folie_falling_rock,0,0,244861501440,"{""name"":""La Folie Falling Rock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+emerson_brewing-old_95,0,0,244627603458,"{""name"":""Old 95"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""emerson_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,49,1
+great_dane_pub_and_brewing_1-pro_tel_memorial_malt_liquor,0,0,244738818049,"{""name"":""Pro-Tel Memorial Malt Liquor"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+gottberg_brew_pub-eighty_shilling_scottish_ale_80,0,0,244630814720,"{""name"":""Eighty-Shilling Scottish Ale (80/-)"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+wild_river_brewing_and_pizza_cave_junction,0,0,245744336896,"{""name"":""Wild River Brewing and Pizza - Cave Junction"",""city"":""Cave Junction"",""state"":""Oregon"",""code"":""97523"",""country"":""United States"",""phone"":""1-541-592-3556"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""249 North Redwood Highway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1707,""lon"":-123.645}}",1,1,1
+holsten_brauerei-duckstein_alt,0,0,244757495809,"{""name"":""Duckstein Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""holsten_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,58,1
+morland_and_co,0,0,244861960192,"{""name"":""Morland and Co."",""city"":""Abingdon"",""state"":""Oxford"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.6701,""lon"":-1.285}}",1,11,1
+gasthaus_brauerei_max_moritz-spezial,0,0,244621115394,"{""name"":""Spezial"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gasthaus_brauerei_max_moritz"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+great_dane_pub_and_brewing_2-crop_circle_wheat,0,0,244748124161,"{""name"":""Crop Circle Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,35,1
+lighthouse_brewing-beacon_india_pale_ale,0,0,244749172737,"{""name"":""Beacon India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lighthouse_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+routh_street_brewery_and_grille-brown,0,0,244984053761,"{""name"":""Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,8,1
+pabst_brewing_company-colt_45,0,0,244860452864,"{""name"":""Colt 45"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""For over 4 decades, Colt 45 Premium Malt Liquor has been the \""class of all malt liquor brands\"". With its smooth and distinct flavor and historic affiliation with Billy Dee Williams, it has become an urban American icon. If you're looking for a thick 40, or an ice cold shorty, Colt 45 is the malt liquor that works EVERYTIME!""}",1,7,1
+moonlight_brewing-twist_of_fate_bitter,0,0,244863205376,"{""name"":""Twist of Fate Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moonlight_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+left_hand_brewing_company-goosinator_smoked_doppelbock_2007,0,0,244758020096,"{""name"":""Goosinator Smoked Doppelbock 2007"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+stuttgarter_hofbru-malteser_weissbier,0,0,245098217473,"{""name"":""Malteser Weissbier"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stuttgarter_hofbru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,2,1
+south_county_brewing_co-south_county_american_ale,0,0,245118468096,"{""name"":""South County American Ale"",""abv"":6.33,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_county_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This American style amber ale will be our opening release and house beer for SCBC. AmericAle is smooth and diverse all in one shot. With a medium malt body and fresh hop aroma we hope you enjoy drinking it as much as we do making it."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,48,1
+porterhouse_restaurant_and_brewpub-special_ale,0,0,245004304384,"{""name"":""Special Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""porterhouse_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,56,1
+flossmoor_station_brewery-chessie_cherry,0,0,244627931138,"{""name"":""Chessie Cherry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flossmoor_station_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,50,1
+lancaster_brewing_co-lancaster_oktoberfest,0,0,244741373953,"{""name"":""Lancaster Oktoberfest"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""This smooth brew ushers in Autumn with an invitingly tawny color complemented by an assertive maltiness. A noble crispness from German and Czech hops completes this very traditional lager-style beer, Available from August to November.\r\n\r\nAvailable at the Brewery and in bottles & cases from September - December."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,17,1
+new_albanian_brewing,0,0,244872708096,"{""name"":""New Albanian Brewing"",""city"":""New Albany"",""state"":""Indiana"",""code"":""47150"",""country"":""United States"",""phone"":""1-812-949-2804"",""website"":""http://www.newalbanian.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Brewery was officially brewing in October 2002 and was incorporated in 1994 as the New Albanian Brewing Company in a room that branches off of Sportstime Pizza. The brewery established by Roger Baylor his wife Amy (O'Connell) Baylor and her sister Kate O'Connel. This is the first commercial brewery in New Albany since 1935. The first brewmaster was Michael Borchers which brought with him experience and used machines from the now defunct Silver Creek Brewing Corporation that was located in Sellersburg, Indiana. Jared Williamson and Jesse Williams are the current brewers working the brewery. In 2005, 14,000 gallons of beer was produced by the brewery, and with the new additions, the planned output for 2007 is double the 2005 amount."",""address"":[""3312 Plaza Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.3281,""lon"":-85.8171}}",1,39,1
+taylor_brewing-prime_i_p_a,0,0,245099528193,"{""name"":""Prime I.P.A."",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,4,1
+trailhead_brewing_company-red_amber_ale,0,0,245100511234,"{""name"":""Red Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trailhead_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,6,1
+minocqua_brewing_company-wild_rice_lager,0,0,244878999553,"{""name"":""Wild Rice Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This unique, award-winning lager combines the smoothness of traditional barley with the warm, nutty flavor of wild rice. Truly an original brew!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+oaken_barrel_brewing-meridian_street_premium_lager,0,0,244863991810,"{""name"":""Meridian Street Premium Lager"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oaken_barrel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+nebraska_brewing_company-belgian_wit,0,0,244863729666,"{""name"":""Belgian Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+penn_brewery-penn_gold,0,0,244985823233,"{""name"":""Penn Gold"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Nationally acclaimed as the best Munich-style beer made in America. Penn Gold is a light-colored, medium bodied lager beer with a delicate hop aroma."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+thirstybear_brewing,0,0,245115912194,"{""name"":""ThirstyBear Brewing"",""city"":""San Francisco"",""state"":""California"",""code"":""94105"",""country"":""United States"",""phone"":""1-415-974-0905"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""661 Howard Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.7855,""lon"":-122.4}}",1,41,1
+hawks_brewing-imperial_gold_malt_liquor,0,0,244746813441,"{""name"":""Imperial Gold Malt Liquor"",""abv"":9.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hawks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+legacy_brewing_co-brown_aged_girl,0,0,244749959170,"{""name"":""Brown Aged Girl"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legacy_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Altbier is brewed in the classic German-style brown ale tradition. The “alt” translates to \""old\"" in German and is one of the original ale types brewed in Germany. Brown Aled Girl is dark brown in color, medium in carbonation with a great balance between malt and hops."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,38,1
+samuel_smith_old_brewery_tadcaster-oatmeal_stout,0,0,244984578048,"{""name"":""Oatmeal Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,9,1
+namaqua_brewing,0,0,244870545410,"{""name"":""Namaqua Brewing"",""city"":""Loveland"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.3978,""lon"":-105.075}}",1,33,1
+east_end_brewing_company-big_hop_ipa,0,0,244614627329,"{""name"":""Big Hop IPA"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""east_end_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+fort_collins_brewery-z_lager,0,0,244614168577,"{""name"":""Z Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fort_collins_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A unique flavored lager that goes well with any food.  A slight aromatic smoke flavor-but not over-powering.  A very popular beer with its own following wondering where's YOUR Z?"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+north_coast_brewing_company-wintertime_ale_1992,0,0,244869038080,"{""name"":""Wintertime Ale 1992"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,28,1
+top_of_the_hill_restaurant_and_brewery,0,0,245100052480,"{""name"":""Top of the Hill Restaurant and Brewery"",""city"":""Chapel Hill"",""state"":""North Carolina"",""code"":""27514"",""country"":""United States"",""phone"":""1-919-929-8676"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""101 East Franklin Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":35.9132,""lon"":-79.0558}}",1,5,1
+marin_brewing-i_p_a,0,0,244879327232,"{""name"":""I.P.A."",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+pivovar_klter_hradit,0,0,245002403840,"{""name"":""Pivovar Klter Hradit"",""city"":""Klter Hradit nad Jizerou"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-329-774-421"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""CZ-294 15 Klter Hradit nad Jizerou""]}",1,52,1
+new_glarus_brewing_company-snowshoe_ale,0,0,244861501441,"{""name"":""Snowshoe Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,10,1
+fauerbach_brewing_company-fauerbach_amber_lager,0,0,244627668992,"{""name"":""Fauerbach Amber Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fauerbach_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+greene_king-st_edmund_english_ale,0,0,244738883584,"{""name"":""St. Edmund English Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greene_king"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+govnor_s_public_house-celtic_cream_ale,0,0,244630814721,"{""name"":""Celtic Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,57,1
+youngs_company_brewery-ramrod_special_bitter_ale,0,0,245744336897,"{""name"":""Ramrod Special Bitter Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""youngs_company_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,1,1
+jaipur_restaurant_and_brewpub-porter,0,0,244757495810,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jaipur_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,58,1
+mountain_sun_pub_brewery,0,0,244861960193,"{""name"":""Mountain Sun Pub & Brewery"",""city"":""Boulder"",""state"":""Colorado"",""code"":""80302"",""country"":""United States"",""phone"":""1-303-546-0886"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1535 Pearl Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.019,""lon"":-105.275}}",1,11,1
+gasthaus_gosebrauerei_bayerischer_bahnhof,0,0,244621180928,"{""name"":""Gasthaus & Gosebrauerei Bayerischer Bahnhof"",""city"":""Leipzig"",""state"":""Sachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)341-/-1245760"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Bayerischer Platz 1""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.3397,""lon"":12.3714}}",1,34,1
+gulpener_bierbrouwerij,0,0,244748189696,"{""name"":""Gulpener Bierbrouwerij"",""city"":""Gulpen"",""state"":"""",""code"":""0"",""country"":""Netherlands"",""phone"":""31-043-4507575"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Rijksweg 16""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8109,""lon"":5.9213}}",1,35,1
+live_oak_brewing-big_bark_amber_lager,0,0,244871659520,"{""name"":""Big Bark Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""live_oak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Smooth\"" is the first word from your mouth after a taste of Big Bark Amber. This Vienna-style lager has a reddish-amber color with a smooth, malty flavor and low hop bitterness. It is made from Czech and German malts and German hops. \""All Bark, No Bite.\"" Everyone likes this beer."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+rowland_s_calumet_brewery-calumet_dark,0,0,244984053762,"{""name"":""Calumet Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rowland_s_calumet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,8,1
+pacific_rim_brewing-fauntleroy_stout,0,0,244983136256,"{""name"":""Fauntleroy Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+mythos_breweries_s_a-mythos_hellenic_lager,0,0,244863205377,"{""name"":""Mythos Hellenic Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mythos_breweries_s_a"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+logjam_microbrewery,0,0,244881096704,"{""name"":""Logjam Microbrewery"",""city"":""Unity"",""state"":""Wisconsin"",""code"":""54488"",""country"":""United States"",""phone"":""715-223-4336"",""website"":""http://www.logjambeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Originally started in Tomahawk, WI.  LogJam Microbrewery is under new ownership and located in Unity, WI at Monster World campground."",""address"":[""B-4864 Cty Rd F""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.8516,""lon"":-90.3165}}",1,59,1
+sullivan_s_black_forest_brew_haus_grill-marzen,0,0,245098283008,"{""name"":""Marzen"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""The name says it all, you want German this is it."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+sports_city_cafe_brewery-pale_ale,0,0,245118533632,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sports_city_cafe_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+richbrau_brewing_company-richbrau_barleywine,0,0,245004304385,"{""name"":""Richbrau Barleywine"",""abv"":12.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Malty, rich, complex with a notable hops balance. Aged for 90 days. For optimal taste allow the beer to warm on your table or from the heat of your hand around the glass. ½ pints only. 12.3 abv! Offered downstairs at the Taphouse or Pub Bar/ Dining Room only."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,56,1
+flying_bison_brewing-blackbird_oatmeal_stout,0,0,244627996672,"{""name"":""Blackbird Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, dark and malty ale with plenty of roasted barley flavor. Blackbird has a silky smooth oatmeal finish. It is one of our NEW flagship's and is now available year round."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,50,1
+liberty_steakhouse_and_brewery-liberty_nut_brown_ale,0,0,244741373954,"{""name"":""Liberty Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Styled after an English classic, this beer is brewed with American flair. Hearty brown in color and full-bodied, this beer has a distinct chocolate-malt finish."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,17,1
+nor_wester_brewery_and_public_house-blacksmith_porter,0,0,244872708097,"{""name"":""Blacksmith Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nor_wester_brewery_and_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,39,1
+the_alchemist-holy_cow_ipa,0,0,245099528194,"{""name"":""Holy Cow IPA"",""abv"":5.16,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""For hops lovers - this bitter ale is pale colored and made with a blend of 6 different malts and 5 different hops. This ale is dry-hopped for extra flavor and aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,4,1
+triple_rock_brewery-amber,0,0,245100576768,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triple_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,6,1
+new_glarus_brewing_company-coffee_stout,0,0,244878999554,"{""name"":""Coffee Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+onion_pub_brewery,0,0,244864057344,"{""name"":""Onion Pub & Brewery"",""city"":""Lake Barrington"",""state"":""Illinois"",""code"":""60010"",""country"":""United States"",""phone"":""1-847-381-7308"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""22221 Pepper Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1865,""lon"":-88.1835}}",1,16,1
+north_country_brewery-stone_house_stout,0,0,244863795200,"{""name"":""Stone House Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This robust, hearty stout is as sturdy as its namesake.  Roasted barley is the trademark of stout, a bittersweet separation from its cousin Porter.  The deep character of roasted barley is further enhanced by the addition of oatmeal for an incredible silky finish."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,15,1
+pivovar_velk_popovice,0,0,244985823234,"{""name"":""Pivovar Velk Popovice"",""city"":""Velk Popovice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-204/623-111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ringhofferova 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.9225,""lon"":14.6361}}",1,13,1
+thunderhead_brewery-porter,0,0,245115912195,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,41,1
+heartland_brewery_union_square-harvest_wheat_beer,0,0,244746878976,"{""name"":""Harvest Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heartland_brewery_union_square"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+legacy_brewing_co-hoptimus_prime,0,0,244750024704,"{""name"":""Hoptimus Prime"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""legacy_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,38,1
+sharktooth_brewing-hula_girl_pale_ale,0,0,244984578049,"{""name"":""Hula Girl Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sharktooth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+new_road_brewhouse,0,0,244870545411,"{""name"":""New Road Brewhouse"",""city"":""Collegeville"",""state"":""Pennsylvania"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.1857,""lon"":-75.4516}}",1,33,1
+emmett_s_tavern_and_brewery,0,0,244614692864,"{""name"":""Emmett's Tavern and Brewery"",""city"":""West Dundee"",""state"":""Illinois"",""code"":""60118"",""country"":""United States"",""phone"":""1-847-428-4500"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""128 West Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.0981,""lon"":-88.2783}}",1,19,1
+founders_brewing-cerise,0,0,244614234112,"{""name"":""Cerise"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Fruit Beer"",""category"":""Other Style""}",1,18,1
+o_grady_s_brewery_and_pub_1-stockyard_stout,0,0,244869038081,"{""name"":""Stockyard Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_grady_s_brewery_and_pub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,28,1
+triumph_brewing_of_princeton,0,0,245100052481,"{""name"":""Triumph Brewing of Princeton"",""city"":""Princeton"",""state"":""New Jersey"",""code"":""8542"",""country"":""United States"",""phone"":""1-609-924-7855"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""138 Nassau Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.3507,""lon"":-74.6583}}",1,5,1
+mickey_finn_s_brewery-abana_amber_ale,0,0,244879327233,"{""name"":""Abana Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,55,1
+pyramid_alehouse_brewery_and_restaurant_seattle-dpa,0,0,245002403841,"{""name"":""DPA"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+on_tap_bistro_brewery,0,0,244861501442,"{""name"":""On Tap Bistro & Brewery"",""city"":""San Diego"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.7153,""lon"":-117.157}}",1,10,1
+fish_brewing_company_fish_tail_brewpub-detonator_doppelbock,0,0,244627668993,"{""name"":""Detonator Doppelbock"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,49,1
+grizzly_bay_brewing-stout,0,0,244738883585,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grizzly_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+grand_lake_brewing,0,0,244756905984,"{""name"":""Grand Lake Brewing"",""city"":""Grand Lake"",""state"":""Colorado"",""code"":""80447"",""country"":""United States"",""phone"":""1-970-627-1711"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""915 Grand Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.2518,""lon"":-105.82}}",1,57,1
+youngs_company_brewery,0,0,245744336898,"{""name"":""Youngs & Company Brewery"",""city"":""London"",""state"":"""",""code"":""SW18 1NH"",""country"":""England"",""phone"":""020 8875 7000"",""website"":""http://www.youngs.co.uk"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""26 Osiers Road"",""Wandsworth""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.4611,""lon"":-0.1966}}",1,1,1
+john_harvard_s_brew_house_framingham,0,0,244757561344,"{""name"":""John Harvard's Brew House - Framingham"",""city"":""Framingham"",""state"":""Massachusetts"",""code"":""1701"",""country"":""United States"",""phone"":""1-508-875-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 Worcester Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3037,""lon"":-71.3966}}",1,58,1
+new_glarus_brewing_company,0,0,244861960194,"{""name"":""New Glarus Brewing Company"",""city"":""New Glarus"",""state"":""Wisconsin"",""code"":""53574"",""country"":""United States"",""phone"":""608-527-5850"",""website"":""http://www.newglarusbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The brewery is run by an enthusiastic couple, Daniel & Deb Carey, who have successfully combined business management and brewing professionalism. Our philosophy is based on individuality, cooperation and the employment of 100% natural ingredients to produce world -class, handcrafted beers for our friends in Wisconsin. Cheers!*  *From the New Glarus Brewing web site"",""address"":[""2400 State Highway 69""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.8171,""lon"":-89.6306}}",1,11,1
+glen_ellyn_sports_brew-nut_brown,0,0,244621180929,"{""name"":""Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""glen_ellyn_sports_brew"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,34,1
+half_pints_brewing_company-little_scrapper_ipa,0,0,244748189697,"{""name"":""Little Scrapper IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""half_pints_brewing_company"",""updated"":""2010-12-13 19:33:36"",""description"":""To admit that the brewer at Half Pints is a bit of a hophead is an understatement. This India Pale Ale is unabashedly hoppy, not only from the Amarillo hops we add to the brew kettle, but also from the northwest U.S. variety called Cascade that we add directly to the final tank. A firm toasted malt presence forms the background for all of these hops, and we're confident our Little Scrapper IPA could take other so-called IPA's to the mat if called upon to do so. Try it with a curry or a basket of beer battered fish & chips. Serve in a glass at 8 degrees celcius. Unpasturized."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,35,1
+manayunk_brewery_and_restaurant-krooks_mill,0,0,244871725056,"{""name"":""Krooks Mill"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""A well-balanced, hoppy American style pale ale with a generous usage of Caramel and Crystal malts. This beer is amber in color and is finished\r\nwith fresh Cascade, Columbus and Mt. Hood hops from the Pacific Northwest for a wonderful floral aroma. World Beer Cup Bronze Medal winner and a Perennial favorite here at the Brewery. Also available in bottles to go."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+russell_brewing-pale_ale,0,0,244984119296,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,8,1
+palmetto_brewing-pale_ale,0,0,244983201792,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""palmetto_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+mythos_breweries_s_a,0,0,244863205378,"{""name"":""Mythos Breweries S.A."",""city"":"""",""state"":""Sindos"",""code"":""570 22"",""country"":""Greece"",""phone"":"""",""website"":""http://www.mythosbrewery.gr/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Industrial Area, Thessaloniki""]}",1,14,1
+lowenbrau_brauerei-triumphator,0,0,244881096705,"{""name"":""Triumphator"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lowenbrau_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,59,1
+sullivan_s_black_forest_brew_haus_grill-strong_arm_ale,0,0,245098283009,"{""name"":""Strong Arm Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""Just like our Porter but multiplied by 10.""}",1,2,1
+sprecher_brewing-sprecher_maibock,0,0,245118599168,"{""name"":""Sprecher Maibock"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pale malt flavors are balanced with a rich hop character and a light fruit bouquet in this seasonal spring lager. Traditional dry-hopping and extended aging give this blonde bock a distinctive flowery aroma and a potent kick."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,48,1
+rock_art_brewery,0,0,245004369920,"{""name"":""Rock Art Brewery"",""city"":""Morrisville"",""state"":""Vermont"",""code"":""5661"",""country"":""United States"",""phone"":""(802) 888-9400"",""website"":""http://www.rockartbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Rock Art Brewery was born in the mountains of Vermont, inspired by the spirit of Kokopelli and guided by the beers of the world."",""address"":[""254 Wilkins Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.5693,""lon"":-72.6034}}",1,56,1
+flying_bison_brewing-blizzard_bock,0,0,244627996673,"{""name"":""Blizzard Bock"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_bison_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Although it’s named after our most famous weather event, this beer has nothing in common with the harsh bite of winter. In fact it’s smooth slightly chocolaty flavor helps you forget Jack Frost altogether. German pale and Munich malts form the base flavors with hints of chocolate and caramel. Very soft, floral German hops ease the finish into dryness. Available on draft and in bottles from November to March."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+live_oak_brewing-live_oak_hefeweizen,0,0,244864057344,"{""name"":""Live Oak Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""live_oak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Modeled after the classic wheat beers of Bavaria, our HefeWeizen has a cloudy, straw-colored appearance with a thick, creamy head. It is fermented with an authentic Weizenbier yeast strain which imparts delicate notes of clove, vanilla and banana which harmonize perfectly with its mild refreshing tartness. Together these flavors create the perfect thirst quencher to beat the Texas heat. Available April - August"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,17,1
+north_country_brewery-paleo_ipa,0,0,244872708098,"{""name"":""Paleo IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The discovery of the true I.P.A. (India Pale Ale) made right here in Slippery Rock. The British added hops to oak barrels to help preserve the beer for its long voyage to British-controlled India. Brewed in this same English tradition, we dry-hopped our ale, giving the beer a very aromatic quality as it travels to your mug."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,39,1
+thunderhead_brewery-cream_ale,0,0,245099528195,"{""name"":""Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,4,1
+troegs_brewing-scratch_12_2008,0,0,245100576769,"{""name"":""Scratch #12 2008"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""In our never-ending pursuit of answering the burning question of what’s new, we present Scratch #12-2008, an IPA.\r\n \r\nThe IPA is a fickle beast; too much malt and you veer into a high-octane hopbomb, while too little hops can question a beer’s virility. In these chaotic days of shrinking hop harvests, balance is key to a proper IPA. Scratch #12-2008 delivers an intense pine nose married with a subtle wildflower aroma. The Thames Valley yeast adds an earthy nod to traditional English IPAs, while the American hops provide a bold contrasting bitterness.\r\n \r\nBreath deep, relax, enjoy."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,6,1
+nodding_head_brewpub-robust_porter,0,0,244879065088,"{""name"":""Robust Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,54,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-sun_fest,0,0,244987002880,"{""name"":""Sun Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+oakham_ales,0,0,244863795201,"{""name"":""Oakham Ales"",""city"":""Peterborough"",""state"":""Cambridge"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01733)-358300"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""80 Westgate""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":52.5758,""lon"":-0.248}}",1,15,1
+prairie_rock_brewing_elgin,0,0,244985888768,"{""name"":""Prairie Rock Brewing - Elgin"",""city"":""Elgin"",""state"":""Illinois"",""code"":""60120"",""country"":""United States"",""phone"":""1-847-622-8888"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""127 South Grove Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.0347,""lon"":-88.2819}}",1,13,1
+titletown_brewing-bridge_out_stout,0,0,245115977728,"{""name"":""Bridge Out Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,41,1
+james_page_brewing-burly_brown_ale,0,0,244746878977,"{""name"":""Burly Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""james_page_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,31,1
+margaritaville_brewing_company-landshark_lager,0,0,244871921664,"{""name"":""Landshark Lager"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""margaritaville_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,38,1
+south_shore_brewery-nut_brown_ale,0,0,245101690880,"{""name"":""Nut Brown Ale"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,9,1
+north_coast_brewing_company-brother_thelonious,0,0,244870610944,"{""name"":""Brother Thelonious"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+endehouse_brewery_and_restaurant,0,0,244614692865,"{""name"":""EndeHouse Brewery and Restaurant"",""city"":""Reedsburg"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.5325,""lon"":-90.0026}}",1,19,1
+four_peaks_brewing-american_style_brown_ale,0,0,244614234113,"{""name"":""American-Style Brown Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""four_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Leroy's BIG Brother. Sweet floral hop aroma balances out the big malty roasted body with the slightest bitter spiced-chocolate finish. A very untraditional hopping technique gives this beer a unique character significantly more robust than our traditional Leroy Brown Ale. The beer weighs in at 5.0% alc./vol. Cheers!!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,18,1
+o_hara_s_brewpub_and_restaurant-pantown_pale_ale,0,0,244869038082,"{""name"":""Pantown Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_hara_s_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+troegs_brewing-scratch_6_2007,0,0,245100118016,"{""name"":""Scratch #6 2007"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Old world brewing techniques combine with Noble hops for Scratch #6-2007.\r\nThis Export Lager features a single stage decoction—a first for Tröegs Brewery. After combining barley and water we transfer a portion of the mash to the brew kettle for a quick boil. The heated mash is then returned to the mash kettle and the brewing process continues. This process deepens the malt character and adds a subtle toffee backbone to this delicious lager.\r\n\r\nWe’ve added Magnum hops for bittering and Czech Saaz hops for aroma to create a classic European Noble hop flavor. \r\n\r\nScratch #6-2007 is unfiltered, so there will be a slight haze to the beer."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+middle_ages_brewing-beast_bitter,0,0,244879392768,"{""name"":""Beast Bitter"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This special bitter displays the subtle coppery hue of \""Old Gold\"". It's depth of lingering hop flavor awakens the palate."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,55,1
+randy_s_fun_hunters_brewery_restaurant_and_banquet_center-oatmeal_stout,0,0,245002403842,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""randy_s_fun_hunters_brewery_restaurant_and_banquet_center"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,52,1
+pacific_coast_brewing,0,0,244984643584,"{""name"":""Pacific Coast Brewing"",""city"":""Oakland"",""state"":""California"",""code"":""94607"",""country"":""United States"",""phone"":""1-510-836-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""906 Washington Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":37.8016,""lon"":-122.274}}",1,10,1
+flagstaff_brewing,0,0,244627668994,"{""name"":""Flagstaff Brewing"",""city"":""Flagstaff"",""state"":""Arizona"",""code"":""86001"",""country"":""United States"",""phone"":""1-520-773-1442"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""16 East Route 66""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.1973,""lon"":-111.648}}",1,49,1
+hale_s_ales_3,0,0,244738949120,"{""name"":""Hale's Ales #3"",""city"":""Seattle"",""state"":""Washington"",""code"":""98107"",""country"":""United States"",""phone"":""1-206-706-1544"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4301 Leary Way NW""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.6592,""lon"":-122.366}}",1,12,1
+great_dane_pub_and_brewing_1-wooden_ships_esb,0,0,244756971520,"{""name"":""Wooden Ships ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+john_harvard_s_brewhouse_wilmington-light_lager,0,0,244757561345,"{""name"":""Light Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brewhouse_wilmington"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+nogne_o_det_kompromisslose_bryggeri_a_s-havre_stout,0,0,244862025728,"{""name"":""Havre Stout"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""We usually do not make compromises, but this is probably the exception.  Norwegians are dead scared of dark beers.  This is an attempt to show that there are gentle dark ales.  As such Havre Stout is smooth and drinkable."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,11,1
+golden_gate_park_brewery,0,0,244621180930,"{""name"":""Golden Gate Park Brewery"",""city"":""San Francisco"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":37.7749,""lon"":-122.419}}",1,34,1
+harmon_brewing_company-pinnacle_peak_pale_ale,0,0,244748255232,"{""name"":""Pinnacle Peak Pale Ale"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harmon_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a light bodied mildly hoppy ale brewed with a 2-row malted barley, Crystal, and a special Vienna malted barley. Golding and Cascade hops are used to provide the balanced palate for this fine session beer. 4.2% ABV"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+manayunk_brewery_and_restaurant,0,0,244871725057,"{""name"":""Manayunk Brewery and Restaurant"",""city"":""Philadelphia"",""state"":""Pennsylvania"",""code"":""19127"",""country"":""United States"",""phone"":""1-215-482-8220"",""website"":""http://www.manayunkbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4120 Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.0236,""lon"":-75.2202}}",1,37,1
+san_miguel_corporation,0,0,244984119297,"{""name"":""San Miguel Corporation"",""city"":""Manila"",""state"":"""",""code"":"""",""country"":""Philippines"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 271""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":14.5833,""lon"":120.967}}",1,8,1
+pike_pub_and_brewery-oatmeal_stout,0,0,244983201793,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+nebraska_brewing_company-irish_red,0,0,244863270912,"{""name"":""Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nebraska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+martini_brauerei-weissbier_hell,0,0,244881162240,"{""name"":""Weissbier Hell"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""martini_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,59,1
+sullivan_s_black_forest_brew_haus_grill-woody_s_light,0,0,245098348544,"{""name"":""Woody's Light"",""abv"":3.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""Our take on the classic light golden ale, with crisp refreshing flavors."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+stieglbrauerei_zu_salzburg_gmbh-columbus_bock,0,0,245118664704,"{""name"":""Columbus Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,48,1
+rock_bottom_restaurant_brewery_san_jose,0,0,245004369921,"{""name"":""Rock Bottom Restaurant & Brewery - San Jose"",""city"":""Campbell"",""state"":""California"",""code"":""95008"",""country"":""United States"",""phone"":""1-408-377-0707"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1875 South Bascom Avenue #700""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.2886,""lon"":-121.933}}",1,56,1
+foothills_brewing_company-sexual_chocolate,0,0,244627996674,"{""name"":""Sexual Chocolate"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""foothills_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,50,1
+magic_hat-odd_notion_winter_08,0,0,244864057345,"{""name"":""Odd Notion Winter 08"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+northwoods_brewpub_grill-half_moon_gold,0,0,244872773632,"{""name"":""Half Moon Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+traffic_jam_and_snug-gold_rush_ale,0,0,245099593728,"{""name"":""Gold Rush Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""traffic_jam_and_snug"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,4,1
+tropical_beverage_international_co_ltd,0,0,245100642304,"{""name"":""Tropical Beverage (International) Co., Ltd"",""city"":""Bangkok"",""state"":"""",""code"":"""",""country"":""Thailand"",""phone"":"""",""website"":""http://www.tropbevco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""35 Soi Prommit, Sukumvit 39""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":13.7234,""lon"":100.476}}",1,6,1
+nor_wester_brewery_and_public_house-honey_weizen,0,0,244879065089,"{""name"":""Honey Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nor_wester_brewery_and_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+pyramid_ales_brewery-curve_ball,0,0,244987002881,"{""name"":""Curve Ball"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Inspired by the traditional Kölsch style beers of Cologne, Germany, Curve Ball boasts a clean, crisp slightly herbal taste and a lighter body. With its sporty packaging and refreshing taste, Curve Ball is the perfect accompaniment to summer grilling and ballpark outings. Try swingin' at it on a hot summer day!""}",1,16,1
+old_hat_brewery-hefeweizen,0,0,244863795202,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,15,1
+rogue_ales-double_dead_guy_ale,0,0,244985888769,"{""name"":""Double Dead Guy Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,13,1
+tivoli_brewing-bitter_amber,0,0,245115977729,"{""name"":""Bitter Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tivoli_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,41,1
+jasper_ridge_brewery-jasper_lyte,0,0,244746944512,"{""name"":""Jasper Lyte"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jasper_ridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+marshall_brewing_company-atlas_ipa,0,0,244871987200,"{""name"":""Atlas IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marshall_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+sports_city_cafe_brewery,0,0,245101756416,"{""name"":""Sports City Cafe & Brewery"",""city"":""La Jolla"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.8575,""lon"":-117.876}}",1,9,1
+on_tap_bistro_brewery-steamroller_stout,0,0,244870610945,"{""name"":""Steamroller Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,33,1
+f_x_matt_brewing-saranac_hefeweizen,0,0,244614692866,"{""name"":""Saranac Hefeweizen"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""f_x_matt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This traditional style German Wheat beer (pronounced) Hah-fuh-vite-zen) remains unfiltered to preserve it's natural smooth flavor and aroma. Don't be alarmed by its cloudy appearance or noticeable sediment. The slight banana and clove aroma comes from the authentic German Hefeweizen yeast. It has a light refreshing finish."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,19,1
+golden_prairie_brewing,0,0,244614234114,"{""name"":""Golden Prairie Brewing"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60647"",""country"":""United States"",""phone"":""1-773-862-0106"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2536 North Elston Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.9273,""lon"":-87.6807}}",1,18,1
+pabst_brewing_company-pabst_blue_ribbon_light,0,0,244869103616,"{""name"":""Pabst Blue Ribbon Light"",""abv"":4.19,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""PBR is not just any beer- so you would expect the history to be a bit unusual, and it is. Pabst was originally called \""Select,\"" but people started asking for that \""Blue Ribbon\"" beer in 1882 when we started tying silk ribbons to the bottles. We officially added the words \""Blue Ribbon\"" to the bottle in 1895.\r\n\r\nPabst was the first brewery to put beer in cans back in 1935. This was Blue Ribbon beer but it was called \""Export\"" when sold in the can. Our first cans had a picture of a can opener on the side with instructions on how to open the can of beer, with the can opener.\r\n\r\nToday, this classic American brew has been adopted by a whole new generation of PBR drinkers. Currently, PBR is one of the fastest growing domestic beer brands. When you're this good, quality always comes through-PBR ME ASAP!"",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,28,1
+tunner_s_guild_brewing_systems-piedmont_porter,0,0,245100183552,"{""name"":""Piedmont Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tunner_s_guild_brewing_systems"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,5,1
+miller_brewing-mickey_s_ice,0,0,244879392769,"{""name"":""Mickey's Ice"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,55,1
+red_kettle_brewing-amber,0,0,245002469376,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_kettle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,52,1
+paper_city_brewing_company-holyoke_dam_ale,0,0,244984709120,"{""name"":""Holyoke Dam Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paper_city_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+flying_dog_brewery-double_dog_double_pale_ale,0,0,244627668995,"{""name"":""Double Dog Double Pale Ale"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""flying_dog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Back by popular demand, our original \""Wild Dog Release\"" is back, and this time it's for good. Double Dog Double Pale Ale is a generously hopped ale with a deep red color and pours with a nice frothy head. The abundance of hops will conjure some provocative aromas with hints of raisins and citrus."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,49,1
+hannen_brauerei,0,0,244738949121,"{""name"":""Hannen Brauerei"",""city"":""Mnchengladbach"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.1913,""lon"":6.4421}}",1,12,1
+grizzly_bay_brewing,0,0,244756971521,"{""name"":""Grizzly Bay Brewing"",""city"":""Suisun City"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":38.2382,""lon"":-122.04}}",1,57,1
+lagunitas_brewing_company-maximus,0,0,244757626880,"{""name"":""Maximus"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,58,1
+north_coast_brewing_company-acme_california_brown_ale,0,0,244862025729,"{""name"":""Acme California Brown Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+gottberg_brew_pub-dsb_dusters_special_bitter,0,0,244621246464,"{""name"":""DSB / Dusters Special Bitter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+hoppers_seafood_grill,0,0,244748255233,"{""name"":""Hoppers Seafood & Grill"",""city"":""Midvale"",""state"":""Utah"",""code"":""84047"",""country"":""United States"",""phone"":""1-801-566-0424"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""890 East Fort Union Boulevard""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.6215,""lon"":-111.866}}",1,35,1
+martini_brauerei-meister_pilsener,0,0,244871790592,"{""name"":""Meister Pilsener"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""martini_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+schlossbru-naturtrubes,0,0,244984119298,"{""name"":""Naturtrubes"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlossbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+pokka_beer_works-beer_works_ale_golden,0,0,244983267328,"{""name"":""Beer Works Ale Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pokka_beer_works"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+new_century_brewing_company,0,0,244863270913,"{""name"":""New Century Brewing Company"",""city"":""Boston"",""state"":""Massachusetts"",""code"":""2117"",""country"":""United States"",""phone"":""1-781-963-4007"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 1498""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.3587,""lon"":-71.0574}}",1,14,1
+maui_brewing_co-big_swell_ipa,0,0,244881227776,"{""name"":""Big Swell IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maui_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""India Pale Ale was developed in Burton, England, as a \""Super-Premium\"" hoppy pale ale around 1800. The extra strength in alcohol and hops helped preserve the beer on its long export journeys to India and beyond. The style developed a following worldwide. Its flavor begins with a smooth, malty creaminess followed with a big burst of dry-hop flavor from English Kent Golding Hops. It then finishes with a lingering yet pleasant bitterness."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+taylor_brewing-very_pale_ale,0,0,245098348545,"{""name"":""Very Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,2,1
+summit_brewing-winter_ale,0,0,245118664705,"{""name"":""Winter Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""summit_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,48,1
+roffey_brewery-lake_effect_stout,0,0,245004369922,"{""name"":""Lake Effect Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roffey_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,56,1
+gatz_brauhaus-pils,0,0,244628062208,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gatz_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+marble_brewery-marble_india_pale_ale,0,0,244864122880,"{""name"":""Marble India Pale Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marble_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Congratulations! By drinking Marble Brewery India Pale Ale, you show exceptionally good taste. Our obsession with quality and attention to detail ensures that every bottle will meet your high expectations. The Columbus, Amarillo and Centennial hops lend a fragrant citrus aroma and snappy hop character. We think you will agree that this is one rock solid beer."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+odell_brewing-easy_street_wheat,0,0,244872773633,"{""name"":""Easy Street Wheat"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Light and refreshing, Easy Street Wheat is an unfiltered American-style wheat beer. Leaving in the yeast gives the beer a nice, smooth finish and a slightly citrusy flavor. Easy Street Wheat gets its name by brewers \""taking it easy\"" and not filtering the beer. However, for ultimate enjoyment, we encourage you to work just a little harder in pouring it: just pour 2/3 of the beer into a glass, swirl what's left to stir up the yeast, then pour the rest and enjoy."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,39,1
+unibroue-raftman,0,0,245099593729,"{""name"":""Raftman"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""Launched in March 1995, Raftman is a beer with a coral sheen that is slightly robust. It contains 5.5 percent alcohol and combines the character of whisky malt with the smooth flavours of choice yeast. It has a subtle and exceptional bouquet that creates a persistent smooth feel. Raftman complements fish, smoked meat and spicy dishes. .\r\n\r\nIt is brewed to commemorate the legendary courage of the forest workers These hard working men knew when to settle their differences and share their joie de vivre with a beer and a whisky."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,4,1
+twisted_pine_brewing_company-pearl_street_porter,0,0,245100707840,"{""name"":""Pearl Street Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twisted_pine_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Baltic Porter made to celebrate Boulder's 150th anniversary. Available for the entirety of 2009."",""style"":""Porter"",""category"":""Irish Ale""}",1,6,1
+north_coast_brewing_company-old_stock_ale_2004,0,0,244879065090,"{""name"":""Old Stock Ale 2004"",""abv"":11.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,54,1
+red_lodge_ales-glacier_ale,0,0,244987002882,"{""name"":""Glacier Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_lodge_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,16,1
+orlio_organic-orlio_seasonal_black_lager,0,0,244863860736,"{""name"":""Orlio Seasonal Black Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orlio_organic"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich medium-bodied black lager whose sweet deep malt flavor is balanced by a moderate hop bite and roasted malt tartness that creates notes of bitter chocolate and a slight lingering sweetness."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,15,1
+rogue_ales-imperial_red,0,0,244985888770,"{""name"":""Imperial Red"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Imperial Red is the newest addition to Rogues award winning Imperial Family of XS products. The Imperial Red recipe originates from Rogues Eugene City Brewery and is being produced in Newport for distribution (note, initially during 2007 in kegs only to JLS accounts. A 750-ml ceramic swing-top bottle and 13.2 gallon kegs will be available in 2008.) Imperial Red has already garnered international acclaim and awards, including a Bronze Medal at the 2006 Great American Beer Festiva and recently it was named Grand Champion at the US Beer Tasting Championships! \r\n\r\nDeep copper chestnut color with toffee, brown sugar, nuts, and spice amomas. A rich supple entry leads to an off-dry medium body of tangy raisins and citrus marmalade, bittersweet chocolate, and mild spice flavors. It finishes with a long nutty, fruity fade. \r\n\r\nImperial Red is brewed with Crystal, Chocolate, Munich and two-row Pale Malts; Palisade and Aroma Crystal hops, Pacman Yeast, and Free Range Coastal Waters."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,13,1
+tongerlo-tongerlo_tripple,0,0,245115977730,"{""name"":""Tongerlo Tripple"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tongerlo"",""updated"":""2010-07-22 20:00:20"",""description"":""Blond beer with a fruity and hoppy aroma and a balanced flavour with a slightly bitter aftertaste."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,41,1
+jolly_pumpkin_artisan_ales,0,0,244746944513,"{""name"":""Jolly Pumpkin Artisan Ales"",""city"":""Dexter"",""state"":""Michigan"",""code"":""48130"",""country"":""United States"",""phone"":""1-734-426-4962"",""website"":""http://www.jollypumpkin.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Welcome to a land of open fermentation, oak barrel aging, and bottle conditioning. At Jolly Pumpkin Artisan Ales we are dedicated to more than the traditions of old world craftsmanship. Everything we do is designed to create ales of outstanding art and flavor. Focusing on traditional rustic country style beers brought to life through labor and love, we strive to create beers to lighten the spirit, and soothe the soul. Sharing our joy to the betterment of mankind is the most that we could hope for."",""address"":[""3115 Broad Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3375,""lon"":-83.8895}}",1,31,1
+mcmenamins_mill_creek-golden,0,0,244872052736,"{""name"":""Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mcmenamins_mill_creek"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+steamworks_brewing_durango,0,0,245101821952,"{""name"":""Steamworks Brewing - Durango"",""city"":""Durango"",""state"":""Colorado"",""code"":""81301"",""country"":""United States"",""phone"":""1-970-259-9200"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""801 East Second Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.2724,""lon"":-107.88}}",1,9,1
+otto_s_pub_and_brewery-mt_nittany_pale_ale,0,0,244870676480,"{""name"":""Mt. Nittany Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An American pale ale brewed with Centennial hops and hopbacked with Cascade, it's a real refresher that has a spicy, citrus aroma and a slightly nutty malt flavor.  ABV  5.0%"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+faultline_brewing_2-kolsch,0,0,244614692867,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""faultline_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+goose_island_beer_company_clybourn-american_pale_ale,0,0,244614299648,"{""name"":""American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+pacific_rim_brewing-alki_ale,0,0,244992049152,"{""name"":""Alki Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+utah_brewers_cooperative-wasatch_1st_amendment_lager,0,0,245100183553,"{""name"":""Wasatch 1st Amendment Lager"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""utah_brewers_cooperative"",""updated"":""2010-07-22 20:00:20"",""description"":""A turn of the century pure malt, crisp lager. 1st Amendment Lager is made with European style hops and Munich malts. This beer has a wonderful, clean, crisp flavor certain to please all."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,5,1
+molson_breweries_of_canada-rickard_s_pale_ale,0,0,244879458304,"{""name"":""Rickard's Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,55,1
+red_star_brewery_grille,0,0,245002469377,"{""name"":""Red Star Brewery & Grille"",""city"":""Greensburg"",""state"":""Pennsylvania"",""code"":""15601"",""country"":""United States"",""phone"":""724.850.7245"",""website"":""http://www.redstarbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Red Star Brewery & Grille opened for business October 19th, 1998.  We had only five beers on tap, the Golden Light, American Pale, English Brown, Irish Dry Stout, and a Seasonal brew."",""address"":[""101 Ehalt St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.3044,""lon"":-79.5471}}",1,52,1
+penn_brewery-penn_marzen,0,0,244984774656,"{""name"":""Penn Marzen"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A spring fest beer that is amber in color, Penn Märzen has full flavor and body. Highly rated by the National Beverage Tasting Institure.""}",1,10,1
+founders_brewing-founders_breakfast_stout,0,0,244627734528,"{""name"":""Founders Breakfast Stout"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""founders_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""You've got to love coffee to truly appreciate this phenomenal brew. Brewed with an abundance of flaked oats, bitter and sweetened imported chocolates, Sumatra and Kona coffee. Breakfast Stout has an intense fresh roasted coffee nose toped with a cinnamon colored frothy head that seems to never fade and makes you wish breakfast could last forever."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,49,1
+harvey_son_lewes-a_lecoq_imperial_extra_double_stout_2000,0,0,244738949122,"{""name"":""A. LeCoq Imperial Extra Double Stout 2000"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harvey_son_lewes"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+grupo_modelo-pacifico_clara,0,0,244757037056,"{""name"":""Pacífico Clara"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""grupo_modelo"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,57,1
+left_hand_brewing_company-pole_star_pilsner,0,0,244757626881,"{""name"":""Pole Star Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+oyster_bar_bistro_and_brewery-stock_ale_2,0,0,244862025730,"{""name"":""Stock Ale #2"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oyster_bar_bistro_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,11,1
+great_dane_pub_and_brewing_2-verruckte_stadt_pilsner,0,0,244747796480,"{""name"":""Verrückte Stadt Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_2"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+joboy_s_brew_pub-joboy_s_cream_ale,0,0,244748320768,"{""name"":""JoBoy's Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""joboy_s_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""A crisp, clean, easy drinking, refreshing American ale with a light body."",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,35,1
+minneapolis_town_hall_brewery-wpa_wheat_pale_ale,0,0,244871790593,"{""name"":""WPA (Wheat Pale Ale)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+seabright_brewery-leroy_barleywine,0,0,244984184832,"{""name"":""Leroy Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+port_brewing_company-red_square,0,0,244983267329,"{""name"":""Red Square"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+north_coast_brewing_company-pranqster_belgian_ale,0,0,244863270914,"{""name"":""PranQster Belgian Ale"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Pranqster\r\nBelgian Style Golden Ale\r\n\r\nBelgian Ales represent the height of the brewers' art. Sophisticated brewing techniques, yeast blends and unique flavoring elements have elevated the beers of Belgium to the status enjoyed by wine in other countries.\r\n\r\nPranQster follows in this tradition using a mixed culture of antique yeast strains that produce a floral nose, a full fruity flavor and a clean finish.\r\n\r\nAvailable in 12oz 4 packs and 750 ml traditionally corked and wired bottles.\r\n\r\nVital Statistics\r\nStyle: Belgian Style\r\n          Golden Ale\r\nColor: Soft Gold\r\nABV: 7.6%\r\nBitterness: 20 IBU's\r\n\r\n-http://www.northcoastbrewing.com/beer-Pranqster.htm""}",1,14,1
+mendocino_brewing_hopland-peregrine_pale_ale,0,0,244881227777,"{""name"":""Peregrine Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mendocino_brewing_hopland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+thirstybear_brewing-valencia_wheat,0,0,245098348546,"{""name"":""Valencia Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+tabernash_brewing-oktoberfest,0,0,245118730240,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tabernash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,48,1
+rogue_ales-brutal_bitter,0,0,245004435456,"{""name"":""Brutal Bitter"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An imperial bitter style using exotic traditional floor malts, citrus hoppy flavor, stupendous hop aroma. Hedonistic!\""Mellow Beer Emboldened by Hops,\"" Elaine Louies article in the New York TimesDining Out Section, (March 24, 1999) announced the release of latest Rogue elixir to be bottled. The article states that \""The newest beer of Rogue Ales sounds more aggressive than it is. Brutal Bitter is actually full-bodied, deeply flavored, intensely hoppy brew. There is nothing brutal about the rich, deep, mellow taste. Its crackling but not sharp... This beer may raise eyebrows, but it wont pucker lips. The aftertaste is clean.\""\r\n\r\nRogue brewer John Maier describes his Brutal Bitter as a cross between a Very Extra Special Bitter and an Indian Pale Ale. Brutal Bitter was first brewed in 1996 for the 20th Anniversary of the Horse Brass Pub in Portland. Customer demand prompted Rogue to continue brewing Brutal for the Horse Brass as well as using it as Rogues premier pour at the 1998 Oregon Brewers Festival. At the 1999 SpringFest in Portland, Oregon, Brutal Bitter was unscientifically voted the Peoples Choice--it received twice as many votes as the runner-up.\r\n\r\nBrutal combines Oregon hops with English Malts. The Oregon grown Crystal hop is a triploid variety developed from the German Hallertau aroma hop variety with contributions from Cascade, Brewers Gold, and Early Green. Crystal is the only hop used in brewing Brutal and it provides a massive amount of aroma without dry-hopping. The English malts used are floor malted Pipkin (a mellow cross of Maris Otter and Warboys, from an English company called Beeston), Cara Vienna and Cara Wheat. Brutal Bitter is packaged in Rogues classic 22 ounce silk-screened bottle, 12-ounce 6-pack (new for 2005), and is available on draft."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,56,1
+golden_pacific_brewing-golden_bear_lager,0,0,244628062209,"{""name"":""Golden Bear Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""golden_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+midnight_sun_brewing_co-arctic_devil_barley_wine,0,0,244864122881,"{""name"":""Arctic Devil Barley Wine"",""abv"":13.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Arctic Devil Barley Wine, aptly named after the ferocious wolverine of the north, is an English-style (meaning malt-inclined) barley wine. Though the recipe and process for Arctic Devil have evolved over the years, it is typically brewed in January then aged in oak barrels for several months before the entire batch is blended, bottled and released on the Friday after Thanksgiving. \r\n\r\nIn its youth, Arctic Devil gnarls and snarls its way across the palate. Containing this beast of a beer for long periods in oak barrels--some having previously aged port, wine or whiskey--tames the unleashed malt and fierce hop flavors, melding and mellowing this powerful liquid into an incredible elixir worthy of a brewer's table. \r\n\r\nEach annual batch of Arctic Devil Barley Wine represents the brewers' resolve to create an intriguing and sought-after barley wine by precisely brewing to well-designed specifications, carefully selecting the type and combination of barrels to use for aging, and meticulously checking the beer as it ages. Distinct nuance and complexity are contributed by the wood's previous tenants, resulting in unique flavor profiles in each batch that continue to change over time. We invite you to savor Arctic Devil Barley Wine upon its release then cellar some for future enjoyment. \r\n\r\nMidnight Sun's elusive Arctic Devil Barley Wine is Alaska's most awarded barley wine.""}",1,17,1
+old_hat_brewery-depot_pils,0,0,244872839168,"{""name"":""Depot Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+united_breweries_limited-kingfisher_premium,0,0,245099659264,"{""name"":""Kingfisher Premium"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":2147483647,""type"":""beer"",""brewery_id"":""united_breweries_limited"",""updated"":""2011-01-09 14:50:37"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,4,1
+unionsbru_haidhausen-helles_naturtrub,0,0,245100707841,"{""name"":""Helles Naturtrub"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unionsbru_haidhausen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+oggi_s_pizza_and_brewing_vista-paradise_pale_ale,0,0,244879130624,"{""name"":""Paradise Pale Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,54,1
+redhook_ale_brewery,0,0,244987002883,"{""name"":""Redhook Ale Brewery"",""city"":""Seattle"",""state"":""Washington"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.redhook.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.6062,""lon"":-122.332}}",1,16,1
+pivovar_hradec_krlov,0,0,244986544128,"{""name"":""Pivovar Hradec Krlov"",""city"":""Hradec Krlov"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.2094,""lon"":15.8326}}",1,15,1
+rothaus_brauerei-leicht,0,0,244985954304,"{""name"":""Leicht"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rothaus_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+troegs_brewing-scratch_22_2009,0,0,245116043264,"{""name"":""Scratch #22 2009"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,41,1
+jt_whitney_s_brewpub_and_eatery-alt,0,0,244746944514,"{""name"":""Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,31,1
+microbrouwerij_achilles-serafijn_christmas_angel,0,0,244872052737,"{""name"":""Serafijn Christmas Angel"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""microbrouwerij_achilles"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+stevens_point_brewery-amber_lager,0,0,245101821953,"{""name"":""Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+paulaner-hacker_pschorr_hubertus_bock,0,0,244994015232,"{""name"":""Hacker-Pschorr Hubertus Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,33,1
+felinfoel_brewery_co_ltd-thames_welsh_ale,0,0,244614758400,"{""name"":""Thames Welsh Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""felinfoel_brewery_co_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+goose_island_beer_company_clybourn-black_toad_dark_ale,0,0,244614365184,"{""name"":""Black Toad Dark Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""goose_island_beer_company_clybourn"",""updated"":""2010-07-22 20:00:20"",""description"":""We begin with a custom mixture of dark and roasted barley malts, then we add the choicest hops. The resulting ale has a dark chestnut color and a deep nutty flavor. Brewed specially for Trader Joe's."",""style"":""Porter"",""category"":""Irish Ale""}",1,18,1
+pivzavod_baltika-baltika_8,0,0,244992049153,"{""name"":""Baltika #8"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivzavod_baltika"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,28,1
+vancouver_island_brewing,0,0,245100183554,"{""name"":""Vancouver Island Brewing"",""city"":""Victoria"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-250-361-0007"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2330 Government Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":48.4344,""lon"":-123.367}}",1,5,1
+molson_breweries_of_canada,0,0,244879458305,"{""name"":""Molson Breweries of Canada"",""city"":""Toronto"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-416-975-1786"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""175 Bloor Street East""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.6706,""lon"":-79.3824}}",1,55,1
+rocky_river_brewing-bombardier_brown,0,0,245002534912,"{""name"":""Bombardier Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rocky_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,52,1
+piece,0,0,244984774657,"{""name"":""Piece"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60622"",""country"":""United States"",""phone"":""1-773-772-4422"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1927 West North Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.9104,""lon"":-87.6761}}",1,10,1
+freeminer_brewery-deep_shaft_stout,0,0,244627734529,"{""name"":""Deep Shaft Stout"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""freeminer_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+hawks_brewing-super_natural_ipa,0,0,244739014656,"{""name"":""Super Natural IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hawks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,12,1
+hc_berger_brewing,0,0,244757037057,"{""name"":""HC Berger Brewing"",""city"":""Fort Collins"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.5853,""lon"":-105.084}}",1,57,1
+liberty_steakhouse_and_brewery-liberty_white_ale,0,0,244757626882,"{""name"":""Liberty White Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liberty_steakhouse_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Wheat-based beer brewed with coriander and orange peel to produce a mild citrus flavor."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,58,1
+pacific_coast_brewing-cask_esb,0,0,244985102336,"{""name"":""Cask ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+harpoon_brewery_boston-ufo_raspberry_hefeweizen,0,0,244747796481,"{""name"":""UFO Raspberry Hefeweizen"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_boston"",""updated"":""2010-07-22 20:00:20"",""description"":""We have added natural raspberry flavor to our UFO Hefeweizen to create this beer.  Consistent with the hefeweizen style, this beer is unfiltered and cloudy with a solid foamy head.  UFO Raspberry has a distinctive, hazy rose color.  The scent of fresh raspberries hits the nose immediately, along with a subtle bready aroma from the wheat and yeast.  The body is light and the unfiltered yeast provides a soft mouthfeel.  The taste of the fruit compliments the beer nicely, neither overwhelms the other.  There is a faint sweetness on the palate, which finishes cleanly in a semi-dry, tart finish."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,34,1
+john_harvard_s_brewhouse_wilmington-half_again_bock,0,0,244748320769,"{""name"":""Half Again Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brewhouse_wilmington"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,35,1
+mohrenbrauerei_august_huber-naturtrubes_kellerbier,0,0,244871790594,"{""name"":""Naturtrübes Kellerbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mohrenbrauerei_august_huber"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,37,1
+sierra_nevada_brewing_co-chico_estate_harvest_ale,0,0,244984184833,"{""name"":""Chico Estate Harvest Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""We wanted to see if we could grow hops at our brewery in Chico, California so we planted our own hop field selecting our prized Cascade and Centennial varieties along with some specialty hop varieties to experiment with. To our surprise, we not only could grow hops, we were also able to harvest them in late summer due to Chico’s ideal climate. \r\n\r\nChico Estate Harvest Ale is one of the very few estate harvest ales produced anywhere in the world today. All the hops in the beer are grown naturally on the premises of our brewery in Chico. We pick the hops ourselves and then take them directly to the brew kettle, without being dried, just after picking so they retain nearly all of their natural oils and resins. It is made with Cascade, Centennial and Chinook hops. Until now, this beer has only been available in draft. Starting this year, we will be bottling it on a very limited basis, with plans to expand its availability as we expand our Chico hop field in the coming years."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+prairie_rock_brewing_elgin-triple_nickel_irish_stout,0,0,244983332864,"{""name"":""Triple Nickel Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prairie_rock_brewing_elgin"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+ohio_brewing-buckeye_brown,0,0,244863336448,"{""name"":""Buckeye Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ohio_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,14,1
+mercury_brewing_company,0,0,244881227778,"{""name"":""Mercury Brewing Company"",""city"":""Ipswich"",""state"":""Massachusetts"",""code"":""1938"",""country"":""United States"",""phone"":""978-356-3329"",""website"":""http://www.mercurybrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Located in historic Ipswich, Massachusetts, Mercury Brewing Company emerged in 1999 when Rob Martin, then Director of Operations for Ipswich Brewing Company, purchased the brewery and renamed the company Mercury Brewing and Distribution Company. While continuing production of Ipswich Ale, Martin expanded the company with Stone Cat Ales and Lagers, Mercury Premium Sodas, and numerous contract brewing agreements.  In 2007 our beer production topped 14,000 BBLs (434,000 GAL), a 44% increase from 2006. Soda production came to 1180 BBLs (36,580 GAL), an increase of 22% from the previous year. We could not have done this without our hardworking staff and loyal customers and look forward to an even better 2008."",""address"":[""23 Hayward St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.6728,""lon"":-70.844}}",1,59,1
+titletown_brewing-colonel_kolsch,0,0,245098414080,"{""name"":""Colonel Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+terminal_gravity_brewing,0,0,245118730241,"{""name"":""Terminal Gravity Brewing"",""city"":""Enterprise"",""state"":""Oregon"",""code"":""97828"",""country"":""United States"",""phone"":""1-541-426-0158"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""803 SE School Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.4192,""lon"":-117.272}}",1,48,1
+routh_street_brewery_and_grille-pilsner,0,0,245004435457,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+harmon_brewing_company,0,0,244754415616,"{""name"":""Harmon Brewing Company"",""city"":""Tacoma"",""state"":""Washington"",""code"":""98402"",""country"":""United States"",""phone"":""1-253-383-2739"",""website"":""http://harmon.harmonbrewingco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1938 Pacific Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":47.2436,""lon"":-122.437}}",1,50,1
+midnight_sun_brewing_co-mammoth_extra_stout,0,0,244864188416,"{""name"":""Mammoth Extra Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark and full-bodied, Mammoth Extra Stout boasts a well-rounded melange of rich flavors, including chocolate, caramel, coffee, nut and date. Huge portions of pale and specialty malts give this mammoth brew a complex yet exceptionally smooth palate. Hops provide balance without overpowering the chewy malt profile."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,17,1
+otter_creek_brewing_wolaver_s_organic_ales-vermont_lager,0,0,244872839169,"{""name"":""Vermont Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic European style lager. We take the time to brew this beer as a true lager should be brewed. And it's well worth the wait! You can enjoy the drinkability of this light-gold, refreshing beer with friends at the pub or at home after a long day."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+wagner_valley_brewing,0,0,245744730112,"{""name"":""Wagner Valley Brewing"",""city"":""Lodi"",""state"":""New York"",""code"":""14860"",""country"":""United States"",""phone"":""1-607-582-6450"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9322 State Route 414""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.5739,""lon"":-76.8582}}",1,4,1
+weeping_radish_restaurant_and_brewery_manteo-weizen,0,0,245744861184,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weeping_radish_restaurant_and_brewery_manteo"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,6,1
+old_city_brewing,0,0,244879130625,"{""name"":""Old City Brewing"",""city"":""Austin"",""state"":""Texas"",""code"":""78701"",""country"":""United States"",""phone"":""1-512-448-4844"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""603 West 13th Street #1A-345""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":30.2767,""lon"":-97.7463}}",1,54,1
+revolution_brewing_llc,0,0,244987068416,"{""name"":""Revolution Brewing LLC"",""city"":""Chicago"",""state"":""Illinois"",""code"":""60647"",""country"":""United States"",""phone"":""773-227-BREW"",""website"":""http://revbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Revolution Brewing LLC is opening a brewpub in Logan Square which will include a full-service restaurant. We will also be selling our beers in kegs to select Chicago drinking establishments as brewing capacity allows."",""address"":[""2323 N Milwaukee Ave""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.9234,""lon"":-87.6982}}",1,16,1
+plzesk_prazdroj,0,0,244986609664,"{""name"":""Plzesk Prazdroj"",""city"":""Plze"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-019/706-1111"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""U Prazdroje 7""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.7466,""lon"":13.3861}}",1,15,1
+rowland_s_calumet_brewery-calumet_pils,0,0,244985954305,"{""name"":""Calumet Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rowland_s_calumet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+union_barrel_works-union_barrel_works_kolsch,0,0,245116043265,"{""name"":""Union Barrel Works Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_barrel_works"",""updated"":""2010-07-22 20:00:20"",""description"":""A pale golden German ale with subdued, clean-tasting malt flavor and aroma. This is a beer from the \""old\"" brewing tradition before lagers become popular. Fermented at a lower temperature than normal ales, and followed by several weeks of cold lagering.""}",1,41,1
+jw_lees_and_co_brewers_ltd-harvest_ale_1999,0,0,244746944515,"{""name"":""Harvest Ale 1999"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,31,1
+middle_ages_brewing-tripel_crown,0,0,244872052738,"{""name"":""Tripel Crown"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Cellar aged, subtly complex and deceptively strong. Using two of the old world's brewing traditions, we have combined British ingredients and methods with Belgian ale qualities."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,38,1
+sweet_water_tavern_and_brewery-black_stallion_oatmeal_stout,0,0,245101887488,"{""name"":""Black Stallion Oatmeal Stout"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweet_water_tavern_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, smooth...long dry-roast finish...ebony"",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,9,1
+penn_brewery-st_nikolaus_bock_bier,0,0,244994080768,"{""name"":""St. Nikolaus Bock Bier"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A very rich, dark bock beer. dark ruby in color with subtle tones of chocolate and burnt malt. It will warm you on a cold winter night and brighten your days. The perfect holiday gift for the beer drinker."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,33,1
+firestone_walker_brewing_company,0,0,244614758401,"{""name"":""Firestone Walker Brewing Company"",""city"":""Paso Robles"",""state"":""California"",""code"":""93446"",""country"":""United States"",""phone"":""(805) 238-2556"",""website"":""http://www.firestonewalker.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1400 Ramada Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.5953,""lon"":-120.694}}",1,19,1
+gordon_biersch_brewing-premium_light_lager,0,0,244614365185,"{""name"":""Premium Light Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gordon_biersch_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+rail_house_restaurant_and_brewpub-honey_weiss_discontinued,0,0,244992114688,"{""name"":""Honey Weiss (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+victory_brewing-hop_devil_india_pale_ale,0,0,245100249088,"{""name"":""Hop Devil India Pale Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Menacingly delicious, with the powerful, aromatic punch of whole flower American hops backed up by rich, German malts. HopDevil Ale offers a roller coaster ride of flavor, coasting to a smooth finish that satisfies fully."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,5,1
+montana_brewing-espresso_porter,0,0,244879458306,"{""name"":""Espresso Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+roost_brewery-pale_ale,0,0,245002534913,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roost_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+pivovar_klter_hradit-tmave_10_dark_beer,0,0,244984774658,"{""name"":""Tmavé 10% / Dark Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_klter_hradit"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+govnor_s_public_house-black_forest,0,0,244627734530,"{""name"":""Black Forest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""govnor_s_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,49,1
+hc_berger_brewing-chocolate_stout,0,0,244739014657,"{""name"":""Chocolate Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hc_berger_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+hereford_hops_restaurant_and_brewpub_1-cleary_red,0,0,244757037058,"{""name"":""Cleary Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_restaurant_and_brewpub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,57,1
+licher_privatbrauerei-export_premium,0,0,244757692416,"{""name"":""Export Premium"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""licher_privatbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+pike_pub_and_brewery-pale_ale,0,0,244985102337,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,11,1
+harpoon_brewery_boston,0,0,244747796482,"{""name"":""Harpoon Brewery - Boston"",""city"":""Boston"",""state"":""Massachusetts"",""code"":""2210"",""country"":""United States"",""phone"":""1-888-HARPOON"",""website"":""http://www.harpoonbrewery.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""306 Northern Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3465,""lon"":-71.0338}}",1,34,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2005_whisky,0,0,244748320770,"{""name"":""Harvest Ale 2005 (Whisky)"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+moosehead_breweries_ltd,0,0,244871790595,"{""name"":""Moosehead Breweries Ltd."",""city"":""Saint John"",""state"":""New Brunswick"",""code"":"""",""country"":""Canada"",""phone"":""(506) 635-7000"",""website"":""http://www.moosehead.ca/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""89 Main Street, PO Box 3100, Station B""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.2578,""lon"":-66.0984}}",1,37,1
+slab_city_brewing,0,0,244984184834,"{""name"":""Slab City Brewing"",""city"":""Bonduel"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.7403,""lon"":-88.4448}}",1,8,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-thomas_kemper_hefeweizen,0,0,244983332865,"{""name"":""Thomas Kemper HefeWeizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,7,1
+old_hat_brewery-tripel,0,0,244863336449,"{""name"":""Tripel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+mickey_finn_s_brewery-wheat_ale,0,0,244881227779,"{""name"":""Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+titletown_brewing-march_marzen,0,0,245098414081,"{""name"":""March Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,2,1
+the_nook_brewhouse,0,0,245118730242,"{""name"":""The Nook Brewhouse"",""city"":"""",""state"":"""",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2011-02-10 01:47:16"",""description"":"""",""address"":[]}",1,48,1
+russian_river_brewing-blind_pig_ipa,0,0,245004435458,"{""name"":""Blind Pig IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Blind Pig IPA was originally brewed by Vinnie at Blind Pig Brewing Co. in Temecula CA. Inspired by the original Blind Pig IPA, this beer is loaded with hop character but only has 6.0% ABV."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,56,1
+harpoon_brewery_windsor-harpoon_ipa,0,0,244754481152,"{""name"":""Harpoon IPA"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""harpoon_brewery_windsor"",""updated"":""2010-07-22 20:00:20"",""description"":""From their site:\r\n\r\n\""Harpoon IPA is an interpretation of the classic English style using hops and malt grown in the United States.\""\r\n\r\n...\r\n\r\n\""The high hopping of Harpoon IPA is not only noticeable in the nose but especially in the finish. The lingering bitter finish of this beer is not harsh or astringent, but crisp and pronounced. This is created, in part, by dry hopping – a technique that involves adding fresh hops to the conditioning beer to provide a fresh hop aroma.\r\n\r\nThis beer is floral, medium body with an aggressive, clean hop finish.\""\r\n\r\n----\r\n\r\nThis has been my year-round favorite since moving to Boston in 2004.  It is the nectar of the gods.  Seriously, it's a nicely balanced, hoppy IPA that isn't overpowering.  Also, it can be consumed in huge quantities with no hangover."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,50,1
+midnight_sun_brewing_co-midnight_sun_kolsch,0,0,244864188417,"{""name"":""Midnight Sun Kolsch"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the talented brewers of Midnight Sun comes an incredible, beautifully bright and sunny golden ale. Every sip entices the taste buds with a bold balance of pils malt and noble hops. Midnight Sun Kolsch is a traditional German-style beer that unites the liveliness of an ale with the crispness of a lager for real refreshment any time of year. \r\n\r\nCreating a beer that truly serves both newcomers to craft beer as well as avid beer aficionados is no easy task. Midnight Sun Kolsch brewers struck gold with this beer...and now you can too. \r\n\r\nAvailability:\r\nAK - draft (year-round)""}",1,17,1
+pennsylvania_brewing-weizen,0,0,244996898816,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennsylvania_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,39,1
+water_street_brewery-old_world_oktoberfest,0,0,245744730113,"{""name"":""Old World Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,4,1
+yards_brewing-poor_richard_s_tavern_spruce_ale,0,0,245744926720,"{""name"":""Poor Richard's Tavern Spruce Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed to celebrate Ben's 300th birthday.\r\n\r\nWhether Ben Franklin ever said, \""Beer is living proof that God loves us and wants us to be happy\"" is up for debate. Some say he said it, others say he didn't. No one knows for sure. \r\n\r\nHistorical facts or fictions aside, Yards Brewing Company has recreated Poor Richard's Tavern Spruce Ale™ to celebrate Franklin's affinity for fine ales. Poor Richard's Tavern Spruce Ale is based on Franklin's original recipe, which called for spruce essence and molasses, as barley and hops were not readily available at the time.\r\n\r\nEnjoy a taste of history courtesy of Yards Brewing Company, Philadelphia's premier brewer and bottler."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,6,1
+orlio_organic-orlio_seasonal_india_pale_ale,0,0,244879196160,"{""name"":""Orlio Seasonal India Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orlio_organic"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong but smooth medium-bodied copper ale with a furity nose, big dry hop flavor, and assertive hop bite that rest upon a subtle but supportive background of complex malt flavors."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,54,1
+ridgeway_brewing-bitter,0,0,244987068417,"{""name"":""Bitter"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+privater_brauereigasthof_greifenklau-weizen,0,0,244986609665,"{""name"":""Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privater_brauereigasthof_greifenklau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,15,1
+sabmiller_india-haywards_5000,0,0,244986019840,"{""name"":""Haywards 5000"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Country of origin:  India \r\nBeer type:  Lager  \r\nAlcohol content by volume: < 7.5% by volume  \r\nCarbohydrates: - \r\nTaste:  full bodied malty flavour  \r\nMalts:  Indian malts, 6 row barley  \r\nHops:  German hop extract (CO2) & Indian hop palate  \r\nColour:  Golden yellow  \r\nAvailability:  India - all seasons, South East Asia, Middle East and Europ \r\nFermentation process: Bottom-fermented  \r\nServing temperature:  7 - 9 °C  \r\nPackaging:  650 ml and 330 ml Indian standard glass amber bottle ; 500 ml Non returnable bottles ; 500 ml cans and 330 ml cans ( in select markets) \r\n \r\nhttp://www.sabmiller.in/brands_haywards_5000.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+victory_brewing-old_horizontal,0,0,245116043266,"{""name"":""Old Horizontal"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A luxurious, warming barleywine rich with aromatic hops and dark, candied fruit character that hides its epic strength masterfully."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,41,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_celebration_ale_2006,0,0,244746944516,"{""name"":""Hitachino Nest Celebration Ale 2006"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+midnight_sun_brewing_co-earth_belgian_style_chocolate_milk_stout,0,0,244872118272,"{""name"":""Earth - Belgian Style Chocolate Milk Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Mother Earth is the rich fertile “living” planet. Our EARTH combines pale and dark malts for essential body. Cocoa nibs—decadent chocolate in its most elemental form—add distinction. Lush lactose creates incredible creaminess. But Earth gains amazing ground with extensive aging on Bergenfield extra dark cocoa."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,38,1
+t_r_theakston-old_peculier,0,0,245101887489,"{""name"":""Old Peculier"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_r_theakston"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+pennichuck_brewing_company-shouboushi_ginger_pilsner,0,0,244994080769,"{""name"":""Shouboushi Ginger Pilsner"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,33,1
+fish_brewing_company_fish_tail_brewpub-organic_amber_ale,0,0,244614823936,"{""name"":""Organic Amber Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""fish_brewing_company_fish_tail_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""Medium-bodied with an appealing amber hue, this is the First Ale of the Republic. Its organic pale, Munich, and crystal malts create a gentle sweet character that is difficult to resist.  From organic Hallertauer hops come a zesty flavor and aroma that beautifully balance Organic Amber's malt profile. The result: Truly delicious ale that salutes organic farmers and all the goodness they bring to our tables."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,19,1
+green_bay_brewing-framboise,0,0,244741439488,"{""name"":""Framboise"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,18,1
+ridgeway_brewing,0,0,244992180224,"{""name"":""Ridgeway Brewing"",""city"":""South Stoke"",""state"":""Oxford"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01491)-873474"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6 Chapel Close""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.5462,""lon"":-1.1355}}",1,28,1
+water_street_brewery-english_brown_ale,0,0,245744795648,"{""name"":""English Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,5,1
+moon_river_brewing_company-road_trip_hard_cider,0,0,244879458307,"{""name"":""Road Trip Hard Cider"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This hard cider is fresh-pressed with delicious, sweet-tart \""Pink Lady\"" apples from the Mercier Orchards in the North Georgia mountains."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,55,1
+roost_brewery,0,0,245002534914,"{""name"":""Roost Brewery"",""city"":""Campbell"",""state"":""California"",""code"":""95008"",""country"":""United States"",""phone"":""1-408-866-2699"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 East Campbell Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":37.2869,""lon"":-121.946}}",1,52,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-best_brown,0,0,244984840192,"{""name"":""Best Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,10,1
+great_basin_brewing_company,0,0,244753891328,"{""name"":""Great Basin Brewing Company"",""city"":""Sparks"",""state"":""Nevada"",""code"":""89431"",""country"":""United States"",""phone"":""(775) 355-7711"",""website"":""http://greatbasinbrewingco.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Great Basin Brewing Co. makes fresh hand-crafted beer right before your eyes using the finest American & European grains, hops & yeast. The rugged beauty and free spirit of this region have inspired the creation of the brewery and the beers that you enjoy. We invite you to celebrate our heritage with us."",""address"":[""846 Victorian Ave""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.5349,""lon"":-119.754}}",1,49,1
+hook_norton_brewery,0,0,244739014658,"{""name"":""Hook Norton Brewery"",""city"":""Hook Norton"",""state"":""Oxford"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01608)-730384"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brewery Lane""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.9966,""lon"":-1.4922}}",1,12,1
+hereford_hops_steakhouse_and_brewpub_3-whitetail_ale,0,0,244757037059,"{""name"":""Whitetail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hereford_hops_steakhouse_and_brewpub_3"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+lift_bridge_brewery-lift_bridge_pale_ale,0,0,244757692417,"{""name"":""Lift Bridge Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lift_bridge_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Well balanced amber pale ale accentuated by multiple additions of floral Cascade hops and our unique introduction of grapefruit zest to compliment the citrus notes of the hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+pivovar_hradec_krlov-lion_lev_export_lager,0,0,244985167872,"{""name"":""Lion Lev Export Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_hradec_krlov"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+high_falls_brewing-dundee_stout,0,0,244747796483,"{""name"":""Dundee Stout"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,34,1
+karl_strauss_brewery_gardens_sorrento_mesa-padre_porter,0,0,244748320771,"{""name"":""Padre Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""karl_strauss_brewery_gardens_sorrento_mesa"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+nelson_brewing,0,0,244871856128,"{""name"":""Nelson Brewing"",""city"":""Nelson"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-250-352-3582"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""512 Latimer Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.4884,""lon"":-117.29}}",1,37,1
+socorro_springs_brewing-pick_axe_ipa,0,0,245101101056,"{""name"":""Pick Axe IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""socorro_springs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,8,1
+rahr_sons_brewing_company-stormcould_ipa,0,0,244983398400,"{""name"":""Stormcould IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""During a fierce storm on his voyage across the ocean, William Rahr could be heard yelling from the tall masted ship: \""Roll on old sea! And when you are done, when the storm clouds have destroyed themselves, we will still be standing and drinking!\"" Today, we have created the ultimate ale for a voyage such as this: A German-Style IPA - a traditional India Pale Ale with German Influence."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+on_tap_bistro_brewery-hop_maniac_ipa,0,0,244863336450,"{""name"":""Hop Maniac IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+midnight_sun_brewing_co-imperial_chocolate_pumpkin_porter,0,0,244881293312,"{""name"":""Imperial Chocolate Pumpkin Porter"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Intriguing doses of sweet spices, dark cocoa and pumpkin transform an exceptional porter into a\r\nmesmerizing potion. Pour this tantalizing brew into a snifter and seek solace in the depths of its fascinating flavors. Cinnamon, nutmeg and cloves seem familiar but this brew is cloaked in deep, dark secrets that will forever haunt you.\r\n\r\nThis beer is like nothing you have ever experienced. It is a majestic mélange of rich, impressive flavors that meld wonderfully with the\r\nwarmth of alcohol. Will it appease or awaken your spirit?"",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,59,1
+tommyknocker_brewery_and_pub-red_eye_lager,0,0,245098414082,"{""name"":""Red Eye Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+the_st_louis_brewrey-pale_ale,0,0,245118795776,"{""name"":""Pale Ale"",""abv"":4.4,""ibu"":25.0,""srm"":13.5,""upc"":0,""type"":""beer"",""brewery_id"":""the_st_louis_brewrey"",""updated"":""2011-02-10 07:51:20"",""description"":""APPEARANCE: Amber red, bright\nPROCESS: Classic English\nHOPS: East Kent Goldings (UK), Northdown (UK), Pilgrim (UK)\nMALTS: 2-Row and Caramel Malted Barley\nYEAST: London Ale\nOG: 11.2\nSRM: 13.5"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+sam_choy_s_breakfast_lunch_crab_big_aloha_brewery-ehu_ale,0,0,245004500992,"{""name"":""Ehu Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sam_choy_s_breakfast_lunch_crab_big_aloha_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,56,1
+hawks_brewing-super_natural_esb,0,0,244754546688,"{""name"":""Super Natural ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hawks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+millrose_brewing-country_ale,0,0,244864188418,"{""name"":""Country Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millrose_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+pete_s_brewing,0,0,244996964352,"{""name"":""Pete's Brewing"",""city"":""San Antonio"",""state"":""Texas"",""code"":""78232"",""country"":""United States"",""phone"":""1-210-490-9128"",""website"":""http://www.peteswicked.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""14800 San Pedro Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":29.5761,""lon"":-98.4772}}",1,39,1
+zea_rotisserie_and_brewery-clearview_light,0,0,245744926721,"{""name"":""Clearview Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,6,1
+pabst_brewing_company-old_milwaukee,0,0,244879196161,"{""name"":""Old Milwaukee"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Old Milwaukee. A trusted, high quality beer that continually receives the highest awards and accolades from Beer experts across America. Old Milwaukee has a long history of celebrating \""Blue Collar\"" sensibility. Simply said, good beer at a fair price. Old Milwaukee has always represented America's core values: Honesty, integrity, hard work and love for your family.\r\n\r\nSpeaking of family, the Old Milwaukee Family has a beer that is right for you. Old Milwaukee when you want a full bodied, full flavor American Lager. OM Light when you are in the mood for a lighter tasting beer with fewer calories. And don't forget OMNA, our flavorful non-alcoholic beer for those moments when you want the taste of America' best tasting beer without the alcohol content."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+river_west_brewing-berliner_weisse,0,0,244987068418,"{""name"":""Berliner Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+raccoon_lodge_and_brewpub_cascade_brewing-ring_tail_pale_ale,0,0,244986609666,"{""name"":""Ring Tail Pale Ale"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ring Tail Pale is light in body and straw-gold in color, with a crisp hop finish. This beer is a great choice for domestic lager drinkers."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+saint_louis_brewery_schlafy_tap_room-schlafly_winter_esb,0,0,244986019841,"{""name"":""Schlafly Winter ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+water_street_brewery-irish_red_ale,0,0,245749579776,"{""name"":""Irish Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,41,1
+kostritzer_schwarzbierbrauerei,0,0,244747010048,"{""name"":""Köstritzer Schwarzbierbrauerei"",""city"":""Bad Köstritz"",""state"":""Thüringen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)36605-/-83-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Heinrich-Schtz-Strae 16""]}",1,31,1
+miller_brewing-miller_genuine_draft,0,0,244872183808,"{""name"":""Miller Genuine Draft"",""abv"":4.66,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Miller Genuine Draft debuted in 1985 with fresh, smooth flavor that's a result of being cold-filtered four times. As we capitalize on the growing trend towards \""mainstream sophistication,\"" MGD is positioned as the only beer refined to ideal smoothness for those who pursue their passion with integrity and conviction. For our target consumer, MGD is a brand that celebrates their experiences ... past, present, and future. Because, ultimately, in beer as in life, \""Experience is Golden.\"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,38,1
+taylor_s_crossing_brewing-two_lions_pale_ale,0,0,245101887490,"{""name"":""Two Lions Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_crossing_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+pennsylvania_brewing,0,0,244994146304,"{""name"":""Pennsylvania Brewing"",""city"":""Pittsburgh"",""state"":""Pennsylvania"",""code"":""15212"",""country"":""United States"",""phone"":""1-412-237-9402"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""800 Vinial Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.4569,""lon"":-79.9915}}",1,33,1
+furstlich_furstenbergische_brauerei,0,0,244614823937,"{""name"":""Fürstlich Fürstenbergische Brauerei"",""city"":""Donaueschingen"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)771-/-86-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Postplatz 1-4""]}",1,19,1
+hasserder_brauerei-premium_pils,0,0,244741439489,"{""name"":""Premium Pils"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hasserder_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+rock_bottom_restaurant_brewery_south_denver-walnut_buffalo_gold_premium_ale,0,0,244992180225,"{""name"":""Walnut Buffalo Gold Premium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_south_denver"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+western_reserve_brewing-cloud_nine_witbier,0,0,245744795649,"{""name"":""Cloud Nine Witbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""western_reserve_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,5,1
+moon_river_brewing_company-the_captains_porter,0,0,244879523840,"{""name"":""The Captains Porter"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our porter is a full bodied, semi-sweet dark ale, with distinct notes of caramel and chocolate. A touch of English grown Fuggles gives balance to the complex malty sweetness. Brewed in the loving memory of our Brew master's grandfather, the Captain."",""style"":""Porter"",""category"":""Irish Ale""}",1,55,1
+sa_brain_co_ltd-traditional_welsh_ale,0,0,245002600448,"{""name"":""Traditional Welsh Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sa_brain_co_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-porter,0,0,244984840193,"{""name"":""Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,10,1
+great_divide_brewing-hibernation_ale,0,0,244753956864,"{""name"":""Hibernation Ale"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Great Divide’s award-winning Hibernation Ale is Colorado’s original strong ale – it has been our winter seasonal each year since 1995. Since that time, Hibernation has become the most sought-after winter beer in Colorado. Hibernation’s massive flavors are so intense that it requires over three months of aging each year. Each summer, while our brewers are still spending their weekends in flip-flops and shorts, they prepare for July’s Hibernation brewing schedule.\r\n\r\nWe cellar Hibernation until late October, when it reaches the peak of perfection. This lengthy aging process gives Hibernation its revered malty richness, complex hop profile and hearty warming character, which is perfect right out of the bottle or cellared for longer periods of time. Hibernation is a lively treat that really beats the winter chill. This scrumptious, collectible, and imminently cellarable ale is only available for six weeks each year, from November 1 to December 15.  Hibernation Ale is the perfect gift or accompaniment to your winter festivities."",""style"":""Old Ale"",""category"":""British Ale""}",1,49,1
+hoppin_frog_brewery-bodacious_black_and_tan,0,0,244739080192,"{""name"":""Bodacious Black and Tan"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppin_frog_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""I.P.A. and Stout converge for a really great flavor combination! The assertive, hoppy character of our Hoppin’ To Heaven I.P.A. is perfectly complimented by the intense, deep roasted taste of our B.O.R.I.S. Oatmeal-Imperial Stout.""}",1,12,1
+highland_brewing_company-kashmir_ipa,0,0,244757037060,"{""name"":""Kashmir IPA"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A brilliant, dry pale ale with an aggressive hop character balanced with a smooth finish. A bold beer best consumed with a stiff upper lip.\r\n\r\nIBU: 60\r\nAlcohol Content: 5.6% by volume\r\nHops: Stryian Goldings, Mt. Hood, Fuggles, Magnum, Willamette\r\n\r\n*Contains Wheat\r\n\r\nCalories per 12 oz 190.85\r\nCarbs per 12 oz 16.82"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,57,1
+limburg_beer_company,0,0,244880703488,"{""name"":""Limburg Beer Company"",""city"":""Hawkes Bay"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":""64-(06)-878-5542"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""500 Williams Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-39.6275,""lon"":176.854}}",1,58,1
+pivovar_podkov,0,0,244985233408,"{""name"":""Pivovar Podkov"",""city"":""Praha"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-326-356-222"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dkansk 201/10""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":50.0878,""lon"":14.4205}}",1,11,1
+highland_brewing_company-black_mocha_stout,0,0,244747862016,"{""name"":""Black Mocha Stout"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""highland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Highland's most robust beer, having a very malty body with a large, roasted chocolate flavor. It is black in color with a very clean finish and a moderate hop flavor.\r\n\r\nIBU: 25\r\nAlcohol content: 5.3% by volume\r\nHops: Chinook and Mt. Hood\r\n\r\n*Contains Wheat\r\n\r\nCalories per 12 oz. 216.81\r\nCarbs per 12 oz. 24.99"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,34,1
+kirin_brewery_company_ltd-kirin_ichiban,0,0,244748386304,"{""name"":""Kirin Ichiban"",""abv"":4.95,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kirin_brewery_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""From Brewery's site:\r\n\r\nWith his gold label and Special Premium Reserve appellation, Ichiban outclasses and outperforms.\r\n\r\nIn 1990, Ichiban's debut made a splash in the world of super premium beers. The luxurious single wort (or first press) process yields a unique, complex flavor. With his gold label and \""Special Premium Reserve\"" appellation, Ichiban outclasses and outperforms. But don't be fooled by a snooty attitude -- this is a great beer that goes with anything.\r\n\r\nWhat makes Ichiban great\r\nProminent wort. Finest barley malt, premium hops, smooth finish, no bitter aftertaste.""}",1,35,1
+nicolet_brewing-classic_pilsener,0,0,244871856129,"{""name"":""Classic Pilsener"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nicolet_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+southern_tier_brewing_co-imperial_cherry_saison,0,0,245101166592,"{""name"":""Imperial Cherry Saison"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,8,1
+rogue_ales-dad_s_little_helper,0,0,244983463936,"{""name"":""Dad's Little Helper"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""\""This aint your Dads malt liquor\"" - Brewmaster John Maier \r\nAfter the death of his wife, Henry Jackson Smart was left to raise 6 young children alone. His courage, love, selflessness and dedication inspired his daughter, Sonora Smart Dodd, to organize the First Fathers Day on June 19th, 1910. In 1924 President Calvin Coolidge proclaimed the third Sunday in June as Fathers Day. President Nixon, in 1972, established it as a permanent day of national observance. \r\nDads is brewed with Harrington and Klages malts, Flaked Corn, Crystal Hops, Free Range Coastal Water, and Czech Pils Yeast. Available in the spring of 2005 in the classic 22-ounce Rogue micropiece.""}",1,7,1
+original_basil_t_s,0,0,244863336451,"{""name"":""Original Basil T's"",""city"":""Red Bank"",""state"":""New Jersey"",""code"":""7701"",""country"":""United States"",""phone"":""1-732-842-5990"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""183 Riverside Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.3532,""lon"":-74.0747}}",1,14,1
+moonlight_brewing-bombay_by_boat_ipa,0,0,244881293313,"{""name"":""Bombay by Boat IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moonlight_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+troegs_brewing-bavarian_lager,0,0,245098479616,"{""name"":""Bavarian Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Tröegs Bavarian Lager is an authentic German style lager, brewed with Munich malts, Hallertau Hops and fermented at cool temperatures followed by a full month of aging, or \""lagering\"", to impart a range of complex maltiness and subtle aromas only found in traditional German lagers."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+thirstybear_brewing-kozlov_stout,0,0,245118795777,"{""name"":""Kozlov Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+san_diego_brewing,0,0,245004500993,"{""name"":""San Diego Brewing"",""city"":""San Diego"",""state"":""California"",""code"":""92120"",""country"":""United States"",""phone"":""1-619-284-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10450-L Friars Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.7922,""lon"":-117.099}}",1,56,1
+hc_berger_brewing-red_raspberry,0,0,244754546689,"{""name"":""Red Raspberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hc_berger_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,50,1
+minneapolis_town_hall_brewery,0,0,244864253952,"{""name"":""Minneapolis Town Hall Brewery"",""city"":""Minneapolis"",""state"":""Minnesota"",""code"":""55454"",""country"":""United States"",""phone"":""1-612-339-8696"",""website"":""http://www.townhallbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1430 Washington Avenue South""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.9732,""lon"":-93.2479}}",1,17,1
+prairie_rock_brewing_elgin-old_glory_american_pale,0,0,244996964353,"{""name"":""Old Glory American Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prairie_rock_brewing_elgin"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,39,1
+paulaner-hefe_weissbier,0,0,245003059200,"{""name"":""Hefe-Weißbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,54,1
+rock_bottom_restaurant_brewery_milwaukee-stillwater_stout,0,0,244987068419,"{""name"":""Stillwater Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_milwaukee"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,16,1
+rail_house_restaurant_and_brewpub,0,0,244986675200,"{""name"":""Rail House Restaurant and Brewpub"",""city"":""Marinette"",""state"":""Wisconsin"",""code"":""54143"",""country"":""United States"",""phone"":""1-715-732-4646"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2029 Old Peshtigo Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.0851,""lon"":-87.6544}}",1,15,1
+sierra_nevada_brewing_co-bigfoot_1991,0,0,244986019842,"{""name"":""Bigfoot 1991"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+water_street_lake_country-pale_ale,0,0,245749579777,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,41,1
+magic_hat-howl,0,0,244869693440,"{""name"":""Howl"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""Born of dark and cold and snow in the marrow of the northeast's longest night, HOWL comes in on wailing winds with winter-weary eyes burning holes in sunless shadows. In its darkened depths out inner voids are warmed."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+miller_brewing,0,0,244872183809,"{""name"":""Miller Brewing"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":""53208"",""country"":""United States"",""phone"":""(414) 931-2000"",""website"":""http://www.millerbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Making the highest quality beer has been a passion of the Miller Brewing Company since its founder, Frederick J. Miller, began his brewing business in 1855. Since then, Miller Brewing has grown from a small local brewer to the second largest brewery in the U.S., with seven major breweries located across America."",""address"":[""3939 W. Highland Blvd""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0445,""lon"":-87.9626}}",1,38,1
+terrapin_beer_company,0,0,245101953024,"{""name"":""Terrapin Beer Company"",""city"":""Athens"",""state"":""Georgia"",""code"":""30606"",""country"":""United States"",""phone"":""1-888-557-2337"",""website"":""http://www.terrapinbeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""196 Alps Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.9459,""lon"":-83.4105}}",1,9,1
+pint_s_pub_brewery_and_freehouse-dark_star_esb,0,0,244994146305,"{""name"":""Dark Star ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pint_s_pub_brewery_and_freehouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+george_gale_company-prize_old_ale,0,0,244614823938,"{""name"":""Prize Old Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""george_gale_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,19,1
+hawks_brewing,0,0,244741439490,"{""name"":""Hawks Brewing"",""city"":""Roseburg"",""state"":""Oregon"",""code"":""97470"",""country"":""United States"",""phone"":""1-541-679-5778"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.2165,""lon"":-123.342}}",1,18,1
+rocky_river_brewing-oompa_loompa_chocolate_stout,0,0,244992180226,"{""name"":""Oompa Loompa Chocolate Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rocky_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+yazoo_brewing-onward_stout,0,0,245744795650,"{""name"":""Onward Stout"",""abv"":3.8,""ibu"":35.0,""srm"":45.0,""upc"":0,""type"":""beer"",""brewery_id"":""yazoo_brewing"",""updated"":""2011-04-17 12:33:50"",""description"":""The tan lace clings to the glass as you raise the pint to your lips. Close your eyes and smile as the rich espresso notes fade to a dry, roasted finish. Exceptionally smooth and satisfying. Made with English Pale malt, roasted barley, black patent malt, and flaked barley. Hopped with East Kent Goldings and Target hops, and fermented with our English ale yeast."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,5,1
+moorhouse_s_brewery_burnley,0,0,244879523841,"{""name"":""Moorhouse's Brewery (Burnley)"",""city"":""Burnley"",""state"":""Lancashire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01282)-422864"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4 Moorhouse Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":53.7864,""lon"":-2.2694}}",1,55,1
+santa_fe_brewing_company-freestyle_pilsner,0,0,245002600449,"{""name"":""Freestyle Pilsner"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""As its name suggests, this Pilsner does not like to be categorized. Inquiring whether it is a German, Czech, Bavarian, American, or any other style pilsner will result in an impatient sigh and the explanation that the whole philosophy behind this pilsner is that it does not fall into any categories. True, it is brewed with traditional ingredients (soft water, pilsner malt, saaz hops, and German yeast), but it is the way that these ingredients interact, and the characteristics of the yeast, that cause this particular pilsner to defiantly stand alone. The assertively hopped Freestyle pils exudes the flavor and the aroma of the classic Saaz hop (a tribute to “the original” pilsner), while maintaining enough body to balance but not overpower this hop’s pleasant, spicy tone. An unhurried lagering process so frequently overlooked by American craft brewers is strictly adhered to in the production of Freestyle, which makes this beer by far the most light, clean, and quenching beer in the Santa Fe Brewing Company’s line up."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,52,1
+pyramid_ales_brewery-sun_fest,0,0,244984840194,"{""name"":""Sun Fest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+great_lakes_brewing-dortmunder_gold,0,0,244754022400,"{""name"":""Dortmunder Gold"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_lakes_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth lager that strikes a delicate balance between sweet malt and dry hop flavors.""}",1,49,1
+hopworks_urban_brewery-hopworks_ipa,0,0,244739080193,"{""name"":""Hopworks IPA"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our namesake IPA is a Northwest classic. Generous additions of Amarillo, Centennial, and Ahtanum hops find their way into the kettle, hop-back, and dry-hop. This judicious use of the \""brewers spice\"" creates rich and resinous flavors of citrus fruit and pine. The finest organic Canadian pilsner malt and organic German Munich and Caramunich malts then bring balance to your new favorite beer."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,12,1
+hudepohl_schoenling_brewing,0,0,244757102592,"{""name"":""Hudepohl-Schoenling Brewing"",""city"":""Cincinnati"",""state"":""Ohio"",""code"":""45242"",""country"":""United States"",""phone"":""1-513-984-6910"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10921 Reed Hartman Highway, Suite 329""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.2651,""lon"":-84.3799}}",1,57,1
+lwenbru_munich-premium_dark,0,0,244880703489,"{""name"":""Premium Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lwenbru_munich"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+pyramid_ales_brewery-pyramid_broken_rake,0,0,244985233409,"{""name"":""Pyramid Broken Rake"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Mahogany in color, this full-bodied ale features a floral aroma and malty finish for a taste that's the perfect accompaniment to a crisp autumn afternoon."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,11,1
+issaquah_brewhouse-two_frog_dubbel,0,0,244747862017,"{""name"":""Two Frog Dubbel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""issaquah_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+kiuchi_shuzou_goushi_kaisya-hitachino_nest_espresso_stout,0,0,244748386305,"{""name"":""Hitachino Nest Espresso Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kiuchi_shuzou_goushi_kaisya"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+oak_creek_brewery-forty_niner_gold_lager,0,0,244871856130,"{""name"":""Forty-Niner Gold Lager"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+southern_tier_brewing_co-krampus_imperial_helles_lager,0,0,245101232128,"{""name"":""Krampus Imperial Helles Lager"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""St. Nicholas, aka Santa Claus, is a magical figure, the bringer of gifts and an icon of holiday spirit. Forgotten by most is his evil side kick and enforcer of ‘the list’. European tradition says while St. Nick is busy delivering presents to good little boys and girls, Krampus hands out punishments to the bad. A fanged, goat-horned bully, the Christmas Devil uses sticks and chains to beat the naughty children. Dark malts and aromatic hops create the diabolical spirit of this brew. It is finished with lager yeast and aged cold for no less than 30 days. This Imperial Helles Lager will warm even the darkest hearts. \r\n\r\nThis season, replace the cookies with a bottle of Krampus. If he happens to pay a visit, toast to him with this devilish brew. Merry Kramp-mas to all, and to all a good pint!\r\n9.0% abv. • 20º plato • Imperial Helles Lager • 22 oz / 1/6 keg""}",1,8,1
+roots_organic_brewing-woody_organic_ipa,0,0,244983463937,"{""name"":""Woody Organic IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roots_organic_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+orkney_brewery-dragonhead_stout,0,0,244863401984,"{""name"":""Dragonhead Stout"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orkney_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Dragonhead is a legendary stout: dark, intense and fully-flavoured, it is our tribute to the Vikings and their cultural legacy in Orkney.\r\n\r\nOn the nose, this black stout has a smooth roasted malt aroma giving bitter chocolate, dark roasted coffee and Smokey notes balanced by hints of spicy Goldings hop.\r\n\r\nOn the palate, the dark roasted malts combine to give a rich, rounded palate with chocolate, toast and nut flavours, with a satisfying spicy hop finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,14,1
+moosehead_breweries,0,0,244881293314,"{""name"":""Moosehead Breweries"",""city"":""Saint John"",""state"":""New Brunswick"",""code"":""0"",""country"":""Canada"",""phone"":""1-506-635-7000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""89 Main Street West""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.2567,""lon"":-66.096}}",1,59,1
+two_brothers_brewing-brown_ale,0,0,245098479617,"{""name"":""Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,2,1
+thomas_hooker_brewing-american_pale_ale,0,0,245118795778,"{""name"":""American Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thomas_hooker_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Thomas Hooker American Pale Ale is an extremely vivid, medium-bodied brew. Hooker Pale Ale stresses the crisp bitterness, lingering resin flavor, and aroma of American hops which are characteristic of the most distinctive West Coast Ales. The caramel sweetness of the malt balances the chock-full-of-hops flavor to yield a complex but quite refreshing brew."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,48,1
+san_marcos_brewery_grill-amber_ale,0,0,245004566528,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,56,1
+heavenly_daze_brewery_and_grill-porcupine_porter,0,0,244754612224,"{""name"":""Porcupine Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,50,1
+moon_river_brewing_company-georgi_belgique,0,0,244864253953,"{""name"":""Georgi-Belgique"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moon_river_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,17,1
+privater_brauereigasthof_greifenklau-lagerbier,0,0,244997029888,"{""name"":""Lagerbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privater_brauereigasthof_greifenklau"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+pivzavod_baltika,0,0,245003124736,"{""name"":""Pivzavod Baltika /"",""city"":""Sankt-Peterburg"",""state"":""Sankt-Peterburg"",""code"":"""",""country"":""Russia"",""phone"":""7-812-329-91-01"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Promzona Parnas-4, 6 Proyezd, 9 Kvartal""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":59.939,""lon"":30.3158}}",1,54,1
+route_66_brewery-mile_marker_amber_lager,0,0,244987133952,"{""name"":""Mile Marker Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+river_west_brewing-doubledecker_doppelbock,0,0,244986675201,"{""name"":""Doubledecker Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,15,1
+st_georgenbru_modschiedler_kg,0,0,245103984640,"{""name"":""St. GeorgenBru Modschiedler KG"",""city"":""Buttenheim"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9545-/-446-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Marktstrae 12""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.802,""lon"":11.0324}}",1,13,1
+youngs_company_brewery-special_london_ale,0,0,245749645312,"{""name"":""Special London Ale"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""youngs_company_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,41,1
+mambo_beer,0,0,244869758976,"{""name"":""Mambo Beer"",""city"":""Mequon"",""state"":""Wisconsin"",""code"":""53092"",""country"":""United States"",""phone"":""1-888-548-3754"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""10920 North Port Washington Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.2167,""lon"":-87.924}}",1,31,1
+millrose_brewing-dark_star,0,0,244872183810,"{""name"":""Dark Star"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millrose_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,38,1
+the_livery,0,0,245101953025,"{""name"":""The Livery"",""city"":""Benton Harbor"",""state"":""Michigan"",""code"":""49022"",""country"":""United States"",""phone"":""(269) 925-8760"",""website"":""http://liverybrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""All of our Hand Forged Microbrews here at the Livery are painstakingly created by brewmaster Steve Berthel and his assistant, Wally Rouse, on a 10bbl. system of his own design. Closed fermenters allow for the use of many different yeast strains to assure that all our beer styles have their own unique flavor profile. Many of our high gravity beers are aged in a selection of oak barrels for up to a year.  We feature 3 real ales every day, poured to perfection from our antique beer engines. Every 4th. Sunday of the month is Freakin' Firkin Sunday where we have live Irish Music, home made Ruebens, and 2 Firkins of real ale. We do not bottle our beer at this time, but we do offer our beer to retailers in 1/4 bbls. or 1/2 bbls. Please feel free to contact Steve at steve@liverybrew.com for more info. on distribution in your area. Cheers!"",""address"":[""190 5th Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.1185,""lon"":-86.4537}}",1,9,1
+pizzeria_uno_chicago_grill_brewery,0,0,244994146306,"{""name"":""Pizzeria Uno Chicago Grill & Brewery"",""city"":""Metuchen"",""state"":""New Jersey"",""code"":""8840"",""country"":""United States"",""phone"":""1-732-548-7979"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""61 US Highway 1 South""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":37.2283,""lon"":-77.3903}}",1,33,1
+gottberg_brew_pub-double_gueuze_discontinued,0,0,244614889472,"{""name"":""Double Gueuze (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""gottberg_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,19,1
+heavenly_daze_brewery_and_grill-rainbow_trout_stout,0,0,244741505024,"{""name"":""Rainbow Trout Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavenly_daze_brewery_and_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,18,1
+rocky_river_brewing,0,0,244992180227,"{""name"":""Rocky River Brewing"",""city"":""Rocky River"",""state"":""Ohio"",""code"":""44116"",""country"":""United States"",""phone"":""1-440-895-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""21290 Center Ridge Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.4623,""lon"":-81.856}}",1,28,1
+yuengling_son_brewing-yuengling_bock_beer,0,0,245744861184,"{""name"":""Yuengling Bock Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""In celebration of our 180th Anniversary year, the marketplace will see one of the first seasonal offerings from the Yuengling Brewery in many years. Yuengling has produced a Bock Beer in its long and storied past, and we have now reinvented that product for limited release in 2009. The new brew is dark brown in color and offers exceptional flavor that lives up to the quality Yuengling drinkers have grown to expect.\r\n\r\nYuengling Bock Beer will be offered in ½ barrels only, beginning in late February and lasting for approximately 8-10 weeks. Let’s all raise a pint of Yuengling Bock and celebrate the 180th Anniversary year!"",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,5,1
+north_coast_brewing_company-acme_california_ipa,0,0,244879523842,"{""name"":""Acme California IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Acme IPA is profoundly hoppy, finished with over a pound of fresh whole hops per barrel. The result of this generous hopping is a beer that is deliciously dry, and eminently drinkable in spite of its apparent strength."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,55,1
+schloss_eggenberg-samichlaus_bier_2003,0,0,245002665984,"{""name"":""Samichlaus Bier 2003"",""abv"":14.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schloss_eggenberg"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,52,1
+river_horse_brewing_company-river_horse_special_ale,0,0,244984905728,"{""name"":""River Horse Special Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_horse_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""It's been with us from the start and hasn't changed since that first brew way back in 1996. Ample quantities of caramel malt give this English ale a soft copper hue and the colorful addition of carapils malt adds a slight sweetness you might mistake for honey."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,10,1
+greene_king-abbot_ale,0,0,244754022401,"{""name"":""Abbot Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""greene_king"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+idaho_brewing-dr_hops_amber_ale,0,0,244739080194,"{""name"":""Dr. Hops Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""idaho_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+independence_brew_pub-oatmeal_stout,0,0,244757102593,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""independence_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,57,1
+maclay_and_co-eighty_shilling_export_ale,0,0,244880834560,"{""name"":""Eighty Shilling Export Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maclay_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+rock_bottom_restaurant_brewery_san_jose-brown_bear_brown_ale,0,0,244985298944,"{""name"":""Brown Bear Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+jacob_leinenkugel_brewing_company-leinenkugel_s_summer_shandy,0,0,244747927552,"{""name"":""Leinenkugel's Summer Shandy"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Get a taste of the freshest flavor under the sun - Leinenkugel’s Summer Shandy. A shandy is a lemonade flavored beer, a European favorite during the warmer months. And the light, crisp flavor makes it a great summer refresher. Each batch is carefully brewed using the finest wheat, malted barley and just a hint of real Wisconsin honey. Then, our brewmasters mix in fresh lemonade and citrus flavors to create an adventurous taste that’s perfect for those lazy days of summer."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,34,1
+labatt_ontario_breweries-labatt_blue_light,0,0,244748451840,"{""name"":""Labatt Blue Light"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Labatt Blue Light was introduced in 1983 as a lower alcohol, lower calorie version of Canada’s most popular brand. Blue Light uses specially selected North American aromatic hops and the same strain of lager yeast as the one used to produce Labatt Blue. The result is a crisp, clean and delicately balanced beer, with a slight sweetness and citrus-like hop character."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,35,1
+oldenberg_brewery,0,0,244871921664,"{""name"":""Oldenberg Brewery"",""city"":""Fort Mitchell"",""state"":""Kentucky"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.0472,""lon"":-84.5599}}",1,37,1
+spilker_ales-cortland_autumn_discontinued,0,0,245101297664,"{""name"":""Cortland Autumn (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spilker_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+routh_street_brewery_and_grille,0,0,244983529472,"{""name"":""Routh Street Brewery and Grille"",""city"":""Dallas"",""state"":""Texas"",""code"":""75201"",""country"":""United States"",""phone"":""1-214-922-8835"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.789,""lon"":-96.7989}}",1,7,1
+otto_s_pub_and_brewery-double_d_ipa,0,0,244863401985,"{""name"":""Double D IPA"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Hopheads rejoice!  This strong IPA takes the style to a new level.  It's a big Imperial IPA packed with Nugget, Palisade, and Amarillo hops.  ABV  8.2%"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,14,1
+moosejaw_pizza_dells_brewing_company,0,0,244881293315,"{""name"":""Moosejaw Pizza & Dells Brewing Company"",""city"":""Wisconsin Dells"",""state"":""Wisconsin"",""code"":""53965"",""country"":""United States"",""phone"":""1-608-254-1122"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""110 Wisconsin Dells Parkway South""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.5907,""lon"":-89.7939}}",1,59,1
+two_brothers_brewing-ebelweiss,0,0,245098479618,"{""name"":""Ebelweiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,2,1
+triumph_brewing_of_princeton-helles_lager,0,0,245118795779,"{""name"":""Helles Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+san_marcos_brewery_grill-winter_wheat,0,0,245004566529,"{""name"":""Winter Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+high_falls_brewing-dundee_pale_ale,0,0,244754612225,"{""name"":""Dundee Pale Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Behold the hop. A flower, but too unsightly to be used for decoration. The ugly duckling of the flower family. \r\n\r\nOh, but the secret it holds. Soak it in some water with the right companions and it surrenders its bouquet to use a corny flower metaphor. That unique hop flavor is the difference between a fine pale ale and more ordinary beers. \r\n\r\nDundee Pale Ale understands the secret of the hop flower—the power to turn an ordinary beer into something extraordinary. \r\n\r\nAnd the power to make you indescribably hoppy. \r\n\r\nA wonderfully balanced true pale ale. Cascade, Tomahawk, and Amarillo hops create a citrusy aroma with a smooth, crisp finish. A subdued malt character nicely complements the hop complexity and produces an orangey amber hue."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+new_glarus_brewing_company-spotted_cow,0,0,244864253954,"{""name"":""Spotted Cow"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Cask conditioned ale has been the popular choice among brews since long before prohibition. We continue this pioneer spirit with our Wisconsin farmhouse ale. Brewed with flaked barley and the finest Wisconsin malts. We even give a nod to our farmers with a little hint of corn. \r\n\r\nNaturally cloudy we allow the yeast to remain in the bottle to enhance fullness of flavors, which cannot be duplicated otherwise. \r\n\r\nExpect this ale to be fun, fruity and satisfying. You know you're in Wisconsin when you see the Spotted Cow."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,17,1
+rowland_s_calumet_brewery-calumet_amber,0,0,244997029889,"{""name"":""Calumet Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rowland_s_calumet_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,39,1
+pizzeria_uno_chicago_grill_brewery-oatmeal_stout,0,0,245003190272,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizzeria_uno_chicago_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+route_66_brewery-streamline_oatmeal_stout,0,0,244987133953,"{""name"":""Streamline Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,16,1
+rock_art_brewery-the_vermonster,0,0,244986740736,"{""name"":""The Vermonster"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_art_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""We brewed THE VERMONSTER with 110 pounds of malt per barrel and jacked up the pour into a wide mouth thin glass goblet. For an amazing pairing get some Smoked Gouda from Taylor Farm Cheese and a friend!"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,15,1
+steel_brewing,0,0,245104050176,"{""name"":""Steel Brewing"",""city"":""Longview"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.5007,""lon"":-94.7405}}",1,13,1
+margaritaville_brewing_company,0,0,244869758977,"{""name"":""Margaritaville Brewing Company"",""city"":""Jacksonville"",""state"":""Florida"",""code"":""32209"",""country"":""United States"",""phone"":""(877) 742-7501"",""website"":""http://www.landsharklager.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":30.3617,""lon"":-81.6966}}",1,31,1
+milwaukee_ale_house,0,0,244872249344,"{""name"":""Milwaukee Ale House"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":""53202"",""country"":""United States"",""phone"":""1-414-226-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""233 North Water Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0334,""lon"":-87.9093}}",1,38,1
+three_floyds_brewing-arctic_panzer_wolf,0,0,245102018560,"{""name"":""Arctic Panzer Wolf"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A dry and stupendously hopped medium bodied Imperial IPA brewed with Canadian two-row malt, dextrose sugar and lots of American hops. Arctic Panzer Wolf has superior aromas of marmalade, white wine, pine and apricot all mixed with an intense American hop bitterness."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,9,1
+platte_valley_brewing,0,0,244994146307,"{""name"":""Platte Valley Brewing"",""city"":""Kearney"",""state"":""Nebraska"",""code"":""68847"",""country"":""United States"",""phone"":""1-308-237-0751"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""14 East Railroad""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.6954,""lon"":-99.0812}}",1,33,1
+granville_island_brewing_company,0,0,244741636096,"{""name"":""Granville Island Brewing Company"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-687-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1441 Cartwright Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":34.396,""lon"":-119.521}}",1,19,1
+heavyweight_brewing-old_salty,0,0,244741505025,"{""name"":""Old Salty"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heavyweight_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+rubicon_brewing-blond_barleywine,0,0,244992245760,"{""name"":""Blond Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rubicon_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+odell_brewing-5_barrel_pale_ale,0,0,244879589376,"{""name"":""5 Barrel Pale Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The distinctive hop character of our 5 Barrel Pale Ale is due to the extraction of essential oils from select hops. We treat 5 Barrel Pale Ale to an infusion of fresh whole hop flowers in the Hop Back and the Fermentor, as well as four hop additions during the kettle boil. We like how this gives the beer a fresh, lively flavor and aroma."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,55,1
+seabright_brewery-oktoberfest,0,0,245002665985,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,52,1
+roffey_brewery,0,0,244984905729,"{""name"":""Roffey Brewery"",""city"":""Holland"",""state"":""Michigan"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.7875,""lon"":-86.1089}}",1,10,1
+haarlems_biergenootschap_jopen,0,0,244754022402,"{""name"":""Haarlems Biergenootschap Jopen"",""city"":""Haarlem"",""state"":"""",""code"":"""",""country"":""Netherlands"",""phone"":""31-23-533-41-14"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""R Pereboomweg 13 achter""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.3795,""lon"":4.6377}}",1,49,1
+iron_hill_brewery_wilmingon-russian_imperial_stout,0,0,244739145728,"{""name"":""Russian Imperial Stout"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+irish_brewing_company,0,0,244757102594,"{""name"":""Irish Brewing Company"",""city"":""Newbridge"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Newbridge Industrial Estate""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.4863,""lon"":-6.168}}",1,57,1
+mad_crab_restaurant_and_brewery-winter_ale,0,0,244880834561,"{""name"":""Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_crab_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+routh_street_brewery_and_grille-bavarian_wheat,0,0,244985298945,"{""name"":""Bavarian Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,11,1
+jacob_leinenkugel_brewing_company-northwoods_lager,0,0,244747927553,"{""name"":""Northwoods Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+labatt_ontario_breweries-labatt_wildcat,0,0,244748451841,"{""name"":""Labatt Wildcat"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Wildcat is a popular priced, quality lager introduced in 1993. Conventional brewing processes are used to produce a quality mainstream lager using corn adjunct to deliver a light, dry flavour."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,35,1
+pacific_beach_brewhouse-rudolf_red_barleywine,0,0,244871921665,"{""name"":""Rudolf Red Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_beach_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+steamworks-frambozen,0,0,245101297665,"{""name"":""Frambozen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""A ruby-red raspberry beer with a luscious, pink head\r\n\r\nOur Frambozen is inspired by the centuries old Belgian tradition of brewing beer with raspberries. This high gravity brew undergoes a slow second fermentation with tons of fresh, whole Fraser Valley raspberries. The result is a ruby-red fruit beer with a intense raspberry flavour, a nice tart finish and a luscious pink head."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,8,1
+ruppaner_brauerei-hecker_dunkel,0,0,244983529473,"{""name"":""Hecker Dunkel"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+oy_sinebrychoff_ab,0,0,244863467520,"{""name"":""Oy Sinebrychoff AB"",""city"":""Kerava"",""state"":"""",""code"":"""",""country"":""Finland"",""phone"":""358-(09)-294-991"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Sinebrychoffinaukio 1""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":60.381,""lon"":25.1102}}",1,14,1
+mudshark_brewing,0,0,244881293316,"{""name"":""Mudshark Brewing"",""city"":""Lake Havasu City"",""state"":""Arizona"",""code"":""86403"",""country"":""United States"",""phone"":""1-928-453-2981"",""website"":""http://www.mudsharkbrewingco.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""210 Swanson Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.4686,""lon"":-114.341}}",1,59,1
+tyskie_browary_ksiazece-tyskie_gronie,0,0,245098545152,"{""name"":""Tyskie Gronie"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyskie_browary_ksiazece"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,2,1
+troegs_brewing-scratch_8_2008,0,0,245118861312,"{""name"":""Scratch #8 2008"",""abv"":10.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Revisiting Scratch #3, we take the same Tripel recipe, add beet and cane sugars to the kettle, and run the wort through our hopback brimming with juniper berries, coriander and yarrow flowers.\r\n\r\nInspired by the herbaceous nose of gin, the berries and flowers give a slight pine/citrus aroma with floral undertones. Scratch #8 has a dry, yeasty finish and noticeable alcohol warming when consumed."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,48,1
+schofferhofer,0,0,245004566530,"{""name"":""Schöfferhofer"",""city"":""Frankfurt/Main"",""state"":""Hessen"",""code"":""60598"",""country"":""Germany"",""phone"":"""",""website"":""http://www.schoefferhofer.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Darmstädter Landstrasse 185""]}",1,56,1
+hubcap_brewery_and_kitchen-pale_ale,0,0,244754612226,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hubcap_brewery_and_kitchen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+new_holland_brewing_company-mad_hatter_ipa,0,0,244864319488,"{""name"":""Mad Hatter IPA"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Dry-hopping provides a distinctive and floral hop aroma, while the lively and hoppy body is subtly balanced with delicious malt notes. Hatter’s hop character makes it a great fit for spicy dishes, bitter greens and beef."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+roy_pitz_brewing_company-lovitz_lager_watermelon_lager,0,0,244997095424,"{""name"":""Lovitz Lager \""Watermelon Lager\"""",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roy_pitz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This summertime lager is both smooth and refreshing as soon as it hits the lips. We take so much pride in it because there is truly nothing else like it on the market. We brew this American Style Lager beer with three types of malt: pilsner, pale and carafoam which enhance the head retention of this beer. We then gingerly scatter some very light floral hops at the beginning to give it some esters and sweetness that compliment the watermelon. The true magic of this beer does not occur in the brewing process but in the conditioning vessel. This is where we add the best farm fresh local watermelon and than push the beer into it, allowing it to sit and saturate for a few weeks. By the time it is complete, we are left with a unbelievably smooth tasting beer with a beautiful aroma and subtle taste of watermelon that imparts its way into this already crisp lager. Truly our customers' favorite, this one will have you reaching for another glass soon after you put the first one down."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,39,1
+port_brewing_company-sharkbite_red,0,0,245003190273,"{""name"":""Sharkbite Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark Amber Ale"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,54,1
+sabmiller_india-royal_challenge,0,0,244987199488,"{""name"":""Royal Challenge"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Royal Challenge Premium Lager is the second largest selling mild beer in India. Royal Challenge is brewed with the choicest 6 malt barley. Its long brew duration provides it with a distinct, smooth taste and rich flavour. It has all the hall marks of a great beer - Color that is golden honey, taste that is smooth and crisp, lace that sticks to the wall of the glass. Royal Challenge Premium Lager is the beer for the discerning who have the confidence to make their choices based on their superior taste and knowledge rather than follow the crowd.\r\n\r\n\r\nhttp://www.sabmiller.in/brands_royal-challenge.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+rock_bottom_restaurant_brewery_denver-lucky_u_esb,0,0,244986740737,"{""name"":""Lucky U ESB"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_denver"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+stone_city_brewing,0,0,245104050177,"{""name"":""Stone City Brewing"",""city"":""Solon"",""state"":""Iowa"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.8072,""lon"":-91.4941}}",1,13,1
+marine_pub_brewhouse-pale_ale,0,0,244869824512,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marine_pub_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+montana_brewing-sharptail_pale_ale,0,0,244872249345,"{""name"":""Sharptail Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,38,1
+trade_winds_brewing-sunset_ale,0,0,245102018561,"{""name"":""Sunset Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trade_winds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+port_washington_brewing-amber_ale,0,0,244994211840,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_washington_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,33,1
+great_dane_pub_and_brewing_1-old_scratch_barleywine_2002,0,0,244741701632,"{""name"":""Old Scratch Barleywine 2002"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_dane_pub_and_brewing_1"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+hubcap_brewery_and_kitchen,0,0,244741505026,"{""name"":""Hubcap Brewery and Kitchen"",""city"":""Vail"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.6403,""lon"":-106.374}}",1,18,1
+saint_arnold_brewing-saint_arnold_spring_bock,0,0,244992245761,"{""name"":""Saint Arnold Spring Bock"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An authentic, German-style Bock, celebrating the coming of spring. This strong, deeply flavored lager has been aged to create a smooth, malty taste with a hint of sweetness. A light addition of German hops balances the malt flavor. \r\n\r\nSaint Arnold Spring Bock is best consumed at 40° Fahrenheit."",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,28,1
+oggi_s_pizza_and_brewing_vista-sunset_amber_ale,0,0,244879589377,"{""name"":""Sunset Amber Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,55,1
+sierra_nevada_brewing_co-esb_early_spring_beer,0,0,245002665986,"{""name"":""ESB - Early Spring Beer"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nOur ESB combines the best of English tradition with West Coast style. A blend of malts featuring British-grown Maris Otter is balanced with the earthy spiciness of hand-selected English and US hops. The ale is left unfiltered, which enhances mouthfeel and hop aroma creating a slightly reddish-copper hue"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,52,1
+route_66_brewery-rambling_raspberry_ale,0,0,244984905730,"{""name"":""Rambling Raspberry Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,10,1
+hausbrauerei_zum_schlssel,0,0,244754087936,"{""name"":""Hausbrauerei Zum Schlssel"",""city"":""Dsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)211-/-8289550"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Bolkerstrae 41-47""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.2261,""lon"":6.7745}}",1,49,1
+island_brewing_company-jubilee_ale,0,0,244739145729,"{""name"":""Jubilee Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""island_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,12,1
+iron_springs_pub_brewery-ipa,0,0,244757168128,"{""name"":""IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_springs_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,57,1
+montana_brewing-fat_belly_amber,0,0,244880834562,"{""name"":""Fat Belly Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""montana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+russian_river_brewing-ovl_stout,0,0,244985298946,"{""name"":""OVL Stout"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This nitrogenated dry stout is low in alcohol but big in flavor. Its smooth roasted coffee like aromas and flavor are clean and drinkable.""}",1,11,1
+jacob_leinenkugel_brewing_company-oktoberfest,0,0,244747993088,"{""name"":""Oktoberfest"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jacob_leinenkugel_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+lagunitas_brewing_company-brown_shugga,0,0,244748451842,"{""name"":""Brown Shugga"",""abv"":9.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lagunitas_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+pivovar_nchod-primator_blonde_bock_beer,0,0,244995915776,"{""name"":""Primátor Blonde Bock Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_nchod"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,37,1
+stevens_point_brewery-augsburger_golden,0,0,245101363200,"{""name"":""Augsburger Golden"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+saint_louis_brewery_schlafy_tap_room-baracktoberfest,0,0,244983595008,"{""name"":""Baracktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,7,1
+pabst_brewing_company-lone_star_light,0,0,244863467521,"{""name"":""Lone Star Light"",""abv"":3.85,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Lone Star Light mimics its full-bodied counterpart with an award winning premium light taste. This beer retains the complimentary ratio of barley, cereal grains, and hops of its parent brand.\"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,14,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_imperial_stout,0,0,244881293317,"{""name"":""Nøgne Ø Imperial Stout"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""We think the russian tsar would have liked his stout this way. A dark, rich ale in which a generous sweetness with roasted malt bitterness.  Serving temp.10°C/50°F. Great with vanilla ice cream or dark chocolate."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,59,1
+upstream_brewing_old_market-o_gold_light_beer,0,0,245098610688,"{""name"":""O! Gold Light Beer"",""abv"":3.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest beer has all of the great attributes of a light American lager with the unmatched freshness and taste only a local brew pub like Upstream can offer. If you like great tasting beer, O! Gold is the beer for you."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,2,1
+tsingtao-red_dragon_xtreme,0,0,245118861313,"{""name"":""Red Dragon Xtreme"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tsingtao"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,48,1
+sherlock_s_home-star_of_india_india_pale_ale,0,0,245004566531,"{""name"":""Star of India India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sherlock_s_home"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,56,1
+iron_hill_brewery_wilmingon-pig_iron_porter,0,0,244754677760,"{""name"":""Pig Iron Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""Historically, porter had its heyday in 18th century London, where it was the beer of the working class. It doesn't take much to work up a thirst for this flavorful beer. The distinct roasted and chocolate notes are well balanced by a slight bitterness."",""style"":""Porter"",""category"":""Irish Ale""}",1,50,1
+new_holland_brewing_company-the_poet,0,0,244864319489,"{""name"":""The Poet"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_holland_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Poet has a rich, smooth malt character enveloped in tones of roast and chocolate. A soft mouth-feel brings luxurious flavors and soothing aroma. It pairs wonderfully with earthy flavors such as mushrooms and beef, while remaining the perfect accent to any chocolate."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,17,1
+santa_fe_brewing_company-fiesta_ipa,0,0,244997095425,"{""name"":""Fiesta IPA"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic beer for those beer lovers who love their hops, Fiesta IPA will take the Pepsi Challenge (or IPA challenge, as we say in New Mexico) against any other pretenders to the throne. Was it divine providence that made this beer the king of the IPA world? Was it a tireless pursuit of glory? No, this IPA has a top-secret recipe to thank for its success, and this meticulously formulated combination of several different hops combined with a very specific brewing process give Fiesta IPA a spicy, citric, and floral infusion of hop character, which is masterfully counterbalanced with the full-bodied maltiness characteristic of the Santa Fe Brewing Company’s distinctive beers."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,39,1
+port_washington_brewing-post_washington_octoberfest,0,0,245003190274,"{""name"":""Post Washington Octoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_washington_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,54,1
+saint_louis_brewery_schlafy_tap_room-schlafly_altbier,0,0,244987199489,"{""name"":""Schlafly Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,16,1
+sabmiller_india-haywords_5000,0,0,244986740738,"{""name"":""Haywords 5000"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""Launched in the year 1983, Haywards 5000 is synonymous with strong beer in India. Haywards 5000 is brewed with the choicest of malts and hops lending itself to a unique flavour profile to suit the Indian taste and preference. Haywards 5000 is the hallmark of original and authentic strong beer which other beer brands aspire for. With such credentials, it is not surprising to see men get together over Haywards 5000. It is the language of friendship amongst men who are proud of their masculinity and look forward to a great time with their friends and peers .\r\n\r\nhttp://www.sabmiller.in/brands_haywards_5000.html"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,15,1
+the_cambridge_house-three_steve_stout,0,0,245104115712,"{""name"":""Three Steve Stout"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_cambridge_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Stout is brewed with English malt, hops and oats to produce a smooth coffee-like richness with a pleasant bittersweet finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,13,1
+michigan_brewing-peninsula_porter,0,0,244869824513,"{""name"":""Peninsula Porter"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Full-flavored and robust ale with heavy notes of roasted malt. There are hints of coffee and chocolate flavors, complimented by medium hop bitterness and a hint of smokiness."",""style"":""Porter"",""category"":""Irish Ale""}",1,31,1
+nikenjayamochi_kadoya_honten_co-ise_kadoya_stout,0,0,244872249346,"{""name"":""Ise Kadoya Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nikenjayamochi_kadoya_honten_co"",""updated"":""2010-07-22 20:00:20"",""description"":""A very yeasty beer with an earthy aroma. Rich flavors deepen the stout character."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+traffic_jam_and_snug-coal_porter,0,0,245102018562,"{""name"":""Coal Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""traffic_jam_and_snug"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,9,1
+privatbrauerei_frankenheim,0,0,244994211841,"{""name"":""Privatbrauerei Frankenheim"",""city"":""Dsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)211-/-16902-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wielandstrae 14-16""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.2292,""lon"":6.7925}}",1,33,1
+great_divide_brewing-great_divide_belgica,0,0,244741701633,"{""name"":""Great Divide Belgica"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Roman name for the Low Countries–is a marriage of the best in American and Belgian brewing traditions. Belgian pilsner malt, a generous amount of American and European hops and a unique Belgian yeast strain combine to give Belgica big notes of citrus and spice, creating a lively concoction perfect for spring in the Rockies–or the Ardennes."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,19,1
+humboldt_brewing-honey_and_ginger_ale,0,0,244741505027,"{""name"":""Honey and Ginger Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""humboldt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+saint_louis_brewery_schlafy_tap_room-schlafly_wheat_ale,0,0,244992245762,"{""name"":""Schlafly Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,28,1
+orlio_organic,0,0,244879589378,"{""name"":""Orlio Organic"",""city"":""South Burlington"",""state"":""Vermont"",""code"":""5403"",""country"":""United States"",""phone"":""(802) 864-9820"",""website"":""http://www.orlio.net/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5 Bartlett Bay Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.4284,""lon"":-73.2131}}",1,55,1
+siletz_roadhouse_brewery-oatmeal_cream_stout,0,0,245002665987,"{""name"":""Oatmeal Cream Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""siletz_roadhouse_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,52,1
+russian_river_brewing-russian_river_ipa,0,0,244984971264,"{""name"":""Russian River IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""An abundance of hops and malt are added to our IPA to create and preserve its distinctive flavors. Not only do we use generous portions of hops in the kettle, but we also dry hop this ale for one week after fermentation. The dry hopping process adds to this beer's floral and citrus aroma. This is truly a tasty adult beverage!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,10,1
+hawks_brewing-super_natural_oatmeal_stout,0,0,244754087937,"{""name"":""Super Natural Oatmeal Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hawks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+krogh_s_restaurant_and_brewpub-three_sisters_golden_wheat,0,0,244739145730,"{""name"":""Three Sisters Golden Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+ithaca_beer_company-lebleu,0,0,244757168129,"{""name"":""LeBleu"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ithaca_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with New York State Blueberries and Brettanomyces, Le Bleu is a blend of barrels filled in 2007, 2008, and 2009. It's finished in the bottle with Champagne yeast.  \r\n\r\nEnjoy the dusty rose appearance, mouthwatering aroma of ripe berries, piquant flavor and quick finish.""}",1,57,1
+moosehead_breweries-canadian_lager_beer,0,0,244880900096,"{""name"":""Canadian Lager Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosehead_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+sabmiller_india-indus_pride,0,0,244985364480,"{""name"":""Indus Pride"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sabmiller_india"",""updated"":""2010-07-22 20:00:20"",""description"":""BEER TYPE Indus Pride is a 100% malt beer \r\nPRODUCT PROPOSITION Made of 100% malt lending it a unique rich flavor \r\nALCOHOL CONTENT BY VOLUME 4.8% by volume \r\nTASTE Rich in flavors with a clean head and foam \r\nCOLOUR Sunrise Yellow \r\nSERVING TEMPERATURE 7 degree Celsius \r\nPACKAGING 650 ml glass bottles : 12 bottles per case\r\n330 ml pack : 24 bottles per case \r\n\r\nhttp://www.sabmiller.in/induspride.html""}",1,11,1
+jw_lees_and_co_brewers_ltd-harvest_ale_2001,0,0,244747993089,"{""name"":""Harvest Ale 2001"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jw_lees_and_co_brewers_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,34,1
+lightning_boy_brewery-thunder_pup_pale,0,0,244870938624,"{""name"":""Thunder Pup Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lightning_boy_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+plzesk_prazdroj_pivovar_radegast,0,0,244995981312,"{""name"":""Plzesk Prazdroj Pivovar Radegast"",""city"":""Noovice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""420-558-602-175"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""CZ-739 51 Noovice""]}",1,37,1
+stone_brewing_co-smoked_porter,0,0,245101363201,"{""name"":""Smoked Porter"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Stone Smoked Porter is dark, rich and complicated. A porter is substantially darker than a pale ale, but not as black or opaque as a stout. Our Smoked porter has a captivatingly deep mahogany color, complimented by silky dark tan head. Rich, full bodied and robust. Smooth, with chocolate and coffee-like flavors balanced by the subtle \""smoky\"" character of just the right amount of peat-smoked specialty malt."",""style"":""Porter"",""category"":""Irish Ale""}",1,8,1
+saku_lletehas-porter,0,0,244983595009,"{""name"":""Porter"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saku_lletehas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+pabst_brewing_company-primo,0,0,244863467522,"{""name"":""Primo"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich golden liquid with a unique flavor and aroma that comes from a touch of raw Hawaiian cane sugar. Primo is a premium lager that represents the best of both worlds; the rich taste of a craft-brewed beer with the drinkability of a lighter lager. -http://www.thatsprimo.com/Recipe.aspx"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+north_coast_brewing_company-wintertime_ale,0,0,244881358848,"{""name"":""Wintertime Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,59,1
+warsteiner_brauerei,0,0,245744402432,"{""name"":""Warsteiner Brauerei"",""city"":""Warstein"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)2902-/-880"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Domring 4-10""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.4416,""lon"":8.3519}}",1,2,1
+united_breweries_limited,0,0,245118861314,"{""name"":""United Breweries Limited"",""city"":""Bangalore"",""state"":"""",""code"":"""",""country"":""India"",""phone"":""91-80-22441"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1/1 Vittal Mallya Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":12.9689,""lon"":77.5946}}",1,48,1
+shipwrecked_brew_pub-raspberry,0,0,245004632064,"{""name"":""Raspberry"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipwrecked_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,56,1
+joshua_huddy_s_brew_pub_and_grill,0,0,244754677761,"{""name"":""Joshua Huddy's Brew Pub and Grill"",""city"":""Toms River"",""state"":""New Jersey"",""code"":""8753"",""country"":""United States"",""phone"":""1-732-240-3640"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.9529,""lon"":-74.201}}",1,50,1
+old_city_brewing-pecan_street_lager,0,0,244864319490,"{""name"":""Pecan Street Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+sierra_nevada_brewing_co-bigfoot_1994,0,0,244997095426,"{""name"":""Bigfoot 1994"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-honey_weizen,0,0,245003255808,"{""name"":""Honey Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+sam_choy_s_breakfast_lunch_crab_big_aloha_brewery,0,0,244987199490,"{""name"":""Sam Choy's Breakfast, Lunch, Crab & Big Aloha Brewery"",""city"":""Honolulu"",""state"":""Hawaii"",""code"":""96817"",""country"":""United States"",""phone"":""1-808-545-7979"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""580 North Nimitz Highway""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":21.3069,""lon"":-157.858}}",1,16,1
+sapporo_breweries_chuo-imported_black_stout_draft,0,0,244986806272,"{""name"":""Imported Black Stout Draft"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sapporo_breweries_chuo"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,15,1
+thunderhead_brewery_2-imperial_porter,0,0,245104115713,"{""name"":""Imperial Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,13,1
+millrose_brewing-panther_ale,0,0,244869824514,"{""name"":""Panther Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millrose_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_100,0,0,244872314880,"{""name"":""Nøgne Ø #100"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""Our 100th batch, brewed for the enjoyment of the brewers, but popular demand forced us to release it commercially.  This malty, yet light bodied ale has a massive hop bitterness.  Most enjoyable in a comfortable chair in front of a roaring fire."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,38,1
+tunner_s_guild_brewing_systems-barbary_coast_brand_gold_rush_style_beer,0,0,245102084096,"{""name"":""Barbary Coast Brand Gold Rush Style Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tunner_s_guild_brewing_systems"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+qingdao_brewery,0,0,244994211842,"{""name"":""Qingdao Brewery"",""city"":""Qingdao"",""state"":""Shandong"",""code"":"""",""country"":""China"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hongkong Road, Central""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.0663,""lon"":120.383}}",1,33,1
+great_divide_brewing-yeti_imperial_stout,0,0,244741767168,"{""name"":""Yeti Imperial Stout"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""great_divide_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditionally, Imperial Stouts, the biggest and boldest of all stouts, were brewed with massive amounts of roasted malts and hops, resulting in a velvety smooth but robust beer characterized by high alcohol content and extremely high hop bitterness. Meeting the challenge of this aggressive, challenging beer style, Great Divide’s Yeti Imperial Stout is an onslaught of the senses. An almost viscous, inky-black brew, Yeti opens with a massive, roasty, chocolate, coffee malt flavor that eventually gives way to rich toffee and burnt caramel notes. Packed with an enormous quantity of American hops, Yeti’s hop profile reveals a slightly citrusy, piney, and wonderfully dry hoppy finish."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,19,1
+karlovacka_pivovara,0,0,244741570560,"{""name"":""Karlovacka Pivovara"",""city"":""Karlovac"",""state"":"""",""code"":""0"",""country"":""Croatia"",""phone"":""385-47-451-300"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dubovac 22""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":45.4956,""lon"":15.5331}}",1,18,1
+schofferhofer-schofferhofer_hefeweizen_alkoholfrei,0,0,244992245763,"{""name"":""Schöfferhofer Hefeweizen alkoholfrei"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schofferhofer"",""updated"":""2010-07-22 20:00:20"",""description"":""alcohol-free Hefeweizen with the tipical taste, isotonic,"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,28,1
+otto_s_pub_and_brewery-black_mo_stout,0,0,244879654912,"{""name"":""Black Mo Stout"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A dry Irish-style stout served via nitrogen.  Black Mo is a very smooth and creamy beer with a pleasant roasted malt character."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,55,1
+snipes_mountain_microbrewery_restaurant-extra_special_bitter,0,0,245120172032,"{""name"":""Extra Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""snipes_mountain_microbrewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+s_a_damm,0,0,244984971265,"{""name"":""S.A. Damm"",""city"":""Barcelona"",""state"":"""",""code"":"""",""country"":""Spain"",""phone"":"""",""website"":""http://www.estrelladamm.es/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":41.3879,""lon"":2.1699}}",1,10,1
+heineken_ireland,0,0,244754087938,"{""name"":""Heineken Ireland"",""city"":""Cork"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":""353-21-450-3371"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Lady's Well Brewery""]}",1,49,1
+kuhnhenn_brewing-creme_brulee_java_stout,0,0,244739211264,"{""name"":""Creme Brulee Java Stout"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kuhnhenn_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Black ale beer, made with real coffee. This java stout goes through a unique process, involving caramelizing brown sugar to give it an intense caramel & vanilla aroma."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+jj_bitting_brewing,0,0,244757168130,"{""name"":""JJ Bitting Brewing"",""city"":""Woodbridge"",""state"":""New Jersey"",""code"":""7095"",""country"":""United States"",""phone"":""1-732-634-2929"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""33 Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.5549,""lon"":-74.2771}}",1,57,1
+murphy_s_wagon_wheel-wheat,0,0,244880900097,"{""name"":""Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""murphy_s_wagon_wheel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+saint_louis_brewery_schlafy_tap_room-schlafly_ipa,0,0,244985430016,"{""name"":""Schlafly IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,11,1
+keihan_uji_kotsu,0,0,244747993090,"{""name"":""Keihan Uji Kotsu"",""city"":""Uji"",""state"":""Kinki"",""code"":"""",""country"":""Japan"",""phone"":""81-0774-22-2359"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""(No longer brewing)"",""address"":[]}",1,34,1
+mad_anthony_brewing-lager,0,0,244871004160,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,35,1
+privatbrauerei_erdinger_weissbru-weissbier_mit_feiner_hefe,0,0,244996046848,"{""name"":""Weißbier Mit Feiner Hefe"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_erdinger_weissbru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,37,1
+stone_brewing_co-vertical_epic_05_05_05,0,0,245101428736,"{""name"":""Vertical Epic 05.05.05"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+samuel_smith_old_brewery_tadcaster-winter_welcome_2007_2008,0,0,244983595010,"{""name"":""Winter Welcome 2007-2008"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+pacific_rim_brewing-admiral_esb,0,0,244986085376,"{""name"":""Admiral ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_rim_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+o_grady_s_brewery_and_pub_1-magnificent_mild,0,0,244881358849,"{""name"":""Magnificent Mild"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_grady_s_brewery_and_pub_1"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,59,1
+water_street_lake_country-honey_lager_light,0,0,245744467968,"{""name"":""Honey Lager Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,2,1
+valley_brewing_company-black_cat_stout,0,0,245118926848,"{""name"":""Black Cat Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Black Cat Stout is brewed using a blend of Chocolate, Carafa, Crystal and Munich malts. A small amount of wheat and oatmeal are added to give the beer body and mouth feel. Small amounts of roasted malts are added to give the beer a dry \r\ncoffee finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,48,1
+shmaltz_brewing_company-bittersweet_lenny_r_i_p_a,0,0,245004632065,"{""name"":""Bittersweet Lenny R.I.P.A."",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shmaltz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Ladies and Gentlemen, Shmaltz Brewing Co. is proud to introduce Bittersweet Lenny's R.I.P.A. Brewed with an obscene amount of malts and hops. Shocking flavors - far beyond contemporary community standards. We cooked up the straight dope for the growing minions of our nation's Radical Beer junkies. Judges may not be able to define \""Radical Beer,\"" but you'll damn well know it when you taste it. Bruce died, officially declared a pauper by the State of California, personally broken and financially bankrupt simply for challenging America's moral hypocrisies with words. The memorial playbill read: \""Yes, we killed him. Because he picked on the wrong god.\"" -Directed by, the Courts, the Cops, the Church... and his own self-destructive super ego. Like Noah lying naked and loaded in his tent after the apocalyptic deluge: a witness, a patron saint, a father of what was to come. Sick, Dirty, Prophetic Lenny: a scapegoat, a martyr, a supreme inspiration."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,56,1
+jt_whitney_s_brewpub_and_eatery-pinckney_street_pale_ale,0,0,244754743296,"{""name"":""Pinckney Street Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""jt_whitney_s_brewpub_and_eatery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+old_hat_brewery-kolsch,0,0,244864385024,"{""name"":""Kölsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+simmerberg_brusttt_und_taferne-braustatt_gold,0,0,244997160960,"{""name"":""Bräustatt Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""simmerberg_brusttt_und_taferne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-stout,0,0,245003255809,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+san_marcos_brewery_grill-old_english_ale,0,0,244987265024,"{""name"":""Old English Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,16,1
+schlobrauerei_reckendorf,0,0,244986806273,"{""name"":""Schlobrauerei Reckendorf"",""city"":""Reckendorf"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)9544-/-9421-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Mhlweg 18""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.0224,""lon"":10.83}}",1,15,1
+titletown_brewing-old_fort_howard_pale_ale,0,0,245104181248,"{""name"":""Old Fort Howard Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+mudshark_brewing-scorpion_amber_ale,0,0,244869890048,"{""name"":""Scorpion Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mudshark_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Full Body Ale Balanced With Assertive Oregon Hops, Deep Amber In Color"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,31,1
+north_country_brewery-mccafferty_s_ale,0,0,244872314881,"{""name"":""McCafferty's Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a true Celtic Red ale that’s as faithful as its namesake. With a smooth balance between malt and hops, it’s sure to become a pubhouse favorite"",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,38,1
+twin_rivers_brewing-bock,0,0,245102084097,"{""name"":""Bock"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,9,1
+raccoon_lodge_and_brewpub_cascade_brewing-cascade_kreik_ale,0,0,244994277376,"{""name"":""Cascade Kreik Ale"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian Flanders Style Red Ale refermented with a sweet blend of fresh whole Northwest cherries. This beer spent more than six months of lactic fermentation and aging in small French oak wine barrels before being hand-bottled.""}",1,33,1
+green_mountain_beverage-woodchuck_granny_smith_varietal_draft_cider,0,0,244741767169,"{""name"":""Woodchuck Granny Smith Varietal Draft Cider"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""green_mountain_beverage"",""updated"":""2010-07-22 20:00:20"",""description"":""It is made using 100% Granny Smith apples. This cider has a mouth-watering flavor that is tangy and tart, with just a touch of sweetness."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,19,1
+kross_brewing,0,0,244741570561,"{""name"":""Kross Brewing"",""city"":""Morrisville"",""state"":""Vermont"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.5617,""lon"":-72.5984}}",1,18,1
+schooner_s_grille_brewery-ipa,0,0,244992311296,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_s_grille_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,28,1
+otto_s_pub_and_brewery-pilsener_lager,0,0,244879720448,"{""name"":""Pilsener Lager"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A well hopped medium bodied lager brewed in the Czech style of pilseners. \r\nThis beer displays the distinct flavor and aroma of saaz hops."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,55,1
+tabernash_brewing-kristall_weiss,0,0,245120172033,"{""name"":""Kristall Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tabernash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,52,1
+salado_creek_brewing_company,0,0,244984971266,"{""name"":""Salado Creek Brewing Company"",""city"":""San Antonio"",""state"":""Texas"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":29.4241,""lon"":-98.4936}}",1,10,1
+hops_haven_brew_haus-port_washington_amber_ale,0,0,244754087939,"{""name"":""Port Washington Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hops_haven_brew_haus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,49,1
+lakefront_brewery-snake_chaser,0,0,244739211265,"{""name"":""Snake Chaser"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+kenya_breweries,0,0,244757168131,"{""name"":""Kenya Breweries"",""city"":""Nairobi"",""state"":"""",""code"":"""",""country"":""Kenya"",""phone"":""254-864000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 30161""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":-1.2833,""lon"":36.8167}}",1,57,1
+new_glarus_brewing_company-edel_pils,0,0,244880965632,"{""name"":""Edel-Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our little village brewery in New Glarus, Wisconsin is proud to offer to you Edel-Pils. This \""Noble-Pilsner\"" is the creation of our brewmaster. He brought special yeast from Bavaria, combined it with Wisconsin barley and the finest Bavarian and American hops. Then employing traditional brewing methods, this Pilsner is finished with a long cold rest in our cellars. \r\n\r\nExpect this bier to be creamy and full-bodied with a smooth finish. It will complement any fine meal or friendly gathering. We took our time in brewing so that you might take your time enjoying."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+skol_breweries-royal_challenge_indian_premium_lager,0,0,244985430017,"{""name"":""Royal Challenge Indian Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skol_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,11,1
+kona_brewing-longboard_lager,0,0,244747993091,"{""name"":""Longboard Lager"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+main_street_station_casino_brewery_and_hotel-black_chip_porter,0,0,244871004161,"{""name"":""Black Chip Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""main_street_station_casino_brewery_and_hotel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,35,1
+pumphouse_pizza_and_brewing,0,0,244996046849,"{""name"":""Pumphouse Pizza and Brewing"",""city"":""Lake Delton"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.6011,""lon"":-89.7937}}",1,37,1
+stoudt_s_brewery-old_abominable_barley_wine,0,0,245101428737,"{""name"":""Old Abominable Barley Wine"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+sand_creek_brewing_company-pioneer_black_river_red,0,0,244983660544,"{""name"":""Pioneer Black River Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sand_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+piece-4_reverends_imperial_stout,0,0,244986150912,"{""name"":""4 Reverends Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""piece"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,14,1
+old_hat_brewery-schwarzbier,0,0,244881358850,"{""name"":""Schwarzbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,59,1
+valley_brewing_company-cobra_hood_ipa,0,0,245118926849,"{""name"":""Cobra-Hood IPA"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our India Pale Ale is brewed in a California IPA style. The beer is generously hopped for bitterness with Magnum hops and finished with fresh Amarillo, Ahtanum and Cascade hops."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,48,1
+sixpoint_craft_ales-sweet_action,0,0,245004632066,"{""name"":""Sweet Action"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sixpoint_craft_ales"",""updated"":""2010-12-20 15:50:16"",""description"":""Our most basic interpretation of what makes beer great -- sweetness from the barley malt and active spice from the hops. It is hazy golden in color, with a sweet honey aroma, and a dry, crisp flavor"",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,56,1
+kalamazoo_brewing,0,0,244754743297,"{""name"":""Kalamazoo Brewing"",""city"":""Kalamazoo"",""state"":""Michigan"",""code"":""49007"",""country"":""United States"",""phone"":""1-269-382-2338"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""355 East Kalamazoo Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.2949,""lon"":-85.5788}}",1,50,1
+onopa_brewing-american_pale_ale,0,0,244864385025,"{""name"":""American Pale Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""onopa_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+snowshoe_brewing_sonora-esb_extra_special_blizzard,0,0,245114798080,"{""name"":""ESB (Extra Special Blizzard)"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""snowshoe_brewing_sonora"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,39,1
+rahr_sons_brewing_company-pecker_wrecker,0,0,245003255810,"{""name"":""Pecker Wrecker"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+san_miguel_corporation-san_miguel_1516,0,0,244987265025,"{""name"":""San Miguel 1516"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_miguel_corporation"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+scuttlebutt_brewing-gale_force_ipa,0,0,244986806274,"{""name"":""Gale Force IPA"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+trade_winds_brewing-kuaipa,0,0,245104181249,"{""name"":""Kuaipa"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trade_winds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,13,1
+mussel_inn,0,0,244869890049,"{""name"":""Mussel Inn"",""city"":""Takaka"",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":""64-(03)-525-9241"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Onekaka""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":-40.7658,""lon"":172.705}}",1,31,1
+northwoods_brewpub_grill-poplar_porter,0,0,244872314882,"{""name"":""Poplar Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,38,1
+twin_rivers_brewing-india_pale_ale,0,0,245102084098,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+ramapo_valley_brewery-honey_blonde_lager,0,0,244994277377,"{""name"":""Honey Blonde Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ramapo_valley_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+heineken_hungaria-soproni,0,0,244741767170,"{""name"":""Soproni"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heineken_hungaria"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,19,1
+labatt_ontario_breweries-labatt_extra_dry,0,0,244741570562,"{""name"":""Labatt Extra Dry"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""Labatt Extra Dry was the first national launch of a dry beer in Canada. Labatt Extra Dry is mashed longer than regular beers to leave less carbohydrate in the finished product, giving a lighter flavour with little aftertaste."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+sea_dog_brewing_company-sea_dog_raspberry_wheat_ale,0,0,244992311297,"{""name"":""Sea Dog Raspberry Wheat Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sea_dog_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Sea Dog Raspberry Wheat Ale is a dry, crisp refreshing ale with the added essence of raspberries."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,28,1
+pabst_brewing_company-lone_star,0,0,244879720449,"{""name"":""Lone Star"",""abv"":4.65,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The National Beer of Texas\r\n\""Lone Star beer uses the finest hops from the Pacific Northwest with hearty grains from the Central and Northern Plains. The GABF recognized Lone Star as a high quality American Cream Lager by awarding it with a silver medal. Malted barley and corn extract combine to provide Lone Star with nature's finest ingredients for brewing. Lone Star's ingredients give this beer its full natural flavor. The choicest hops lend complexity and aroma to this beer, and its proprietary mashing regimen creates the perfect balance of alcohol, body, and character.\""\r\nRegional to Texas. It is brewed under license by Miller Brewing Co., Fort Worth, TX."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+the_round_barn_winery_brewery,0,0,245120237568,"{""name"":""The Round Barn Winery & Brewery"",""city"":""Baroda"",""state"":""Michigan"",""code"":""49101"",""country"":""United States"",""phone"":""(800)-716-9463"",""website"":""http://www.roundbarnwinery.com/brewery.php"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""With more than 30 years of fermentation experience and an award-winning reputation in the industry, our line of hand-crafted brews embody the satisfying bold taste you've come to expect from The Round Barn."",""address"":[""10983 Hills Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.9211,""lon"":-86.4583}}",1,52,1
+santa_fe_brewing_company-santa_fe_nut_brown,0,0,244984971267,"{""name"":""Santa Fe Nut Brown"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Brown Ale style originated in the pubs of England, where beer drinkers desired a beer that was both flavorful and complex, but at the same time mild enough to be a session beer. The Santa Fe Brewing Company's interpretation of this style uses a combination of high mash temperature, hard water, and low-alpha acid hops to produce a product that is both true to the style and distinctly Santa Fe. Brewing jargon aside, Santa Fe Nut Brown Ale is an easy-drinking beer, mild, smooth, and always a favorite. Try a keg at your next party!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,10,1
+hopworks_urban_brewery-deluxe_organic_ale,0,0,244754153472,"{""name"":""Deluxe Organic Ale"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hopworks_urban_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Strong like bull but sweet like your momma. This unique beer is a trifecta of bold flavors. Hops, malt and alcohol bully the taste buds on the organic playground while the monitor blows the whistle!\"""",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,49,1
+lion_brewery_inc-lionshead_light,0,0,244862091264,"{""name"":""Lionshead Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lion_brewery_inc"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,12,1
+klosterbrauerei_neuzelle,0,0,244757168132,"{""name"":""Klosterbrauerei Neuzelle"",""city"":""Neuzelle"",""state"":""Brandenburg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)33652-/-810-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Brauhausplatz 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":52.091,""lon"":14.6509}}",1,57,1
+new_glarus_brewing_company-uff_da_bock,0,0,244880965633,"{""name"":""Uff-Da Bock"",""abv"":6.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,58,1
+sly_fox_brewhouse_and_eatery_royersford-anniversary_ipa_glacier,0,0,245103001600,"{""name"":""Anniversary IPA Glacier"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,11,1
+lake_superior_brewing-old_man_winter_warmer_2000,0,0,244748058624,"{""name"":""Old Man Winter Warmer 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lake_superior_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+marzoni_s_brick_oven_brewing_co-avalanche_ipa,0,0,244871004162,"{""name"":""Avalanche IPA"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marzoni_s_brick_oven_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Aggressively Bitter, Full-Bodied Ale with a Wonderful Floral Hop Aroma"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,35,1
+redhook_ale_brewery-black_hook_porter,0,0,244996112384,"{""name"":""Black Hook Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,37,1
+stout_brothers_public_house-the_yank_cream_ale,0,0,245101494272,"{""name"":""The Yank Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stout_brothers_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,8,1
+short_s_brewing_company,0,0,244983660545,"{""name"":""Short's Brewing Company"",""city"":""Bellaire"",""state"":""Michigan"",""code"":""49615"",""country"":""United States"",""phone"":""231-533-6622"",""website"":""http://www.shortsbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""At SBC we want to share our passion for beer, good beer, and help you to enjoy the fruits of our labor. "",""address"":[""121 N. Bridge Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.9763,""lon"":-85.2104}}",1,7,1
+pizzeria_uno_chicago_grill_brewery-station_house_red_ale,0,0,244986150913,"{""name"":""Station House Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizzeria_uno_chicago_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,14,1
+olde_main_brewing-long_face_amber,0,0,244881424384,"{""name"":""Long Face Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_main_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,59,1
+weyerbacher_brewing_company-black_hole,0,0,245750628352,"{""name"":""Black Hole"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Coming in at an ABV of 7.0%, Our Black Hole satisfies the transition from dark ale to stout. We think of this as slightly \""Porter-ish\"" with a strong malt body and a very light hop finish. This is brewed year round and is available in Pennsylvania in the regular Variety Pack.  This will help the ale drinker among us maintain their own balance!"",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+southern_star_brewing_company,0,0,245121286144,"{""name"":""Southern Star Brewing Company"",""city"":""Conroe"",""state"":""Texas"",""code"":""77303"",""country"":""United States"",""phone"":""(936).441-2739"",""website"":""http://www.southernstarbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1207 N. FM 3083 E.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":30.3489,""lon"":-95.4427}}",1,56,1
+kralovsky_pivovar_krusovice,0,0,244754808832,"{""name"":""Královský pivovar Krušovice"",""city"":""Krušovice"",""state"":"""",""code"":"""",""country"":""Czech Republic"",""phone"":""313 569 229"",""website"":""http://www.krusovice.cz/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""270 53""]}",1,50,1
+park_city_brewing,0,0,244987461632,"{""name"":""Park City Brewing"",""city"":""Heber City"",""state"":""Utah"",""code"":""84032"",""country"":""United States"",""phone"":""1-435-654-5467"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""375 West 910 South""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.496,""lon"":-111.42}}",1,17,1
+southern_tier_brewing_co-uber_sun_imperial_summer_wheat_ale,0,0,245114863616,"{""name"":""Über Sun Imperial Summer Wheat Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""It is through the movement of the universe that life presents itself in transformation. It is in this spirit that we make ÜberSun, a tribute to the dynamic energy of summer. The alignment of wheat and barley through this hop-infused brew embodies the solar system itself... This may be a difficult task, but one our brewers revel in! They brew a galaxy of taste into every batch. ÜberSun is the ultimate experience that will challenge you with each sip. ÜberSun Imperial Summer Wheat Beer takes off where our Hop Sun finishes. Like it’s little brother, ÜberSun is clean and full of flavor, but don’t pull an Icarus– this is one big beer! Pour a glass or drink straight from the bottle, it’s meant to be consumed wisely with friends between summer solstice and autumnal equniox."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,39,1
+rahr_sons_brewing_company,0,0,245003255811,"{""name"":""Rahr & Sons Brewing Company"",""city"":""Fortworth"",""state"":""Texas"",""code"":""76104"",""country"":""United States"",""phone"":""(817) 810-9266"",""website"":""http://www.rahrbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""701 Galveston Ave""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.7366,""lon"":-97.3274}}",1,54,1
+sanford_s_grub_and_pub,0,0,244987330560,"{""name"":""Sanford's Grub and Pub"",""city"":""Sheridan"",""state"":""Wyoming"",""code"":""82801"",""country"":""United States"",""phone"":""1-307-674-1722"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5 East Alger Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.8007,""lon"":-106.956}}",1,16,1
+sea_dog_brewing_company-sea_dog_apricot_wheat,0,0,244986871808,"{""name"":""Sea Dog Apricot Wheat"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sea_dog_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Sea Dog Apricot Wheat Beer is a crisp and quenching wheat ale with a subtle essence of fresh apricots."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,15,1
+trinity_brewing_company-sunna_wit,0,0,245104181250,"{""name"":""Sunna Wit"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trinity_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,13,1
+nicolet_brewing-prostrator_doppelbock,0,0,244869890050,"{""name"":""Prostrator Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nicolet_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,31,1
+o_fallon_brewery-griesendiech_pilsner,0,0,244872380416,"{""name"":""Griesendiech Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_fallon_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+twin_rivers_brewing-pilsner,0,0,245102149632,"{""name"":""Pilsner"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,9,1
+rogue_ales-mocha_porter_new_porter,0,0,244994342912,"{""name"":""Mocha Porter / New Porter"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Dedicated to the chocolate lover in each of us. Mocha Porter was once known as New Porter, in honor of the town of Newport, Oregon and home of Rogue Ales. The January/February 1995 issue of Mens Health magazine features a bottle of Rogue New Porter (todays Mocha Porter) in the Fifth Annual Collection of Good Advise, Health News, Dire Warnings, Notable Folks and Unsolicited Opinion. New Porter is described as the Best New Beer for 1994! The caption reads: \""Oh, Hoppy Day: For a beer- drinking experience order up a bottle of this microbrew from Oregon.\""\r\n\r\nRuddy brown in color, a bittersweet balance of malt and hops with a light cream finish. Mocha Porter is made from Northwest Harrington and Klages; 135-165, 95-115, and 70-80 Crystal; Beeston Chocolate, Black, Munich and Carastan malts. Perle and Centennial hops. Mocha Porter is available in a 12-ounce 6-pack, the classic 22-ounce bottle, and on draft."",""style"":""Porter"",""category"":""Irish Ale""}",1,33,1
+heller_bru_trum-aecht_schlenkerla_rauchbier_weizen,0,0,244741767171,"{""name"":""Aecht Schlenkerla Rauchbier Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""heller_bru_trum"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+lakefront_brewery-oktoberfest,0,0,244741636096,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lakefront_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,18,1
+skagit_river_brewing-free_bike_amber,0,0,244992311298,"{""name"":""Free Bike Amber"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+philadelphia_brewing_co-walt_wit,0,0,245003583488,"{""name"":""Walt Wit"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""philadelphia_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The American poet WaltWhitman once portrayed a sunset over Philadelphia as, \""...a broad tumble of clouds, with much golden haze and profusion of beaming shaft and dazzle.\"" Pour yourself a bottle of Walt Wit Belgian White-Style Ale and see what he was talking about. A pinch of spice and a whisper of citrus lend complexity to this fragrant, satisfying ale."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,55,1
+thunderhead_brewery-saison,0,0,245120237569,"{""name"":""Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+ska_brewing_company-steel_toe_stout,0,0,244985036800,"{""name"":""Steel Toe Stout"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ska_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This traditional English Cream Stout is brewed with actual milk sugar to create a creamy and sweet brew. Jet black in color, the latte frothy head will make you mooo for more."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,10,1
+independence_brewing_co,0,0,244754153473,"{""name"":""Independence Brewing Co"",""city"":""Austin"",""state"":""Texas"",""code"":""78744"",""country"":""United States"",""phone"":"""",""website"":""http://www.independencebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3913 Todd Lane #607""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":30.2131,""lon"":-97.7358}}",1,49,1
+live_oak_brewing-live_oak_pale_ale,0,0,244862156800,"{""name"":""Live Oak Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""live_oak_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A delicious example of the \""neo-classical\"" American beer style. It has a beautiful copper color and is topped with a thick rich head. With a hint of ale fruitiness in the nose, Pale Ale starts out malty, finishes dry and has plenty of Cascade hops in between. It is sure to satisfy the most discerning ale aficionados."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,12,1
+kona_brewing-fire_rock_pale_ale,0,0,244757233664,"{""name"":""Fire Rock Pale Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,57,1
+new_river_brewing,0,0,244880965634,"{""name"":""New River Brewing"",""city"":""Atlanta"",""state"":""Georgia"",""code"":""30341"",""country"":""United States"",""phone"":""1-770-841-2953"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2015 Afond Court""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":33.9089,""lon"":-84.3056}}",1,58,1
+southend_brewery_and_smokehouse_charleston,0,0,245103067136,"{""name"":""Southend Brewery and Smokehouse - Charleston"",""city"":""Charleston"",""state"":""South Carolina"",""code"":""29401"",""country"":""United States"",""phone"":""1-843-853-4677"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""161 East Bay Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.7785,""lon"":-79.9273}}",1,11,1
+lancaster_brewing_co-lancaster_strawberry_wheat,0,0,244748058625,"{""name"":""Lancaster Strawberry Wheat"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Just in time for summer, this American wheat lager style beer with the subtle suggestion of real, fresh strawberries, is the perfect pint of true refreshment.  Light and crisp, our Strawberry Wheat is a \""must try\"" for fruit and beer lovers alike."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,34,1
+marzoni_s_brick_oven_brewing_co-marzoni_s_amber_lager,0,0,244871069696,"{""name"":""Marzoni's Amber Lager"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marzoni_s_brick_oven_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Slightly Malty Amber Lager"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,35,1
+revolution_brewing_llc-cross_of_gold,0,0,244996112385,"{""name"":""Cross of Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""revolution_brewing_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""An american blonde ale with bursts of fruity aroma and a dry finish."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,37,1
+the_livery-the_livery_dunkel_weizen,0,0,245101494273,"{""name"":""The Livery Dunkel Weizen"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark version of our Hefe Weizen retains the banana and clove flavors from the yeast and also has a richer malt flavor. Available November through April"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,8,1
+sioux_falls_brewing-buffalo_stout,0,0,244983660546,"{""name"":""Buffalo Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sioux_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,7,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-wheaten_ale,0,0,244986216448,"{""name"":""Wheaten Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+olde_main_brewing-stout_to_be_named_later,0,0,244881424385,"{""name"":""Stout \""To Be Named Later\"""",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_main_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+widmer_brothers_brewing-broken_halo_ipa,0,0,245750693888,"{""name"":""Broken Halo IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""widmer_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""Broken Halo IPA is a beer produced in the spirit of traditional IPA products shipped from the UK to India in the late 1800s. The almost excessive amounts of Cascade and Columbus hops used in Broken Halo give it notable citrus and grapefruit aromas and flavors. The beer bitterness measures high but tastes smooth due to the full-bodied, Caramel malt sweetness. The finish is juicy, clean, and short lived. A devilishly bold, heavenly smooth India Pale Ale.\""\r\n-Widmer Brothers Brewing Company"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,48,1
+spoetzl_brewery-shiner_summer_stock_kolsch_beer,0,0,245121286145,"{""name"":""Shiner Summer Stock Kölsch Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spoetzl_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+la_jolla_brewing-red_roost_ale,0,0,244754808833,"{""name"":""Red Roost Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+pizza_port_brewing_solana_beach,0,0,244987527168,"{""name"":""Pizza Port Brewing - Solana Beach"",""city"":""Solana Beach"",""state"":""California"",""code"":""92075"",""country"":""United States"",""phone"":""1-858-481-7332"",""website"":""http://www.pizzaport.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Pizza Port was established in March of 1987 when we started making pizzas in our present location in Solana Beach! We started brewing beer as a hobby and as we began brewing more than we could leisurely drink, we really wanted to share some of the incredible brews that we created for fun with our customers too. We installed a 7 barrel brewery and served our first handcrafted beer brewed on the premises in October of 1992. In July of 1997, we celebrated our 10th anniversary by opening another location in Carlsbad. We expanded our brewing capacity into the building next door creating the opportunity to brew, bottle, distribute, and drink even more. Our distribution center is called PORT BREWING!  We found the perfect location in San Clemente and opened in July of 2003 enabling us to brew several additional styles! Let's party! When people started asking where they could get our beer besides Pizza Port enough, we acquired the old Stone Brewing facility in San Marcos at 155 Mata Way #104 to expand our distribution as PORT BREWING! We officially opened on Cinco de Mayo 2006. Now we will be able to make up to 10,000 barrels to get out to your other favorite places to enjoy coldies! More impressive is the 100 plus barrel room for all of our barrel aged specialties. Come check out our tasting bar where you can get bottles, jugs & merchandise to go while you sample what's brewing!"",""address"":[""135 North Highway 101""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.9908,""lon"":-117.272}}",1,17,1
+sports_city_cafe_brewery-brown_ale,0,0,245114863617,"{""name"":""Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sports_city_cafe_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+river_west_brewing-india_pale_ale,0,0,245003321344,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,54,1
+sherlock_s_home-palace_porter,0,0,244987330561,"{""name"":""Palace Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sherlock_s_home"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,16,1
+shmaltz_enterprises-coney_island_lager,0,0,244986871809,"{""name"":""Coney Island Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shmaltz_enterprises"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+troegs_brewing-esb,0,0,245104181251,"{""name"":""ESB"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Tröegs E.S.B. \""extra special bitter\"" is dry hopped in the old world traditions. It has a full bodied caramel malt flavor an spicy hop aroma.   A generous amount of Golding hops are added before fermentation to impart a pleasant \""bouquet nose\"" and balanced with pronounced caramel malts to create a complex, malty, aromatic amber ale."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,13,1
+orlando_brewing-orange_blossom_pilsner,0,0,244869955584,"{""name"":""Orange Blossom Pilsner ²"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orlando_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""When you make a pot of coffee, but only use half the water, you get some pretty rich coffee. That's the approach we took with our latest offering. OBP Squared, with half the water, has 11% alcohol by volume-twice that of original OBP.\r\n\r\nThe result is a bold, distinct taste of its own. Made with twice as much real orange blossom honey, all-natural ingredients and no refined sugar, it really is the new king bee of beers."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,31,1
+o_hara_s_brewpub_and_restaurant-golden_honey_wheat,0,0,244872380417,"{""name"":""Golden Honey Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_hara_s_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+twin_rivers_brewing-weissbier,0,0,245102149633,"{""name"":""Weissbier"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,9,1
+sam_choy_s_breakfast_lunch_crab_big_aloha_brewery-s_team,0,0,244994342913,"{""name"":""S-Team"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sam_choy_s_breakfast_lunch_crab_big_aloha_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+high_falls_brewing-dundee_kolsch_style_ale,0,0,244741832704,"{""name"":""Dundee Kölsch-Style Ale"",""abv"":5.68,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""high_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+maclay_and_co-scotch_ale,0,0,244864450560,"{""name"":""Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maclay_and_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+smuttynose_brewing_co,0,0,245110145024,"{""name"":""Smuttynose Brewing Co."",""city"":""Portsmouth"",""state"":""New Hampshire"",""code"":""3801"",""country"":""United States"",""phone"":""603-436-4026"",""website"":""http://www.smuttynose.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Smuttynose was founded in 1994 by the folks who started the Northampton and Portsmouth Breweries. Our beers - Shoals Pale Ale, Old Brown Dog, Portsmouth Lager, IPA, Robust Porter, The Big Beer Series & our seasonal specialties - are distributed throughout New England and the mid-Atlantic states."",""address"":[""225 Heritage Ave""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.0325,""lon"":-70.7948}}",1,28,1
+platte_valley_brewing-stout,0,0,245003583489,"{""name"":""Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""platte_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,55,1
+titletown_brewing-millennium_ale,0,0,245120303104,"{""name"":""Millennium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+slab_city_brewing-old_47_ale,0,0,244985036801,"{""name"":""Old 47 Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+iron_hill_brewery_wilmingon-lodestone_lager,0,0,244754153474,"{""name"":""Lodestone Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""iron_hill_brewery_wilmingon"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+manayunk_brewery_and_restaurant-nokdechiloff,0,0,244862222336,"{""name"":""Nokdechiloff"",""abv"":12.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""This winter warmer will knock the chill away until summer. It used as much malt as our brew house can handle and armloads of fresh hops and lovingly laid in our fermentor for four months. Massively malty and balanced with burly bitterness it is truly the king of beers, approaching wine in strength. A definitive one to have when you’re only having one. Adoringly served in brandy snifters to preserve precious properties."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,12,1
+la_jolla_brew_house,0,0,244757233665,"{""name"":""La Jolla Brew House"",""city"":""La Jolla"",""state"":""California"",""code"":""92037"",""country"":""United States"",""phone"":""1-858-456-6279"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7536 Fay Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.8409,""lon"":-117.274}}",1,57,1
+niagara_falls_brewing-eisbock,0,0,244880965635,"{""name"":""Eisbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,58,1
+southern_tier_brewing_co-hop_sun,0,0,245103067137,"{""name"":""Hop Sun"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Pour Hop Sun Summer Wheat Beer into a pint glass, give it a long whiff and you’ll realize that this isn’t your average wheatbeer. Filtered to a golden clarity and dry-hopped to perfection, Hop Sun is a fantastic session ale in which flavors of wheat, barley and hops commingle to a refreshing and zesty conclusion. Hints of lemon and sweet malts waft to the fore as a touch of bitterness contributes to Hop Sun’s bright finish. Enjoy Hop Sun all summer long as a perfect balance to your outdoor recreation. Summer never tasted so good."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,11,1
+lazy_magnolia_brewing_company-southern_pecan,0,0,244748058626,"{""name"":""Southern Pecan"",""abv"":4.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lazy_magnolia_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Southern Pecan Nut Brown Ale is the first beer in the world, to our knowledge, made with whole roasted pecans. The pecans are used just like grain and provide a nutty characteristic and a delightful depth to the flavor profile. This beer is very lightly hopped to allow the malty, caramel, and nutty flavors shine through. The color is dark mahogany. Southern Pecan won a Bronze Medal in the 2006 World Beer Cup in the Specialty Beer category.""}",1,34,1
+mehana_brewing,0,0,244871069697,"{""name"":""Mehana Brewing"",""city"":""Hilo"",""state"":""Hawaii"",""code"":""96720"",""country"":""United States"",""phone"":""1-808-934-8211"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""275 East Kawili Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":19.706,""lon"":-155.069}}",1,35,1
+river_horse_brewing_company-summer_blonde,0,0,244996112386,"{""name"":""Summer Blonde"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_horse_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Great summer memories are born out of uncomplicated times. We've made that the basis for our summer blonde recipe and kept this ale pure and simple. Relax and enjoy this all natural, light, golden beauty; a seasonal offering from the River Horse Brewing Company."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,37,1
+thirsty_dog_brewing-old_leghumper_porter,0,0,245101494274,"{""name"":""Old Leghumper Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A robust porter, dark brown in color and full bodied with a malty sweet taste."",""style"":""Porter"",""category"":""Irish Ale""}",1,8,1
+skagit_river_brewing-steelie_brown_ale,0,0,244983660547,"{""name"":""Steelie Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,7,1
+pyramid_alehouse_brewery_and_restaurant_seattle-thunder_head_ipa,0,0,244986216449,"{""name"":""Thunder Head IPA"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+oregon_trail_brewery,0,0,244881489920,"{""name"":""Oregon Trail Brewery"",""city"":""Corvallis"",""state"":""Oregon"",""code"":""97333"",""country"":""United States"",""phone"":""1-503-758-3257"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""341 SW Second Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.5613,""lon"":-123.261}}",1,59,1
+william_kuether_brewing-princess_of_darkness_porter,0,0,245750693889,"{""name"":""Princess of Darkness Porter"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""william_kuether_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+strangford_lough_brewing_company_ltd-st_patrick_s_best,0,0,245121286146,"{""name"":""St. Patrick's Best"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""strangford_lough_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Light and refreshing on the palate, our session best bitter has a classic Irish malt & traditional hop aroma.  Light amber in colour, this smooth beer has hints of caramel with a woody bitterness."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,56,1
+long_trail_brewing_co-blackbeary_wheat,0,0,244877230080,"{""name"":""Blackbeary Wheat"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""long_trail_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Light & refreshing with a hint of blackberry at the finish makes this beer a real thirst quencher. For the health conscious, Blackbeary Wheat has less than 6 grams of carbs and contains 0 fat."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,50,1
+porterhouse_restaurant_and_brewpub-hop_hazard,0,0,244987592704,"{""name"":""Hop Hazard"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""porterhouse_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+steinfels_back_brau-altbier,0,0,245114863618,"{""name"":""Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steinfels_back_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,39,1
+rock_art_brewery-whitetail_golden_ale,0,0,245003321345,"{""name"":""Whitetail Golden Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_art_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our golden American ale has a crisp body and slightly dry, hoppy finish. This is a real treat for the beer lover. Pale, wheat and torrified wheat malts are used with Northern Brewer and Mt. Hood hops."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,54,1
+shipwrecked_brew_pub,0,0,244987396096,"{""name"":""Shipwrecked Brew Pub"",""city"":""Egg Harbor"",""state"":""Wisconsin"",""code"":""54209"",""country"":""United States"",""phone"":""1-888-868-2767"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7791 Egg Harbor Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":45.0495,""lon"":-87.2802}}",1,16,1
+sierra_nevada_brewing_co-bigfoot_2006,0,0,244986937344,"{""name"":""Bigfoot 2006"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+troegs_brewing-sunshine_pils,0,0,245104181252,"{""name"":""Sunshine Pils"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Hop fans rejoice! Sunshine Pils combines the crisp taste of European style pilsners with a kicked-up hop character to create a balanced, refreshing seasonal beer. Golden in color with a fluffy white head, Sunshine Pils is the perfect beer for Summer."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,13,1
+penn_brewery-penn_weizen,0,0,244993097728,"{""name"":""Penn Weizen"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""penn_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Authentic wheat beer, brewed in the Southern German tradition, won the Silver Medal in 1997 and the Gold Medal at the 2000 in Denver, Colorado. Penn Weizen is top-fermented, cask-conditioned, and very effervescent with a slight hint of tangy clove flavor."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,31,1
+old_hat_brewery,0,0,244872380418,"{""name"":""Old Hat Brewery"",""city"":""Lawton"",""state"":""Michigan"",""code"":""49065"",""country"":""United States"",""phone"":""1-269-624-6445"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""114 North Main Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.1682,""lon"":-85.8497}}",1,38,1
+two_dogs_beverage_company,0,0,245102215168,"{""name"":""Two Dogs Beverage Company"",""city"":""Manhasset"",""state"":""New York"",""code"":""11030"",""country"":""United States"",""phone"":""1-516-869-6568"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""272 Plandome Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.7964,""lon"":-73.699}}",1,9,1
+ship_inn_brewpub-best_bitter,0,0,244994342914,"{""name"":""Best Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ship_inn_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+hoppy_brewing_company-total_eclipse_black_ale,0,0,244741832705,"{""name"":""Total Eclipse Black Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""hoppy_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Total Eclipse Black Ale has been described as similar to a light, dry stout. Characterized by its distinctive hop aroma and rich, black color, Total Eclipse redefines the way you think about a dark ale. Brewed at a low temperature to create a refreshingly dry finish, Total Eclipse uses only the finest two row malted barley and hops grown in the great Pacific Northwest. This combination results in a clean, crisp, hand-crafted experience. Hoppy Brewing Company has never used any artificial preservatives, flavors, or colors in any of its ales. The Hoppy label is your guarantee of purity. \r\nIt’s “totally” out of this world delicious!!!"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+magic_hat-lucky_kat,0,0,244864450561,"{""name"":""Lucky Kat"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""A deep golden IPA with a firm malt body, finishing with a big hop aroma."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,18,1
+southern_tier_brewing_co-big_red_imperial_red_ale,0,0,245110210560,"{""name"":""Big Red Imperial Red Ale"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+port_brewing_company-3rd_anniversary_ale,0,0,245003583490,"{""name"":""3rd Anniversary Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,55,1
+tooheys,0,0,245120303105,"{""name"":""Tooheys"",""city"":""Sydney"",""state"":""New South Wales"",""code"":"""",""country"":""Australia"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""29 Nyrang Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-33.8501,""lon"":151.045}}",1,52,1
+sleeman_brewing_malting-sapporo_premium_beer,0,0,244985036802,"{""name"":""Sapporo Premium Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sleeman_brewing_malting"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+john_harvard_s_brew_house_framingham-wilmington_roggen_beer,0,0,244754219008,"{""name"":""Wilmington Roggen Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""john_harvard_s_brew_house_framingham"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+matilda_bay_brewing,0,0,244862222337,"{""name"":""Matilda Bay Brewing"",""city"":""North Fremantle"",""state"":""Western Australia"",""code"":"""",""country"":""Australia"",""phone"":""61-(08)-9430-0777"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""130 Stirling Highway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":-32.0232,""lon"":115.754}}",1,12,1
+lancaster_brewing_co-boss_hog_double_ipa,0,0,244757233666,"{""name"":""Boss Hog Double IPA"",""abv"":10.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lancaster_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,57,1
+niagara_falls_brewing-old_jack,0,0,244881031168,"{""name"":""Old Jack"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""niagara_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,58,1
+sprecher_brewing-sprecher_russian_imperial_stout,0,0,245103132672,"{""name"":""Sprecher Russian Imperial Stout"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Once brewed in Britain for the Russian Czars, this tremendously rich and thick ale uses a profusion of burnt and caramel malts. A massive mouthful of dark roasted malt and coffee flavors finishes with hints of chocolate, caramel & licorice."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,11,1
+lion_brewery_ceylon_ltd-lion_stout,0,0,244870676480,"{""name"":""Lion Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""lion_brewery_ceylon_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""\""...the stout was soft, fresh and quite delicious. This was the top-fermenting Lion Stout...It was bottle-conditioned and had an extraordinary chocolaty, mocha...character.\"" - Michael Jackson, The Beer Hunter"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,34,1
+michigan_brewing-bavarian_dark,0,0,244871069698,"{""name"":""Bavarian Dark"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""michigan_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Russett colored brown ale with a thinner but well defined white head, grainy aromas with a touch of caramel  flavors."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,35,1
+river_west_brewing-nut_brown,0,0,244996177920,"{""name"":""Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,37,1
+triumph_brewing_of_new_hope,0,0,245101559808,"{""name"":""Triumph Brewing of New Hope"",""city"":""New Hope"",""state"":""Pennsylvania"",""code"":""18938"",""country"":""United States"",""phone"":""1-215-862-8300"",""website"":""http://www.triumphbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""400 Union Square""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":40.3659,""lon"":-74.9544}}",1,8,1
+snake_river_brewing,0,0,245100773376,"{""name"":""Snake River Brewing"",""city"":""Jackson"",""state"":""Wyoming"",""code"":""83001"",""country"":""United States"",""phone"":""307.739.BEER"",""website"":""http://www.snakeriverbrewing.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""from their site: At the Snake River Brewing Company, we think it's far easier to produce a million barrels of so-so beer than one barrel of great beer. So, here in Jackson Hole, we only produce about 5,000 barrels of award-winning beer per year. We operate a 15 barrel, steam fired brew house and hand craft our lagers and ales using several yeast strains along with hops and grains from the United States, British Isles and Europe. The SRB Brewery was also granted Organic certification in 2007 allowing us to create our first Organic Certified beer OB-1, an english style brown ale, which is fast becoming a favorite among our patrons."",""address"":[""265 S. Millward""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.4768,""lon"":-110.765}}",1,7,1
+radeberger_exportbierbrauerei,0,0,244986216450,"{""name"":""Radeberger Exportbierbrauerei"",""city"":""Radeberg"",""state"":""Sachsen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)3528-/-454-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Dresdener Strae 2""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.1148,""lon"":13.915}}",1,14,1
+oy_sinebrychoff_ab-koff_special_iii,0,0,244881489921,"{""name"":""Koff Special III"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oy_sinebrychoff_ab"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+williams_brothers_brewing_company-alba_scots_pine_ale,0,0,245750693890,"{""name"":""Alba Scots Pine Ale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""williams_brothers_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,48,1
+sweetwater_brewing_atlanta-exodus_porter,0,0,245121351680,"{""name"":""Exodus Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_atlanta"",""updated"":""2010-07-22 20:00:20"",""description"":""This is a classic American Porter, poured on tap it has a good head that stays and leaves a nice lace.  It is defined by its chocolate malt, medium body, and smooth mouthfeel.  Balanced by the Golding and Columbus hops on the finish is a hint of bitterness.  \r\nDon’t be afraid of the dark."",""style"":""Porter"",""category"":""Irish Ale""}",1,56,1
+mad_anthony_brewing-old_woody_pale_ale,0,0,244877230081,"{""name"":""Old Woody Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_anthony_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+portsmouth_brewery-kate_the_great_russian_imperial_stout,0,0,244987658240,"{""name"":""Kate The Great Russian Imperial Stout"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""portsmouth_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The granddaddy of stouts.  Intended for export to the Imerial Court of Russia's Catherine the Great.  Jet black.  Full-bodied.  Very strong."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,17,1
+storm_brewing-black_plague_stout,0,0,245114929152,"{""name"":""Black Plague Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""storm_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Derives its name from the historical fact that at one time in Europe beer was about the only safe liquid to drink. Black Plague is Irish style dry stout brewed only in fall and winter and only in small batches to ensure the freshness so paramount to such an intensely roasted beer."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,39,1
+rock_bottom_restaurant_brewery_denver-rocktoberfest,0,0,245003321346,"{""name"":""Rocktoberfest"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_denver"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,54,1
+sierra_nevada_brewing_co-anniversary_ale_2007,0,0,244987396097,"{""name"":""Anniversary Ale 2007"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nEach fall we celebrate our anniversary as one of America’s craft brewing pioneers with a special beer.  This year, in celebration of our 27th year, we have made this beer available to the public for the first time, and aptly named it Anniversary Ale.    \r\n\r\nAnniversary Ale is an American-style IPA featuring Cascade hops, the signature hop used in our Pale Ale. The beer has a pronounced pine and citrus hop aroma balanced by the sweetness of two-row pale and caramel malts. The result is an unusually well-balanced IPA that proves an IPA can be both assertive and elegant. Anniversary Ale is a medium-bodied, well-hopped ale that finishes with a slight malt sweetness."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,16,1
+sierra_nevada_brewing_co-glissade_golden_bock,0,0,244986937345,"{""name"":""Glissade Golden Bock"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""As winter begins its slide toward the sunny days of spring, we bring you Glissade Golden Bock to help you enjoy the ride. Glissade is a remarkably mellow take on the traditional spring bock. With restrained sweetness, we emphasize subtle malt flavor, balanced against delicate aromas of spicy and floral European hops. This complex balance helps Glissade slide across the palate—bracing us against the last cold nights of winter, while its bright golden color turns our thoughts toward spring."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,15,1
+troegs_brewing-troegs_pale_ale,0,0,245104246784,"{""name"":""Troegs Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Tröegs Brewery classic, our Pale Ale is copper colored with generous amounts of Cascade hops to create a floral, aromatic pale ale that smells as delicious as it tastes."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,13,1
+rahr_sons_brewing_company-blind_salamander_pale_ale,0,0,244993163264,"{""name"":""Blind Salamander Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rahr_sons_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Blind Salamander Pale Ale is the first of a series of Rahr beers\r\ncalled Rare Breed. These beers are dedicated to improving the lot of\r\nendangered Texas species. Rahr is making donations from these proceeds\r\nto the Texas Parks & Wildlife Foundation to help with the recovery\r\nof these species. \r\n\r\nThe Texas Blind Salamander is a rare cave dwelling troglobite amphibian native to San\r\nMarcos, specifically the San Marcos Pool in the Edwards Aquifer. It has\r\nbright red external gills for absorbing oxygen from the water. Its\r\nmature length is 5 cm and its diet varies by what flows into its cave,\r\nincluding shrimp, snails and amphipods. \r\n\r\nBlind Salamander Pale Ale is a blend of the finest pale malts and East Kent\r\nGoldings hops. The fine balance of these toasted caramel malts and\r\nearthy hops makes Blind Salamander an easy drinking and satisfying ale."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+otto_s_pub_and_brewery-dubbel_ale,0,0,244872445952,"{""name"":""Dubbel Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""An Abbey-style Dubbel ale. This dark amber brown ale is full of apple, raisin, and banana esters with a smooth malty finish."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,38,1
+valley_brewing_company-ports_pale_ale,0,0,245102215169,"{""name"":""Ports Pale Ale"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Ports Pale Ale is an extremely light and easy to drink Pale Ale. It is brewed with the finest German and English Malt and Hops. Brewed for the local Stockton ports baseball team."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,9,1
+shipyard_brewing_portland,0,0,244994408448,"{""name"":""Shipyard Brewing - Portland"",""city"":""Portland"",""state"":""Maine"",""code"":""4101"",""country"":""United States"",""phone"":""1-800-789-0684"",""website"":""http://www.shipyard.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Since 1994, Shipyard Brewing Company has been brewing fine quality products with a wide range of style profiles. We use only top quality ingredients and pride ourselves on the consistency and freshness of our products. All our beer is hand crafted from recipes developed by master brewer Alan Pugsley, one of the most influential people in the craft brewing movement in North America.  Shipyard is available in 35+ states around the country and markets for our freshly brewed, hand-crafted beers continue to expand."",""address"":[""86 Newbury Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.6619,""lon"":-70.2489}}",1,33,1
+indian_wells_brewing-mojave_gold,0,0,244741832706,"{""name"":""Mojave Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""indian_wells_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+mcmenamins_mill_creek,0,0,244864516096,"{""name"":""McMenamins Mill Creek"",""city"":""Mill Creek"",""state"":""Washington"",""code"":""98012"",""country"":""United States"",""phone"":""1-425-316-0520"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""13300 Bothell-Everett Highway #304""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.8774,""lon"":-122.211}}",1,18,1
+steamworks,0,0,245110210561,"{""name"":""Steamworks"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""V6B 5C6"",""country"":""Canada"",""phone"":""1-604-689-2739"",""website"":""http://www.steamworks.com/gastown_index.htm"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Steamworks gets its name from the famous Gastown steam line that runs through our premises. The Gastown Brewing Company, which is located onsite and brews Steamworks beers, uses steam to fire its kettles. The instant heat of steam allows for greater brewing finesse, and most importantly great tasting beer. Whether you're in the mood for a thirst quenching Lions Gate lager, or a full bodied HeriocaTM Oatmeal Stout, we've got a beer to please your palate."",""address"":[""375 Water Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.2849,""lon"":-123.11}}",1,28,1
+port_brewing_company-port_panzer_imperial_pilsner,0,0,245003649024,"{""name"":""Port Panzer Imperial Pilsner"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+twin_ports_brewing,0,0,245120303106,"{""name"":""Twin Ports Brewing"",""city"":""Superior"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":46.7208,""lon"":-92.1041}}",1,52,1
+southampton_publick_house-south_hampton_ipa,0,0,245102346240,"{""name"":""South Hampton IPA"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southampton_publick_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,10,1
+kona_brewing-wailua,0,0,244754219009,"{""name"":""Wailua"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kona_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Wailua is Hawaiian for two fresh water streams mingling. This was just the inspiration we needed for our Limited Release wheat ale brewed with tropical passion Fruit. A refreshing citrusy, sun-colored ale with the cool taste of Hawaii."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,49,1
+mickey_finn_s_brewery-scapegoat_bock,0,0,244862222338,"{""name"":""Scapegoat Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,12,1
+little_apple_brewing-xx_black_angus_stout,0,0,244880375808,"{""name"":""XX Black Angus Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_apple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,57,1
+oak_creek_brewery-oak_creek_amber_ale,0,0,244881031169,"{""name"":""Oak Creek Amber Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+steamworks-skinny_tire_hefeweizen,0,0,245103132673,"{""name"":""Skinny Tire Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Hefeweizen is a faithful version of the traditional Bavarian wheat beer. Hefe is the German word for 'yeast' and weizen means 'wheat'. This beer is made with 40% wheat malt and is brewed with a special yeast that tends to stay in suspension, giving the beer its cloudy appearance. Bavarians are so convinced of the healthful qualities of this yeasty brew that doctors there are known to prescribe two Hefeweizens a day to feeble patients. The yeast used for this brew also imparts its unique spicy, clovey flavour. Some people even detect a light banana flavour. All of these wacky flavours are the natural 'signature' left by this specific yeast strain during its fermentation of the beer and no additional spices are added."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,11,1
+little_apple_brewing,0,0,244870742016,"{""name"":""Little Apple Brewing"",""city"":""Manhattan"",""state"":""Kansas"",""code"":""66502"",""country"":""United States"",""phone"":""1-785-539-5500"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1110 Westloop Center""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.1836,""lon"":-96.5717}}",1,34,1
+midnight_sun_brewing_co-fur_rondy,0,0,244871135232,"{""name"":""Fur Rondy"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Winter Warmer"",""category"":""Other Style""}",1,35,1
+rocky_river_brewing-golden_eagle_helles,0,0,244996177921,"{""name"":""Golden Eagle Helles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rocky_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+troegs_brewing-troegenator_double_bock,0,0,245101559809,"{""name"":""Troegenator Double Bock"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Troegenator Double Bock, is a dark, strong lager (8.2% abv). It pours into a glass with a bronze to brown color, fluffy white head and bready malt aroma. The Troegenator leaves a rich, warming feeling and subtle spicy flavors. The style, Double Bock, dates back a century or so ago. During periods of fasting without solid foods, the Monastic brewers relied on the double bock; a stronger, richer beer to fulfill their basic nutritional needs. Known to them as \""liquid bread,\"" a double bock has a strong malt aroma and chewy rich body. Traditionally these brewers ended the name of their double bock with the suffix \""ator\"", ex. Celabrator, Illuminator, Subliminator... In the spirit of the tradition we give you the Troegenator to provide warmth and richness through the early spring months. A double bock of epic proportions, beware,\r\nthe Troegenator is deceiving smooth and delicious."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,8,1
+southern_tier_brewing_co-pumking_imperial_pumpkin_ale,0,0,245100838912,"{""name"":""Pumking Imperial Pumpkin Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Pumking is an ode to Púca, a creature of Celtic folklore, who is both feared and respected by those who believe in it. Púca is said to waylay travelers throughout the night, tossing them on its back, and providing them the ride of their lives, from which they return forever changed. Brewed in the spirit of All Hallows Eve, a time of the year when spirits can make contact with the physical world and when magic is most potent. Pour Pumking into a goblet and allow it’s alluring spirit to overflow. As spicy aromas present themselves, let it’s deep copper color entrance you as your journey into this mystical brew has just begun. As the first drops touch your tongue a magical spell will bewitch your taste buds making it difficult to escape the Pumking."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,7,1
+red_star_brewery_grille-canvas_back_american_pale_ale,0,0,244986281984,"{""name"":""Canvas Back American Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_star_brewery_grille"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,14,1
+port_washington_brewing-transcendental_wheat_beer,0,0,245005221888,"{""name"":""Transcendental Wheat Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_washington_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+wynkoop_brewing-st_charles_esb,0,0,245750759424,"{""name"":""St. Charles ESB"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our British-style session beer is cask conditioned and dry hopped. Tea colored with a toasted malt flavor, it's an easy drinker with a light mouthfeel and elgeant hop nose."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,48,1
+tallgrass_brewing_co-oasis,0,0,245121351681,"{""name"":""Oasis"",""abv"":7.2,""ibu"":93.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tallgrass_brewing_co"",""updated"":""2010-11-11 19:32:59"",""description"":""Oasis is a Double ESB/IPAish beer that came about from playing around with one of Jeff"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,56,1
+marin_brewing-mt_tam_pale_ale,0,0,244877295616,"{""name"":""Mt.Tam Pale Ale"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-schneider_weisse,0,0,244987658241,"{""name"":""Schneider Weisse"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,17,1
+stoudt_s_brewery-honey_double_maibock,0,0,245114929153,"{""name"":""Honey Double Maibock"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,39,1
+rogue_ales-juniper_pale_ale,0,0,245003386880,"{""name"":""Juniper Pale Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Juniper Pale Ale: the new package for Yellow Snow Ale (winter 2004/2005). While the recipe (a pale ale infused with whole juniper berries) on the label remain the same, the name and label are new for 2005. Juniper Pale Ale is available in the classic 22-ounce bottle and on draft."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,54,1
+sly_fox_brewhouse_and_eatery_royersford-helles_golden_lager,0,0,245105164288,"{""name"":""Helles Golden Lager"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+southern_tier_brewing_co-southern_tier_ipa,0,0,245104771072,"{""name"":""Southern Tier IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""IPA stands for India Pale Ale and ours is an American version of the classic style.  IPA's namesake lies in its colonial roots.  British soldiers on their way to India drank a lot of beer, but found it would go stale on the long voyages.  Meanwhile, brewers knew that by adding more hops the beer would stay fresh.  Voila!  A new style was born and it is one we are proud to brew.  Southern Tier IPA is triple-hopped on its journey to your glass for a fully aromatic experience."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,15,1
+tworows_restaurant_brewery_dallas-osage_golden_wheat_ale,0,0,245104246785,"{""name"":""Osage Golden Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tworows_restaurant_brewery_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+remington_watson_smith_brewing-amber_ale,0,0,244993228800,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""remington_watson_smith_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,31,1
+otto_s_pub_and_brewery-slab_cabin_ipa,0,0,244872445953,"{""name"":""Slab Cabin IPA"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic American IPA with lots of floral punch and assertive hop presence. Hopped with Nugget, Palisade and Amarillo colored to a reddish hue thanks to Munich and Aromatic malts"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+victory_brewing-baltic_thunder,0,0,245102215170,"{""name"":""Baltic Thunder"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Truly a worldly beer. Baltic Thunder represents the Baltic Porter style admirably. Exhibiting the enticing, toffee roast of the British porter that originated the style in the 18th century, and the soothing, subtle fruit nuance of contemporary brews that flourish from Helsinki to Vilnius today, this dark lager honors the Baltic god of thunder.  Created by an inspired collaboration of brewers and tempered with a touch of turmoil, Baltic Thunder rolls on to bring you enchanting light as the darkness fades."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,9,1
+sixpoint_craft_ales-hop_obama,0,0,244994408449,"{""name"":""Hop Obama"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sixpoint_craft_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,33,1
+kaiserdom_privatbrauerei_bamberg-rauchbier,0,0,244741898240,"{""name"":""Rauchbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""kaiserdom_privatbrauerei_bamberg"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+minhas_craft_brewery-berghoff_genuine_dark,0,0,244864516097,"{""name"":""Berghoff Genuine Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minhas_craft_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+stillwater_artisanal_ales,0,0,245110276096,"{""name"":""Stillwater Artisanal Ales"",""city"":""Baltimore"",""state"":""Maryland"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.stillwaterales.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.2904,""lon"":-76.6122}}",1,28,1
+port_brewing_company-skye_strong_ale,0,0,245003649025,"{""name"":""Skye Strong Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+tyranena_brewing-three_beaches_honey_blonde_ale,0,0,245120303107,"{""name"":""Three Beaches Honey Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Nothing beats a day at the beach...  the sun, the sand and, of course, the scenery. Here in Lake Mills, the three beaches of Rock Lake have drawn young and old for generations... to laugh, to play, to frolic, to just escape stresses of life for a time. Three Beaches Honey Blonde is like a day at the beach... light, bleached blonde, gleefully effervescent, free from bitterness and sure to improve your attitude. When you need a little attitude adjustment, spend a day at the beach with Three Beaches Honey Blonde... and you won't even have to wash the sand out of your suit!\r\n\r\nThree Beaches Honey Blonde is our Wisconsin version of the American Blonde Ale. This beer is light-bodied with a sweet touch of honey and a mild citrus accent."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,52,1
+southern_tier_brewing_co-chautauqua_brew,0,0,245102346241,"{""name"":""Chautauqua Brew"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,10,1
+krogh_s_restaurant_and_brewpub,0,0,244754219010,"{""name"":""Krogh's Restaurant and Brewpub"",""city"":""Sparta"",""state"":""New Jersey"",""code"":""7871"",""country"":""United States"",""phone"":""1-973-729-8428"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""23 White Deer Plaza""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":41.0323,""lon"":-74.6407}}",1,49,1
+middle_ages_brewing-swallow_wit,0,0,244862287872,"{""name"":""Swallow Wit"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A wheat beer brewed in the style of a Belgian wit bier while using British ingredients. Lite and refreshing spiced with coriander and orange peel."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,12,1
+long_valley_pub_brewery,0,0,244880375809,"{""name"":""Long Valley Pub & Brewery"",""city"":""Long Valley"",""state"":""New Jersey"",""code"":""7853"",""country"":""United States"",""phone"":""1-908-876-1122"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1 Fairmount Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.7843,""lon"":-74.78}}",1,57,1
+otto_s_pub_and_brewery-arthur_s_english_old_ale,0,0,244881031170,"{""name"":""Arthur's English Old Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A big malty ale brewed in the style of English Old Ales. Deep ruby in color and lightly bittered with a big malty backbone."",""style"":""Old Ale"",""category"":""British Ale""}",1,58,1
+steel_brewing-high_gravity_lager,0,0,245103132674,"{""name"":""High Gravity Lager"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,11,1
+magic_hat-hipa,0,0,244870742017,"{""name"":""HIPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,34,1
+midnight_sun_brewing_co-lust,0,0,244871135233,"{""name"":""Lust"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""LUST Belgian-style Dark Strong Ale stirs shameless desire in men (and women) with its captivating appearance, enticing aroma and satisfying flavors. Aged in bourbon oak barrels for twelve months, Lust is worldly, smooth and decadent. Sour cherries contribute tartness while brettanomyces brings muskiness to this naughty brew. \r\n\r\nThe pleasure you derive from this dark beer is beyond words. \r\n\r\nLUST. Regret. Repent. Repeat."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,35,1
+roffey_brewery-overcast_ale,0,0,244996177922,"{""name"":""Overcast Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roffey_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+tworows_restaurant_brewery_dallas-route_66_amber_ale,0,0,245101625344,"{""name"":""Route 66 Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tworows_restaurant_brewery_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+tablerock,0,0,245100838913,"{""name"":""Tablerock"",""city"":""Boise"",""state"":""Idaho"",""code"":""83702"",""country"":""United States"",""phone"":""(208) 342-0944"",""website"":""http://www.tablerockbrewpub.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""705 Fulton St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.6113,""lon"":-116.206}}",1,7,1
+rockyard_brewing-hopyard_ipa,0,0,244986281985,"{""name"":""Hopyard IPA"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rockyard_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+ramapo_valley_brewery-copper,0,0,245005287424,"{""name"":""Copper"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ramapo_valley_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,59,1
+zea_rotisserie_and_brewery-ponchartrain_porter,0,0,245750759425,"{""name"":""Ponchartrain Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,48,1
+tampa_bay_brewing-old_elephant_foot_ipa,0,0,245121417216,"{""name"":""Old Elephant Foot IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tampa_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,56,1
+maritime_pacific_brewing-flagship_red_alt_ale,0,0,244877295617,"{""name"":""Flagship Red Alt Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+privater_brauereigasthof_greifenklau,0,0,244987658242,"{""name"":""Privater Brauereigasthof Greifenklau"",""city"":""Bamberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)951-/-53219"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Laurenziplatz 20""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.8851,""lon"":10.8823}}",1,17,1
+stout_brothers_public_house-yodeler_weisse,0,0,245114929154,"{""name"":""Yodeler Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stout_brothers_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,39,1
+salado_creek_brewing_company-amber,0,0,245003386881,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""salado_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+spaten_franziskaner_brau-oktoberfestbier_oktoberfest_ur_marzen,0,0,245105164289,"{""name"":""Oktoberfestbier / Oktoberfest Ur-Märzen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,16,1
+springfield_brewing-mueller_doppelbock,0,0,245104836608,"{""name"":""Mueller Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""springfield_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,15,1
+victory_brewing-yakima_glory,0,0,245745778688,"{""name"":""Yakima Glory"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-11-27 12:29:23"",""description"":""The tenacious grip of big, juicy hop aroma and character slides smoothly into rich, dark malts. This heavyweight battle between fresh, Yakima Valley hops and dark, roasted malts is resolved harmoniously as the flavors merge to deliver complex satisfaction with a warming edge. Bask in the "",""style"":""American-Style India Black Ale"",""category"":""North American Ale""}",1,13,1
+ridgeway_brewing-lump_of_coal_dark_holiday_stout,0,0,244993228801,"{""name"":""Lump of Coal Dark Holiday Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ridgeway_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,31,1
+pennichuck_brewing_company-pompier,0,0,244996505600,"{""name"":""Pompier"",""abv"":12.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our fourth in the Firehouse Ales Series, Pompier means \""fireman\"" in French and represents our continued commitment to celebrate and honor the men and women who respond to the call day after day.  Pompier is rich and  smooth with complexities that come from a huge grain bill comprised of premium imported specialty malts, French Strisselspalt aroma hops and a 3 month aging process in oak hogsheads where it is combined with toasted French oak wood chips and champagne yeast.  Pompier is intended to be a vintage quality English-Style Barleywine with a French twist.  Appreciate its fine character and 12.1%ABV when we release this single 10 barrel batch sometime in December or you may choose to cellar it for many years to come.  \r\n\r\nYou will find Pompier on retail shelves packaged in the same 1 Liter Swing-Top bottle that has become a signature for our specialty beers.""}",1,38,1
+weyerbacher_brewing_company-eleven,0,0,245745057792,"{""name"":""Eleven"",""abv"":11.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Eleventh anniversy ale, released in July 2006 only is a Triple IPA made exclusively with Phoenix hops. 11.7% abv make this Triple IPA powerful, but the Phoenix hops keep it smooth.  Phoenix is another one of those hops with low cohumulone levels, which means  when used in very large quantities (as we do in Eleven) the hops flavor is very smooth, not a hint of harshness for the enormous amounts of hops in the brew.  As with all of our Anniversay ales, this one will age fantastically and will never be made again, as each anniversary is an entirely different brew."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,9,1
+smoky_mountain_brewing,0,0,245112242176,"{""name"":""Smoky Mountain Brewing"",""city"":""Knoxville"",""state"":""Tennessee"",""code"":""37902"",""country"":""United States"",""phone"":""1-423-673-8400"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""424 South Gay Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":35.9657,""lon"":-83.9181}}",1,33,1
+knigsbacher_brauerei-pils,0,0,244741898241,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""knigsbacher_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+new_belgium_brewing-abbey_belgian_style_ale,0,0,244864581632,"{""name"":""Abbey Belgian Style Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_belgium_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Winner of four World Beer Cup medals and eight medals at the Great American Beer Fest, Abbey Belgian Ale is the Mark Spitz of New Belgium’s lineup - but it didn’t start out that way. When Jeff and Kim first sampled the beer at the Lyons Folks Fest, reviews were mixed at best. One of founder Jeff’s first two Belgian style homebrews (along with Fat Tire), Abbey is a Belgian dubbel (or double) brewed with six different malts and an authentic Belgian yeast strain. Abbey is bottle-conditioned, weighs in at 7.0% alcohol by volume, and pairs well with chocolate (or boldly served by itself) for dessert."",""style"":""Belgian-Style Dubbel"",""category"":""Belgian and French Ale""}",1,18,1
+stone_brewing_co-vertical_epic_06_06_06,0,0,245110276097,"{""name"":""Vertical Epic 06.06.06"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+privatbrauerei_gaffel,0,0,245003649026,"{""name"":""Privatbrauerei Gaffel"",""city"":""Kln"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)221-/-160060"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Eigelstein 41""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":50.9465,""lon"":6.9563}}",1,55,1
+wagner_valley_brewing-oatmeal_stout,0,0,245751283712,"{""name"":""Oatmeal Stout"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wagner_valley_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pours a very deep black with a pleasant aroma and a thick brown head.  It has the usual coffee taste you would expect with a hint of chocolate.  There is quite a lot of carbonation but is very drinkable."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,52,1
+spanish_peaks_brewing-black_dog_yellowstone_ale,0,0,245102411776,"{""name"":""Black Dog Yellowstone Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spanish_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+labatt_ontario_breweries-labatt_sterling,0,0,244754284544,"{""name"":""Labatt Sterling"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""labatt_ontario_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""With only 88 calories per 341 ml bottle, Labatt Sterling is a light, refreshing beer with 1/3 less calories than regular beers. In other words, it's a great tasting beer...that won't slow you down."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,49,1
+moosejaw_pizza_dells_brewing_company-dells_chief_amber_ale,0,0,244862287873,"{""name"":""Dells Chief Amber Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moosejaw_pizza_dells_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+mad_river_brewing-john_barleycorn_barleywine_style_ale,0,0,244880441344,"{""name"":""John Barleycorn Barleywine Style Ale"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Seasonal Offering. We honor the Harvest & Holidays each year by brewing a traditional Barleywine style ale, using a variety of ingredients. The Label, created by local artist Janis Taylor, is a folksy woodcut based on the tale of John Barleycorn in verse.\r\n\r\nBrewed in small 10-barrel batches with Certified Organic barley malt, this crimson hued ale has a sweet caramel nose with a zesty spicy, citrus taste. It has a slight hop finish and leaves a warm, tingling sensation on the tongue. A great winter warmer!\r\nStarting Gravity \t1.098\r\nFinish Gravity \t1.020\r\nABV \t9.5\r\nIBU \t96\r\n\r\n-http://www.madriverbrewing.com/pages/brews/john_barleycorn.html"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,57,1
+otto_s_pub_and_brewery-old_fugget,0,0,244881031171,"{""name"":""Old Fugget"",""abv"":11.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A big, bold ale brewed in the style of classic barleywines. Served lightly carbonated through the handpump at cellar temperature."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,58,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-melon_head_red,0,0,245103132675,"{""name"":""Melon Head Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,11,1
+manhattan_beach_brewing-rat_beach_red_ale,0,0,244870807552,"{""name"":""Rat Beach Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manhattan_beach_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,34,1
+miller_brewing-miller_high_life,0,0,244871135234,"{""name"":""Miller High Life"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""miller_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Miller High Life, the \""champagne of beers,\"" dates back to 1903. Miller High Life is a classic American-style lager recognized for its consistently crisp, smooth taste and classic clear-glass bottle. Miller High Life embraces its rich heritage and is positioned as common sense in a bottle. Its drinkers know Miller High Life is an authentic, unpretentious beer. As the best beer value in America, we encourage our target consumers to \""Celebrate the High Life.\"""",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,35,1
+rogue_ales-frosty_frog,0,0,244996243456,"{""name"":""Frosty Frog"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong, but well balanced winter warmer, this ale has extreme complexity made for a holiday feast.  The addition of Raisins and Molasses in the brewing process produces unusual spiced rum like flavors to go along with the well balanced malt and hops.  \r\nNo Chemicals, Additives or Preservatives."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,37,1
+unibroue-edition_2005,0,0,245101625345,"{""name"":""Édition 2005"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,8,1
+tailgate_beer-tailgate_sweet_stout,0,0,245100838914,"{""name"":""Tailgate Sweet Stout"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tailgate_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""Bronze medal award winner - Sweet Stout Category – California State Fair 2008 Commercial Craft Brew Competition\r\n\r\nDon’t be afraid of the dark. This Sweet Stout is a surprisingly charming, and yet extremely robust ale that spills a soothing bouquet of caramel, chocolate and lightly roasted oats.  As a truly unique foray into the world of stout ales, this sweet stout drinks so light you might be surprised at how apt you are to enjoy the darkest of TailGate Beer’s. The flavors are so rich and smooth that this TGB Sweet Stout can cool you on the hottest of days and warm you in the worst that winter can bring. Here is heaven in a bottle. If it weren't so wrong, this is what you wish mom could have given you in your baby bottle.  Treat yourself right and enjoy an experience that is the best dessert to pass through your lips since mom last made her best fruit pie for you."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,7,1
+sacramento_brewing_company-barristers_bitter,0,0,244986281986,"{""name"":""Barristers Bitter"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sacramento_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Low in alcohol but big in flavor. This beer is dry hopped like an IPA but the alcohol and bitterness have been reduced for a great session beer."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,14,1
+real_ale_brewing_company-rio_blanco_pale_ale,0,0,245005287425,"{""name"":""Rio Blanco Pale Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""real_ale_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep golden and malty, with a spicy hop flavor and well balanced hop bitterness, Rio Blanco is a uniquely Texan interpretation of an English-style pale ale. Czech Saaz hops provide a crisp finish and delicate aroma."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,59,1
+taylor_s_restaurant_and_brewery-hefeweizen,0,0,245121417217,"{""name"":""Hefeweizen"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,56,1
+maritime_pacific_brewing-old_seattle_lager,0,0,244877295618,"{""name"":""Old Seattle Lager"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maritime_pacific_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+randy_s_fun_hunters_brewery_restaurant_and_banquet_center-pale_ale,0,0,244987723776,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""randy_s_fun_hunters_brewery_restaurant_and_banquet_center"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+surly_brewing,0,0,245114929155,"{""name"":""Surly Brewing"",""city"":""Brooklyn Center"",""state"":""Minnesota"",""code"":""55429"",""country"":""United States"",""phone"":""1-763-535-3330"",""website"":""http://www.surlybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""4811 Dusharme Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.0429,""lon"":-93.3246}}",1,39,1
+san_diego_brewing-dubble_fantasy,0,0,245003386882,"{""name"":""Dubble Fantasy"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Abbey ale with hints of bubble gum flavor."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,54,1
+sprecher_brewing-sprecher_oktoberfest,0,0,245105164290,"{""name"":""Sprecher Oktoberfest"",""abv"":5.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Traditionally brewed to celebrate the harvest season, this reddish-brown lager has a rich caramel character and a long flavorful finish. Its delicious malty sweetness is nicely accented by a slighty fruity bouquet and a mild hop flavor."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,16,1
+stevens_point_brewery-bock,0,0,245104836609,"{""name"":""Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,15,1
+vintage_50_restaurant_and_brew_lounge,0,0,245745778689,"{""name"":""Vintage 50 Restaurant and Brew Lounge"",""city"":""Leesburg"",""state"":""Virginia"",""code"":""20176"",""country"":""United States"",""phone"":""(703) 777-2169"",""website"":""http://www.vintage50.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Vintage 50, at this Leesburg, Virginia classically modern brewery.  Whether you enjoy a fine California cabernet paired with innovative New American fare, or a cold beer brewed on-site paired with classic comfort food, you will feel at home at Vintage 50. Guests will relax in style while enjoying libations from near and far as well as a menu that features fresh, seasonal ingredients."",""address"":[""50 Catoctin Ct. NE #100""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.1126,""lon"":-77.5537}}",1,13,1
+rock_bottom_restaurant_brewery_san_jose-stillwater_stout,0,0,244993228802,"{""name"":""Stillwater Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,31,1
+pete_s_brewing-pete_s_rally_cap_ale,0,0,244996571136,"{""name"":""Pete's Rally Cap Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The key ingredient to a good summer is a GREAT brew! Born to play, Pete's Wicked Rally Cap Ale is crafted with a special blend of pale and wheat malts, Mt. Hood hops and a smack of natural lemon. Get in the game... Get Wicked!"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,38,1
+weyerbacher_brewing_company-quad,0,0,245745123328,"{""name"":""Quad"",""abv"":11.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Grand Champion in the 2000, and again in 2004 at United States Beer Tasting Championship, Weyerbacher QUAD is the first quadrupel style beer to be commercially brewed and bottled in the United States.\r\n\r\nIn December 2002 QUAD won Mid-Atlantic Champion at the USBTC for the third year in a row.\r\n\r\nMassively big and delicious, QUAD is an elegant and dark ale. Rich with complexity and flavor, try savoring it after a long day or during a fine dinner. You also might enjoy it as an aperitif or as an accompaniment to a dessert, but QUAD stands alone quite well. We recommend enjoying QUAD in a brandy snifter or wineglass so you can drink in the aroma of this fine elixir. QUAD, with an alcohol content of 11.8% (by volume) is the strongest beer we make, so please pay proper accord as you enjoy it.\r\n\r\nAs with any higher alcohol beers, QUAD will be at its best after a period of 6 or 12 months in the bottle, perhaps longer. We expect a shelf life of 3-5 years, but go ahead, we know you can't wait (we couldn't either). Enjoy one now, and another every month or two, and you'll be truly amazed as QUAD gains smoothness and complexity over time as it ages."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,9,1
+southend_brewery_and_smokehouse_charleston-blonde,0,0,245112307712,"{""name"":""Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+krogh_s_restaurant_and_brewpub-alpine_glow_red_ale,0,0,244741898242,"{""name"":""Alpine Glow Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""krogh_s_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,19,1
+nodding_head_brewpub-tart,0,0,244864581633,"{""name"":""Tart"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+stone_city_brewing-iowa_pale_ale,0,0,245110276098,"{""name"":""Iowa Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+privatbrauerei_hofmhl-dunkel,0,0,245003714560,"{""name"":""Dunkel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""privatbrauerei_hofmhl"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+wells_and_youngs_brewing_company_ltd-wells_bombardier_english_bitter,0,0,245751283713,"{""name"":""Wells Bombardier English Bitter"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wells_and_youngs_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,52,1
+st_peter_s_brewery-india_pale_ale,0,0,245102477312,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+left_hand_brewing_company-sawtooth_ale,0,0,244754350080,"{""name"":""Sawtooth Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""left_hand_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+murphy_s_wagon_wheel-red_ale,0,0,244862287874,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""murphy_s_wagon_wheel"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+manayunk_brewery_and_restaurant-california_dreaming,0,0,244880441345,"{""name"":""California Dreaming"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""manayunk_brewery_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""Imperial, or super IPA’s were spawned out of the fascination of hops by the American consumer and are beyond Pale Ales and IPA’S in terms of both hop and alcohol content. Our interpretation is orange-gold in color, lightly bitter but highly hoppy with a firm malt backbone. \r\nWe’ll gladly put this head-to-head with the best that those California Hophead/Brewers have to offer."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,57,1
+paper_city_brewing_company,0,0,245004894208,"{""name"":""Paper City Brewing Company"",""city"":""Holyoke"",""state"":""Massachusetts"",""code"":""1040"",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""108 Cabot St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.2012,""lon"":-72.6104}}",1,58,1
+stone_brewing_co-imperial_stout_2002,0,0,245103198208,"{""name"":""Imperial Stout 2002"",""abv"":9.47,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,11,1
+millrose_brewing-south_barrington_stout,0,0,244870807553,"{""name"":""South Barrington Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millrose_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,34,1
+minneapolis_town_hall_brewery-black_h2o_oatmeal_stout,0,0,244871200768,"{""name"":""Black H2O Oatmeal Stout"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our darkest and most heavy regular offering. It is virtually black in color and features rich roasted malt flavor with a delicate caramel and vanilla finish. It is carbonated and served with the use of nitrogen gas, giving the Black Water a beautiful cascading pour and thick, creamy foam atop your glass. Made with only the freshest American malts and English hops."",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,35,1
+rothaus_brauerei,0,0,244996243457,"{""name"":""Rothaus Brauerei"",""city"":""Hartford"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.3178,""lon"":-88.379}}",1,37,1
+unibroue-trois_pistoles,0,0,245101690880,"{""name"":""Trois Pistoles"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""Trois Pistoles has a dark brown color topped with a rich foam mousse.\r\nIts slightly sweet taste is enhanced by accents of roasted malt, cocoa, ripe fruit and dark spices with a smooth finish like an old port.\r\n\r\nBrewed with four selected malts and four\r\nexotic spices, Trois Pistoles beckons with a\r\nsubtle sweetness that makes it surprisingly\r\nsmooth and satisfying for a beer of such strength and complexity."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,8,1
+the_alchemist-hellbrook,0,0,245100904448,"{""name"":""Hellbrook"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""This American double red ale is packed with enough hops to balance the full malty body."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+saint_louis_brewery_schlafy_tap_room-schlafly_pilsner,0,0,244986347520,"{""name"":""Schlafly Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+rock_bottom_restaurant_brewery_milwaukee,0,0,245005287426,"{""name"":""Rock Bottom Restaurant & Brewery - Milwaukee"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":""53203"",""country"":""United States"",""phone"":""1-414-276-3030"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""740 North Plankinton Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0399,""lon"":-87.9117}}",1,59,1
+thirsty_dog_brewing-twisted_kilt_scotch_ale,0,0,245121482752,"{""name"":""Twisted Kilt Scotch Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Caramelized sugars lend a unique flavor and aroma to this lightly hopped, malty smooth, Scottish Export Ale."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,56,1
+mickey_finn_s_brewery-scapegoat_doppelbock,0,0,244877361152,"{""name"":""Scapegoat Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+rch_brewery,0,0,244987723777,"{""name"":""RCH Brewery"",""city"":""Weston-super-Mare"",""state"":""Somerset"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01934)-834447"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""West Hewish""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.3723,""lon"":-2.8773}}",1,17,1
+taylor_s_crossing_brewing,0,0,245114994688,"{""name"":""Taylor's Crossing Brewing"",""city"":""North Vancouver"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-984-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1025 Marine Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.3238,""lon"":-123.102}}",1,39,1
+schooner_brewery-downtown_brown,0,0,245003452416,"{""name"":""Downtown Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,54,1
+standing_stone_brewing_company-standing_stone_nitro_stout,0,0,245105229824,"{""name"":""Standing Stone Nitro Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""With its dark-roasted coffee aroma, espresso and chocolate flavor, this stout has flaked oats which create a velvety body and a dry finish."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,16,1
+stewart_s_brewing-highlander_stout,0,0,245104836610,"{""name"":""Highlander Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stewart_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,15,1
+vyturio_alaus_darykla-1784_anniversary_beer,0,0,245745778690,"{""name"":""1784 Anniversary Beer"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vyturio_alaus_darykla"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,13,1
+salopian_brewery,0,0,244993294336,"{""name"":""Salopian Brewery"",""city"":""Shrewsbury"",""state"":""Shropshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01743)-248414"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""67 Mytton Oak Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":52.7069,""lon"":-2.787}}",1,31,1
+pike_pub_and_brewery-xxxxx_stout,0,0,244996571137,"{""name"":""XXXXX Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pike_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+wharf_rat,0,0,245745123329,"{""name"":""Wharf Rat"",""city"":""Baltimore"",""state"":""Maryland"",""code"":""21201"",""country"":""United States"",""phone"":""410-244-8900"",""website"":""http://www.thewharfrat.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""206 W. Pratt St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.2866,""lon"":-76.6182}}",1,9,1
+southern_tier_brewing_co-mokah_imperial_blended_stout,0,0,245112373248,"{""name"":""Mokah Imperial Blended Stout"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""When empirical and creative impulses collide, the result is often timeless. The classic utility-art aesthetic of the coffee maker is an example of design and engineering working in concert. \r\n\r\nIt is through similar cooperation that the simple bitter cocoa bean is transformed into a sweet treat. As scientists, our brewers utilize their materials to exacting standards. As artists, they couldn’t resist the temptation to combine two of our highly acclaimed Blackwater Series Imperial Stouts: Jahva and Choklat. Alone each is perfect, but together as Mokah they are an inimitable expression of two of the world’s most sought after flavors. Enjoy Mokah stout with – or as – your favorite dessert!\r\n11.0% abv • 27º plato • Imperial Stout Brewed with Coffee & Chocolate • 22 oz / 1/6 keg\r\n2-row pale malt • 2-row barley • caramel, chocolate & black malts • roasted barley barley flakes • Jamaican roasted coffee • bittersweet Belgian chocolate • chinook, willamette, cascade & columbus hops"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,33,1
+la_jolla_brewing-little_point_pale,0,0,244741963776,"{""name"":""Little Point Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""la_jolla_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,19,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_doppelt_ipa,0,0,244864581634,"{""name"":""Nøgne Ø Doppelt IPA"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in collaboration with brewmaster Toshi Ishii from Yo-Ho Brewing, Japan. \r\n\r\nMalt: lager, münchener, crystal \r\nHops: Millennium, Centennial, Chinnok, Amarillo and Brewers Gold. \r\n\r\n19° P, 100 IBU, 8% ABV."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,18,1
+storm_brewing-hurricane_i_p_a,0,0,245110341632,"{""name"":""HURRICANE I.P.A."",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""storm_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""“A complex, flavourful and fascinating ale lies just on the edge of being totally out of control.” —Stephan Beaumont, Celebrator Beer News\r\n\r\nIndia Pale Ale dates back to the 1700’s when Britain needed a hearty beer to ship to her troops in India. Because the ships had to cross the equator twice to get there, spoilage was a major problem until some clever brewer realized that both alcohol and hops are natural preservatives. James brews Hurricane I.P.A. in this tradition, and packs it with enough hops and alcohol to survive crossing the orbit of Mercury twice. The grist is 100% Gambrinus premium 2-row barley malt, copiously hopped with fresh Centennial and Willamette. The result is a rich, golden, intense beer with bitterness in perfect balance with residual sweetness."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,28,1
+pug_ryan_s_steakhouse_and_brewery,0,0,245003714561,"{""name"":""Pug Ryan's Steakhouse and Brewery"",""city"":""Dillon"",""state"":""Colorado"",""code"":""80435"",""country"":""United States"",""phone"":""1-970-468-2145"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""104 Village Place""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.6282,""lon"":-106.047}}",1,55,1
+weyerbacher_brewing_company-merry_monks,0,0,245751349248,"{""name"":""Merry Monks"",""abv"":9.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Merry Monks' Ale is a Belgian style Abby Trippel without limitation.  This style was created by Trappist Monks in Belgium over 500 years ago. To be true to the style, Merry Monks' Ale is bottle conditioned. This means we add a bit of sugar and yeast just prior to bottling. This imparts a special effervescence to the beer, a creamier carbonation, and also extends the shelf life. The on-going fermentation inside the bottle will change the character of the beer as it ages, and you'll find it becomes dryer with age. You may want to lay down a few bottles for future evaluation. We suggest storing at cellar temperatures -around 55 degrees F- and away from light.\r\n\r\nWhen you try this beer you're in for a unique treat. The special effervescence and creaminess are immediately apparent when pouring. The Pilsner malts combined with the Belgian yeast strains  yield a remarkable and complex flavor- perhaps you'll note subtle hints of fruit or spice. The flavor is nicely balanced and the finish moderate to dry , begging for the next sip.\r\n\r\nYou might ask why we go through all this trouble and expense for just a beer, but one taste and you'll know the Merry Monks' Ale (9.3% ABV) will more than complement any meal it accompanies. Enjoyed best around 48 degrees F, it also makes a fine after-dinner drink."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,52,1
+stone_brewing_co-stone_cali_belgique,0,0,245102477313,"{""name"":""Stone Cali-Belgique"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,10,1
+liefmans_breweries-lucifer,0,0,244754415616,"{""name"":""Lucifer"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""liefmans_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+myanmar_brewery_and_distillery,0,0,244862353408,"{""name"":""Myanmar Brewery and Distillery"",""city"":""Yangon"",""state"":"""",""code"":"""",""country"":""Myanmar"",""phone"":""95-1-636258"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""No. 45, No. 3 Trunk Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":16.7779,""lon"":96.1679}}",1,12,1
+marshall_brewing_company-mcnellie_s_pub_ale,0,0,244880506880,"{""name"":""McNellie's Pub Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""marshall_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,57,1
+paulaner-hacker_pschorr_weisse,0,0,245004959744,"{""name"":""Hacker-Pschorr Weisse"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""paulaner"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,58,1
+stone_coast_brewing_portland,0,0,245103198209,"{""name"":""Stone Coast Brewing - Portland"",""city"":""Portland"",""state"":""Maine"",""code"":""4103"",""country"":""United States"",""phone"":""1-207-774-7437"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""23 Rice Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.71,""lon"":-70.305}}",1,11,1
+moose_s_tooth_pub_and_pizzeria,0,0,244870807554,"{""name"":""Moose's Tooth Pub and Pizzeria"",""city"":""Anchorage"",""state"":""Alaska"",""code"":""99503"",""country"":""United States"",""phone"":""(907) 258-2537"",""website"":""http://www.moosestooth.net/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3300 Old Seward Highway""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":61.1902,""lon"":-149.869}}",1,34,1
+minocqua_brewing_company-bohemian_pilsner,0,0,244871200769,"{""name"":""Bohemian Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minocqua_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+russian_river_brewing-beer_esteem,0,0,244996308992,"{""name"":""Beer Esteem"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""If you can't feel good about your beer... what else is worth feeling good about.\""\r\nWe call Beer Esteem a California Common because it is brewed with a lager yeast and it is fermented at warmer ale temperatures. However, Beer Esteem is distinctly different from other California Commons. With a unique hop profile, a lager yeast not typically used for the style, and a \""Russian River\"" twist, Beer Esteem is anything but \""Common.\"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+water_street_lake_country-irish_red,0,0,245744992256,"{""name"":""Irish Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,8,1
+the_church_brew_works-pipe_organ_pale_ale,0,0,245100904449,"{""name"":""Pipe Organ Pale Ale"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""When the British introduced draught pale ale to America, the Pipe Organ Pale Ale is what they had intended. It is truly British in character. Brewed with pale ale malt and a touch of caramel malt, it has a light copper color and subtle body. The maltiness is carefully balanced with only the best English hops - East Kent Goldings. Although this beer has a fair amount of hops, the caramel maltiness perfectly balances its profile."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+samuel_smith_old_brewery_tadcaster-india_ale,0,0,244986413056,"{""name"":""India Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""samuel_smith_old_brewery_tadcaster"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,14,1
+rogue_ales-monk_madness_ale,0,0,245005352960,"{""name"":""Monk Madness Ale"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Let us give praise to our maker and glory to his bounty by learning about beer.\"" ~ Friar Tuck \r\nThe debut of Monk Madness began with the Johns Locker Stock draft program before being released to the Rogue Nation in the autumn of 2006 in 22-ounce bottles and kegs. Five layers of malt create a complex, slightly sweet flavor balanced by five different hop varieties. A versatile and robust ale, we recommend pairing this with spicy foods, stong cheeses, and/or with dessert. \r\n\r\nMonk Madness Ale is brewed with 12 ingredients: 2-row Pale, Belgian Munich, Belgian Special B, Weyermann Melonodon, and Amber Malts; Belgian Nobles, Chinook, Amarillo, Centennial, and Summit Hops; along with free-range coastal water and Rogues proproetary PacMan Yeast. Available in 22 ounce bottles and kegs. Note, Monk Madness was not brewed in the winter of 2007-2008 due to shortages of the speciality malts."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,59,1
+thirstybear_brewing-meyer_esb,0,0,245121482753,"{""name"":""Meyer ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+molson_breweries_of_canada-carling,0,0,244877361153,"{""name"":""Carling"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""molson_breweries_of_canada"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+rivertowne_pour_house-melting_pot_pale_ale,0,0,244987723778,"{""name"":""Melting Pot Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rivertowne_pour_house"",""updated"":""2010-07-22 20:00:20"",""description"":""If you liked the Nobleman this one should blow you away! We took malt and hops from around the world to create this International Pale ale! This beer has an incredible amount of hop flavor and the perfect hop bite!"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+taylor_s_restaurant_and_brewery-amber_ale,0,0,245114994689,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,39,1
+schooner_brewery-rainbow_trout_stout,0,0,245003452417,"{""name"":""Rainbow Trout Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,54,1
+steinfels_back_brau-herbstbier,0,0,245105295360,"{""name"":""Herbstbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steinfels_back_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,16,1
+stone_brewing_co-stone_12_anniversery_bitter_chocolate_oatmeal_stout,0,0,245104902144,"{""name"":""Stone 12 Anniversery Bitter Chocolate Oatmeal Stout"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Anniversary Ale this year stems from 2 pilot beers that were brewed by members of Team Stone. The first was Jeremy Moynier’s incredibly delicious Oatmeal Stout, and the second was Jake Ratzke’s amazing homebrewed Imperial Stout that had authentic Oaxacan chocolate added to the boil. We loved both beers so much that we decided to combine the recipes to make this year’s Anniversary offering: Stone 12th Anniversary Bitter Chocolate Oatmeal Stout. This beer pours deep black with a rich brown head of foam. The aroma is dominated by roast malt and cocoa. Upon tasting, the cocoa (we used unsweetened, unprocessed cacao sourced through our friends at Chuao Chocolatier) really comes through with a deep chocolate flavor and a long lasting bitter finish. The roasted grains used add coffee and licorice accents. It is a thick beer, but not sweet, with the addition of oatmeal in the mash providing a rich, silky mouthfeel that adds to the creamy texture.""}",1,15,1
+water_street_lake_country-old_world_oktoberfest,0,0,245745844224,"{""name"":""Old World Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,13,1
+san_diego_brewing-mission_gorge_porter,0,0,244993359872,"{""name"":""Mission Gorge Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,31,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-aventinus_weizen_eisbock,0,0,244996636672,"{""name"":""Aventinus Weizen-Eisbock"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,38,1
+wynkoop_brewing-b3k_schwarzbier,0,0,245745123330,"{""name"":""B3K Schwarzbier"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This German-style black lager has a deep color and gently roasted flavors balanced by an understated hoppiness. A thirst-quenching version of dark beer. A 2008 Great American Beer Festival Gold Medal Winner in the German Schwarzbier category."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,9,1
+speakeasy_ales_and_lagers-big_daddy_ipa,0,0,245112373249,"{""name"":""Big Daddy IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""speakeasy_ales_and_lagers"",""updated"":""2010-07-22 20:00:20"",""description"":""No lightweight, Big Daddy I.P.A tips the scales with a huge hop flavor and a clean, dry finish that leaves the scene without a trace."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,33,1
+laconner_brewing-laconner_pilsener,0,0,244741963777,"{""name"":""LaConner Pilsener"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""laconner_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,19,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_india_pale_ale,0,0,244864647168,"{""name"":""Nøgne Ø India Pale Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, malty, and very bitter ale. Cascade hops provide a long, fruity, and spicy after-taste.  Recommended serving temperature 10°C/50°F.  Ideal with barbequed or smoked meat dishes."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,18,1
+strangford_lough_brewing_company_ltd-st_patrick_s_gold,0,0,245110341633,"{""name"":""St. Patrick's Gold"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""strangford_lough_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Our smooth yet powerful wheat beer is unusually refreshing on the pallet.  Golden in colour, St. Patrick's Gold is brewed with barley and wheat malt. Citrus peel and coriander are added to the Goldings and Saaz hops for a symphony of authentic flavour."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,28,1
+pyramid_ales_brewery-pyramid_apricot_weizen,0,0,245003714562,"{""name"":""Pyramid Apricot Weizen"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_ales_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed by the original Wheat Beer Pioneers, Pyramid Apricot Weizen Ale is left unfiltered for extra flavor and aroma. \r\n\r\nThe gold medalist of fruit beers, Pyramid Apricot Weizen is an adventurous wheat ale that offers the pleasing aroma and flavor of fresh apricots, and smooth and refreshing character for which our wheat beers are known."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,55,1
+wh_brakspear_sons-coniston_bluebird_bitter,0,0,245751414784,"{""name"":""Coniston Bluebird Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wh_brakspear_sons"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,52,1
+stoudt_s_brewery,0,0,245102542848,"{""name"":""Stoudt's Brewery"",""city"":""Adamstown"",""state"":""Pennsylvania"",""code"":""19501"",""country"":""United States"",""phone"":""717-484-4386"",""website"":""http://www.stoudtsbeer.com/brewery.html"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Over 20 years, Stoudt's Brewing Company has grown and evolved from a small brewery with limited draught distribution, to a packaging regional microbrewery with distribution in 10 different states, producing over 10,000 barrels a year. Even with the growth over the years, one thing has always remained constant, and that is the attention to detail that goes into every batch of handcrafted beer that is traditionally brewed, packaged and sold with passion by our small team of hardworking dedicated employees. A tradition that was started by Ed and Carol and will be carried on by their children for many years to come"",""address"":[""2800 North Reading Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.2369,""lon"":-76.072}}",1,10,1
+mad_crab_restaurant_and_brewery-buzz_beer,0,0,244876836864,"{""name"":""Buzz Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mad_crab_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+new_glarus_brewing_company-symposium_eisbock,0,0,244862353409,"{""name"":""Symposium Eisbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,12,1
+mehana_brewing-red_ale,0,0,244880506881,"{""name"":""Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mehana_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,57,1
+pennichuck_brewing_company-engine_5,0,0,245004959745,"{""name"":""Engine 5"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+strangford_lough_brewing_company_ltd-legbiter_ale,0,0,245103198210,"{""name"":""Legbiter Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""strangford_lough_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Brilliant golden ale with an inviting citrus fragrance of late added Cascade and Glacier hops. The fine hop and light malt aromas carry through to the palate to give an ale that is full but refreshing, with a clean caramel malt bitter finish."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,11,1
+nicolet_brewing-dark_pilsener,0,0,244870873088,"{""name"":""Dark Pilsener"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nicolet_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+moose_s_tooth_pub_and_pizzeria-fairweather_ipa,0,0,244871200770,"{""name"":""Fairweather IPA"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moose_s_tooth_pub_and_pizzeria"",""updated"":""2010-07-22 20:00:20"",""description"":""A hop lover and beer connoisseur's favorite, this ale is surprisingly drinkable and fully delights with its hoppy aromatics. Stick your nose in this one."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,35,1
+sacramento_brewing_company-sacramento_nut_brown_ale,0,0,244996308993,"{""name"":""Sacramento Nut Brown Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sacramento_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A malty dark ale wtih ale with a chocolate and biscuit like flavor and balanced finish."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,37,1
+yazoo_brewing,0,0,245745057792,"{""name"":""Yazoo Brewing"",""city"":""Nashville"",""state"":""Tennessee"",""code"":""37203"",""country"":""United States"",""phone"":""615-891-4649"",""website"":""http://www.yazoobrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""910 Division St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.151,""lon"":-86.7821}}",1,8,1
+the_livery-laughing_dragon,0,0,245100904450,"{""name"":""Laughing Dragon"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Named for our friend and patron Tad Eastman, whose Laughing Dragon Tie-Dye studio puts out our fabulous shirts-each one an individual work of art signed by Tad! Reddish Amber in color, this beer has a very bold Chinook hop character."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+san_marcos_brewery_grill-honey_ale,0,0,244986413057,"{""name"":""Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+rogue_ales-old_crustacean_barleywine_1993,0,0,245005352961,"{""name"":""Old Crustacean Barleywine 1993"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,59,1
+thunderhead_brewery-summer_gueuze,0,0,245121482754,"{""name"":""Summer Gueuze"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,56,1
+nogne_o_det_kompromisslose_bryggeri_a_s,0,0,244877426688,"{""name"":""Nøgne Ø - Det Kompromissløse Bryggeri A/S"",""city"":""Grimstad"",""state"":""Lunde"",""code"":"""",""country"":""Norway"",""phone"":""47-37-25-74-00"",""website"":""http://nogne-o.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Nøgne Ø was created by two home brewers. Unable to stay at home we started Norway's first microbrewery for creative brewing. Some times, when we get a momentary glimpse of sanity, we ask ourselves what we have achieved. We think we can say that we have achieved some level of fame, at least locally and among dedicated beer geeks around the world. But more important - before we started Nøgne Ø most Norwegians did not know much about beer styles like IPA, Porter or Amber. This has for sure started to change, and we do feel that we have contributed to what you can call a renaissance of Norwegian beer-culture.  Diversity was one of our main goals - and it does seem like diversity in the world of beers is starting to come back."",""address"":[""Gamle Rygene Kraftstasjon""]}",1,50,1
+rock_art_brewery-ridge_runner_barley_wine,0,0,244987789312,"{""name"":""Ridge Runner Barley Wine"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_art_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""“Robust, Dark and Smooth, hold on to your hat cause you’ll lose your feet on this one!” Brewed with pale, dark crystal, Munich, flaked barley, black and chocolate malts. Hops include Cascade, Crystal, Challenger and Perle.""}",1,17,1
+the_alchemist-piston_bitter,0,0,245114994690,"{""name"":""Piston Bitter"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""A full bodied special bitter brewed with British malt and American hops"",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,39,1
+seabright_brewery-pelican_pale,0,0,245003517952,"{""name"":""Pelican Pale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,54,1
+stone_brewing_co-vertical_epic_07_07_07,0,0,245105295361,"{""name"":""Vertical Epic 07.07.07"",""abv"":8.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+sweetwater_tavern_centreville-high_desert_imperial_stout,0,0,245104902145,"{""name"":""High Desert Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_tavern_centreville"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,15,1
+weyerbacher_brewing_company-blithering_idiot,0,0,245745844225,"{""name"":""Blithering Idiot"",""abv"":11.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""At Weyerbacher, we prefer to brew things true to European style guidelines. Consequently our barley wine is  on the malty side, yet not  overly sweet. Notes of date or perhaps fig on the palate follow a pleasurably malty aroma to your taste buds. The finish is warm and fruity, and begs for the next sip.\r\n\r\nEnjoy Blithering Idiot in a brandy snifter or wine glass, preferably in front of the fire, or accompanying a literary classic. This is the finest life has to offer and should be treated as such. Moments of reflection make all the toil worthwhile, and Blithering Idiot is for moments like these. Share it with your family over the holiday dinner. Lay a few down, aging only helps a barley wine develop more class. At 11.1 % ABV (alcohol by volume) this fine ale will keep for years. Our expected maximum shelf-life is 2 to 3 years. Although it might see a decade, beyond the 3rd year most barley-wines have a tendency to decrease in complexity, so don't wait too long"",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,13,1
+sand_creek_brewing_company-oderbolz_bock,0,0,244993359873,"{""name"":""Oderbolz Bock"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sand_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,31,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-aventinus_weizenstarkbier_doppel_weizen_bock,0,0,244996702208,"{""name"":""Aventinus Weizenstarkbier / Doppel Weizen Bock"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark-ruby, almost black-colored and streaked with fine top-fermenting yeast, this beer has a compact and persistent head. This is a very intense wheat doppelbock with a complex spicy chocolate-like arome with a hint of banana and raisins. On the palate, you experience a soft touch and on the tongue it is very rich and complex, though fresh with a hint of caramel. It finishes in a rich soft and lightly bitter impression."",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,38,1
+wynkoop_brewing-obamanator_maibock,0,0,245745188864,"{""name"":""Obamanator Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,9,1
+steinfels_back_brau-huusbier,0,0,245112373250,"{""name"":""Huusbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steinfels_back_brau"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+little_apple_brewing-wildcat_wheat,0,0,244864778240,"{""name"":""Wildcat Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""little_apple_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+northwoods_brewpub_grill-whitetail_wheat,0,0,244864647169,"{""name"":""Whitetail Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+thirsty_dog_brewing-barktoberfest,0,0,245110407168,"{""name"":""Barktoberfest"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A traditional old world German Oktoberfest made with German grains, yeast and hops."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,28,1
+rch_brewery-ale_mary,0,0,245003780096,"{""name"":""Ale Mary"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rch_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+wild_onion_brewing-jack_stout,0,0,245751414785,"{""name"":""Jack Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_onion_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,52,1
+strangford_lough_brewing_company_ltd-barelegs_brew,0,0,245102542849,"{""name"":""Barelegs Brew"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""strangford_lough_brewing_company_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Golden with a hint of red (towards sunset). Barelegs tastes of fresh fruit, especially red current and malt fragrance. Full drinking with a subtle hoppy finish. Refreshing for a beer of this strength."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,10,1
+magic_hat-wacko,0,0,244876902400,"{""name"":""Wacko"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""magic_hat"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer truly defies style. A portion of the fermentable sugars that make up this beer come from beet sugar. Real beet extract is used which gives the beer a beautiful light red color. It’s body is inviting and the taste is smooth. Hops are barely perceivable and are there to balance out the sweetness from the malt."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,49,1
+new_glarus_brewing_company-totally_naked,0,0,244862353410,"{""name"":""Totally Naked"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Pure and crisp this is a beer with nothing to hide. Wisconsin two-row barley malt ensures a mellow and smooth body. We imported Noble Hop varieties from Germany and the Czech Republic to ensure a fine mature aroma with no coarse bitterness. Expect this beer to pour a delicate golden hue that sparkles in the summer sun. This lager is brewed using all natural ingredients with no artificial additives of any kind. Kick back, relax and enjoy the simple unadorned flavor. This is beer at its most basic."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+millrose_brewing-wheat_honey_ale,0,0,244880572416,"{""name"":""Wheat Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""millrose_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,57,1
+portsmouth_brewery,0,0,245004959746,"{""name"":""Portsmouth Brewery"",""city"":""Portsmouth"",""state"":""New Hampshire"",""code"":""3801"",""country"":""United States"",""phone"":""1-603-431-1115"",""website"":""http://www.portsmouthbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Portsmouth Brewery, New Hampshire's first brewpub, was founded in 1991, four years after its sister company, the Northampton Brewery, opened in Western Massachusetts. Peter Egelston, Head Brewer in Northampton from 1987 until 1991, moved to Portsmouth to set up the new brewery here. (Egelston is now the sole proprietor of the Brewery.) The brewing system consists of a custom made seven-barrel (210 gallons) JV Northwest brewhouse, two fourteen-barrel and three seven-barrel JV Northwest unitank (cylindroconical) fermenters, two fourteen-barrel horizontal fermenters (added later, in 1994), and twelve seven-barrel grundy cellar tanks. Originally, the Portsmouth Brewery opened with beer recipes from Northampton - Pale Ale, Old Brown Dog, Weizenheimer, Black Cat Stout, Blonde Ale, Golden and Amber Lagers - and these still comprise the core of the Brewery's full-time beers today. However, over the years, successive brewers have contributed many outstanding seasonal and specialty beers to the list. Head Brewer Tod Mott arrived in late 2003, bringing with him is award-winning ways and oursized personality. All of the beers served at the Portsmouth Brewery are brewed right here on premise, with the exception of those beers, such as Shoals Pale Ale and Portsmouth Lager, brewed at Smuttynose Brewing Company, our sister company. --http://www.portsmouthbrewery.com/htmlpages.portsmouth/beerlist.html"",""address"":[""56 Market Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.0781,""lon"":-70.7575}}",1,58,1
+sudwerk_privatbrauerei_hbsch-doppelbock,0,0,245103263744,"{""name"":""Doppelbock"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sudwerk_privatbrauerei_hbsch"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,11,1
+north_country_brewery-station_33_firehouse_red,0,0,244870873089,"{""name"":""Station 33 Firehouse Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This red is a rich, malty, ruby-colored ale with a smooth finish."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,34,1
+murphy_s_wagon_wheel-american_pilsner,0,0,244871266304,"{""name"":""American Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""murphy_s_wagon_wheel"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+saint_louis_brewery_schlafy_tap_room-schlafly_smoked_porter,0,0,244996308994,"{""name"":""Schlafly Smoked Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+thunderhead_brewery-chinook_amber,0,0,245100969984,"{""name"":""Chinook Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,7,1
+shipyard_brewing_portland-pumpkinhead_ale,0,0,244986478592,"{""name"":""Pumpkinhead Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipyard_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,14,1
+roy_pitz_brewing_company-ichabod_s_midnight_ride,0,0,245005352962,"{""name"":""Ichabod's Midnight Ride"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roy_pitz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian style pumpkin ale was inspired by the legendary midnight ride of Ichabod Crane. It is a Belgian style ale complimented by a light touch of pumpkin and spice. Fresh toasted pumpkins are added in the mash with the grains adding a touch of the season to the brew. The complex fruitiness and dryness of the yeast is enhanced by the addition of sugars during fermantation. The beer is lightly spiced with pumpkin spice, all spice, and brown sugar. The pale and toasted malts used, provide a pie crust taste and smell in the beer as the higher alcohol's produced round out the finish."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,59,1
+titletown_brewing-red_lager,0,0,245121548288,"{""name"":""Red Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,56,1
+olde_main_brewing-mild_brown,0,0,244877426689,"{""name"":""Mild Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_main_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,50,1
+rogue_ales-old_crustacean_barleywine_1996,0,0,244987789313,"{""name"":""Old Crustacean Barleywine 1996"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+three_needs_brewery_and_taproom,0,0,245114994691,"{""name"":""Three Needs Brewery and Taproom"",""city"":""Burlington"",""state"":""Vermont"",""code"":""5401"",""country"":""United States"",""phone"":""1-802-658-0889"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Freshly-brewed self and local beers, as well as a small but decent selection of beers on tap. Red felt pool table in the back, and friendly barstaff."",""address"":[""207 College Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.4771,""lon"":-73.2115}}",1,39,1
+second_street_brewery-second_street_ipa,0,0,245003517953,"{""name"":""Second Street IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""second_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,54,1
+stoudt_s_brewery-stoudt_s_gold_lager,0,0,245105360896,"{""name"":""Stoudt's Gold Lager"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stoudt_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Stoudt's Gold Lager is widely recognized as one of the finest German-style beers brewed in America.  Brewed with the finest specialty malts and noble hops, this light bodied, easy drinking lager features a subtle balance of sweet malt and clean crisp hops."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+tailgate_beer-tailgate_brown_ale,0,0,245104902146,"{""name"":""Tailgate Brown Ale"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tailgate_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""This is your solution to the same ol' ho hum brown ale you drink all the time. This ale might be dark and intimidating in a glass, yet the first sip proves to be a surprisingly refreshing assault on your taste buds. Complex blends of chocolate and roasted oats complement the essence of bittering hops, and sweet malts.  The balanced combination makes this full flavored ale one to be enjoyed in any occasion."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,15,1
+yuksom_breweries-yeti_special_export,0,0,245745909760,"{""name"":""Yeti Special Export"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuksom_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,13,1
+sanford_s_grub_and_pub-red_line_amber,0,0,244993425408,"{""name"":""Red Line Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sanford_s_grub_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,31,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh-hopfen_weisse,0,0,244996702209,"{""name"":""Hopfen Weisse"",""abv"":8.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""private_weissbierbrauerei_g_schneider_sohn_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""Schneider & Brooklyner Hopfen-Weisse is a collaboration between brewmasters Hans-Peter Drexler of the Schneider Weissbier Brewery and Garrett Oliver of the Brooklyn Brewery. Garrett and Hans-Peter have long admired each others beers. Now together they bring you a new sensation, a pale weissbock robustly dry-hopped with the Hallertauer Saphir variety grown in the fields near the Schneider brewery. Hoppy, zesty and supremely refreshing, Scheider & Brooklyner Hopfen-Weisse is a delicious blend of Bavarian craftsmanship and American ingenuity."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+yegua_creek_brewing_dallas-blueberry_blonde,0,0,245745188865,"{""name"":""Blueberry Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yegua_creek_brewing_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,9,1
+stevens_point_brewery-special_beer,0,0,245112438784,"{""name"":""Special Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,33,1
+mercury_brewing_company-ipswich_original_ale,0,0,244864843776,"{""name"":""Ipswich Original Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Named one of the World's Ten Best Beers by Wine Spectator Magazine, Ipswich Ale has satisfied discerning craft beer drinkers since 1991. A North Shore classic, Ipswich Ale is a medium-bodied, unfiltered English style pale ale with subtle hoppiness and a smooth malty flavor."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,19,1
+oaken_barrel_brewing-snake_pit_porter,0,0,244864712704,"{""name"":""Snake Pit Porter"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oaken_barrel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,18,1
+thirsty_dog_brewing-maibark,0,0,245110407169,"{""name"":""Maibark"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Golden, easy drinking, traditional example of Maibock. All German grains, yeast and hops."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,28,1
+richbrau_brewing_company-big_nasty_porter,0,0,245003780097,"{""name"":""Big Nasty Porter"",""abv"":6.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark brown porter has more bark than bite. It is actually fairly sweet and fruity with a nutty/chocolate flavor as well. Highly recommended."",""style"":""Porter"",""category"":""Irish Ale""}",1,55,1
+yakima_brewing_and_malting_grant_s_ales,0,0,245751414786,"{""name"":""Yakima Brewing and Malting / Grant's Ales"",""city"":""Yakima"",""state"":""Washington"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":46.6021,""lon"":-120.506}}",1,52,1
+tabernash_brewing-golden_pale,0,0,245102542850,"{""name"":""Golden Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tabernash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+maui_brewing_co-maui_coconut_porter,0,0,244876902401,"{""name"":""Maui Coconut Porter"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""maui_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Coconut Porter is a classic robust porter spiced with all natural toasted coconut.  It is black in color and crowned with a creamy, dark tan head.   It begins with a malty-toasted coconut aroma followed by a rich, silky feel with tastes of dark malt, chocolate, and hints of coffee.  It then finishes with flavors of  toasted coconut and hoppy spice to balance the finish."",""style"":""Porter"",""category"":""Irish Ale""}",1,49,1
+new_zealand_breweries_limited,0,0,244862418944,"{""name"":""New Zealand Breweries Limited"",""city"":"""",""state"":"""",""code"":"""",""country"":""New Zealand"",""phone"":"""",""website"":""http://www.steinlager.co.nz/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,12,1
+nethergate_brewery_co_ltd,0,0,244880572417,"{""name"":""Nethergate Brewery Co Ltd"",""city"":""Pentlow"",""state"":""Essex"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01787)-283220"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""The Street""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":52.081,""lon"":0.6559}}",1,57,1
+raccoon_lodge_and_brewpub_cascade_brewing-bad_billy_blond_bock,0,0,245005025280,"{""name"":""Bad Billy Blond Bock"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Blond Bock is gold in color and features a malty profile and a spicy finish courtesy of Saaz hops. This beer boasts the flavor of a traditional Bock without the cloying aftertaste."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,58,1
+the_alchemist-pappy_s_porter,0,0,245103263745,"{""name"":""Pappy's Porter"",""abv"":5.42,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark mahogany ale has agreat and delicious malt depth, yet is balanced with supple, energizing bitterness."",""style"":""Porter"",""category"":""Irish Ale""}",1,11,1
+oak_creek_brewery-doc_s_pale_ale,0,0,244870873090,"{""name"":""Doc's Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oak_creek_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,34,1
+nodding_head_brewpub-wee_heavier,0,0,244871266305,"{""name"":""Wee Heavier"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nodding_head_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,35,1
+san_marcos_brewery_grill-caber_tossed,0,0,244996374528,"{""name"":""Caber Tossed"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+titletown_brewing-czech_mate_pilsner,0,0,245100969985,"{""name"":""Czech Mate Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+shmaltz_brewing_company-genesis,0,0,244986478593,"{""name"":""Genesis"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shmaltz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,14,1
+rubicon_brewing,0,0,245005418496,"{""name"":""Rubicon Brewing"",""city"":""Sacramento"",""state"":""California"",""code"":""95814"",""country"":""United States"",""phone"":""1-916-448-7032"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2004 Capitol Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.5731,""lon"":-121.481}}",1,59,1
+titletown_brewing-saison,0,0,245121548289,"{""name"":""Saison"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,56,1
+olde_peninsula_brewpub_and_restaurant-sunset_red,0,0,244877426690,"{""name"":""Sunset Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+rowland_s_calumet_brewery,0,0,244987789314,"{""name"":""Rowland's Calumet Brewery"",""city"":""Chilton"",""state"":""Wisconsin"",""code"":""53014"",""country"":""United States"",""phone"":""1-920-849-2534"",""website"":""http://rowlandsbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""25 North Madison St""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.0291,""lon"":-88.1629}}",1,17,1
+tied_house_cafe_brewery_san_jose-oatmeal_stout,0,0,245115060224,"{""name"":""Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,39,1
+simmerberg_brusttt_und_taferne-festbier,0,0,245003517954,"{""name"":""Festbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""simmerberg_brusttt_und_taferne"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,54,1
+sturgeon_bay_brewing-highway_to_helles,0,0,245105360897,"{""name"":""Highway to Helles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sturgeon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+thirsty_dog_brewing-dierdorfer_gold,0,0,245104967680,"{""name"":""Dierdorfer Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+seabright_brewery,0,0,244993490944,"{""name"":""Seabright Brewery"",""city"":""Santa Cruz"",""state"":""California"",""code"":""95062"",""country"":""United States"",""phone"":""1-408-426-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""519 Seabright Avenue #107""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":36.9676,""lon"":-122.008}}",1,31,1
+raccoon_lodge_and_brewpub_cascade_brewing-old_salt_ipa,0,0,244996702210,"{""name"":""Old Salt IPA"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Our India Pale Ale is hoppy and bitter with a nice sweet malt finish. Slow dry-hop conditioning brings out the herbal hop aromas."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+surly_brewing-furious_beer,0,0,245112438785,"{""name"":""Furious Beer"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""surly_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Like Hops? You'll like this fire-hued beer. This is the beer I have always dreamed of making. This is the beer that would come to mind while spending the last two years tearing down walls, hanging sheetrock, moving kegs, power washing the ceilings, arguing with various agencies, and cutting the water main. \r\n\r\nWithout Golden Promise malt, made by family-owned Simpsons Malt, Furious would just be pissed off-ed. From Scotland, this malt is still produced in the tradition of turning over the barley by hand, resulting in a malt that is unsurpassed in its quality. Golden Promise is also used extensively by premium whisky distilleries such as The Macallan. This malt provides the backbone for the intense hop character. Four American hop varieties are used at a rate of over three pounds per barrel. The result is a rich malt sweetness infused with bright hop flavor and aroma from beginning to end. Oh yeah, it's about 6% alcohol and around 100 IBUs."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,33,1
+mercury_brewing_company-ipswich_summer,0,0,244864843777,"{""name"":""Ipswich Summer"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mercury_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A light-bodied, unfiltered Blonde ale that retains the bold flavors typical of an Ipswich Ale, our Summer Ale is light enough for a hot summer day and can satisfy even the most scorching thirst."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,19,1
+old_hat_brewery-red_lager,0,0,244864712705,"{""name"":""Red Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_hat_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+thirsty_dog_brewing-rasberry_ale,0,0,245110407170,"{""name"":""Rasberry Ale"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The inviting flavor and aroma of freshly picked raspberries is naturally infused in this unique, refreshing fruit beer. Raspberry Ale is brewed in the typical Thirsty Dog fashion, full of flavor and uninhibited"",""style"":""Fruit Beer"",""category"":""Other Style""}",1,28,1
+rivertowne_pour_house-shepard_s_crook_scotish_ale,0,0,245003780098,"{""name"":""Shepard's Crook Scotish Ale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rivertowne_pour_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Medium in body, brown in color, this ale is delightfully malty with complex caramel overtones lending to the smoothest finish you will ever experience! Don’t be afraid of the dark and try this deceptive delight!!!"",""style"":""Scotch Ale"",""category"":""British Ale""}",1,55,1
+tenaya_creek_restaurant_and_brewery-india_pale_ale,0,0,245102608384,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tenaya_creek_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,10,1
+mendocino_brewing_hopland,0,0,244876967936,"{""name"":""Mendocino Brewing - Hopland"",""city"":""Hopland"",""state"":""California"",""code"":""95449"",""country"":""United States"",""phone"":""1-707-744-1361"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""13351 Highway 101""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.9734,""lon"":-123.116}}",1,49,1
+nor_wester_brewery_and_public_house-raspberry_weizen,0,0,244862418945,"{""name"":""Raspberry Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nor_wester_brewery_and_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,12,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_wit,0,0,244880637952,"{""name"":""Nøgne Ø Wit"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""This Belgian Ale is what you could call a wit with an attitude.  We are generous with all our ingredients - including both orange peel and coriander.  This does not stop this ale from being a good companion with seafood dishes."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,57,1
+red_oak_brewery-hummin_bird,0,0,245005025281,"{""name"":""Hummin Bird"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_oak_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Hummin' Bird is a Light Lager or Hell (Helles) similar to those found throughout Bavaria. We use carefully selected Pilsner Malt…then it is delicately hopped with imported Tettnang Noble Hops. Then we add a proprietary lager yeast strain which is not filtered out providing ones daily supply of vitamin B.  Hummin' Bird is slow-cold aged for over one month resulting in a lush mouth feel."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,58,1
+the_church_brew_works-celestial_gold,0,0,245103263746,"{""name"":""Celestial Gold"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""This beer is golden in color with a light bubbly effervescence. The light body makes this lager beer appropriate for a business lunch or your evening sipping beer. The light malt flavor also accentuates the hop flavor. From the start, you will notice a fine hop aroma. As you sip the Celestial Gold, the subdued maltiness blends with a slight hop flavor. When this beer finishes, you will notice a pleasant hop bitterness. The bitterness will be mild and quite appropriate. Celestial Gold has been known to induce Celestial bliss."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,11,1
+oaken_barrel_brewing-indiana_amber,0,0,244870938624,"{""name"":""Indiana Amber"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oaken_barrel_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,34,1
+nogne_o_det_kompromisslose_bryggeri_a_s-nogne_o_porter,0,0,244871266306,"{""name"":""Nøgne Ø Porter"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nogne_o_det_kompromisslose_bryggeri_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":""In this quite dark ale, dark malts provide flavors of coffee and dried fruit. Recommended serving temperature 10°C/50°F.  Try with dark chocolate, cheese, or red meat dishes."",""style"":""Porter"",""category"":""Irish Ale""}",1,35,1
+schlossbru-spezial,0,0,244996374529,"{""name"":""Spezial"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlossbru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+tomos_watkin_and_sons_ltd-osb_premium_ale,0,0,245100969986,"{""name"":""OSB Premium Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tomos_watkin_and_sons_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,7,1
+sierra_nevada_brewing_co-sierra_nevada_kellerweis,0,0,244986544128,"{""name"":""Sierra Nevada Kellerweis"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,14,1
+russell_brewing-special_lager,0,0,245005418497,"{""name"":""Special Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+titletown_brewing,0,0,245121613824,"{""name"":""Titletown Brewing"",""city"":""Green Bay"",""state"":""Wisconsin"",""code"":""54303"",""country"":""United States"",""phone"":""1-920-437-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""200 Dousman Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.52,""lon"":-88.0173}}",1,56,1
+on_tap_bistro_brewery-hazy_daze_hefeweizen,0,0,244877492224,"{""name"":""Hazy Daze Hefeweizen"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""on_tap_bistro_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,50,1
+saint_somewhere_brewing_company,0,0,244987854848,"{""name"":""Saint Somewhere Brewing Company"",""city"":""Tarpon Springs"",""state"":""Florida"",""code"":""34689"",""country"":""United States"",""phone"":""813-503-6181"",""website"":""http://www.saintsomewherebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Saint Somewhere is a small batch brewery, located in Tarpon Springs, Florida. We specialize in traditionally brewed, hand crafted Belgian Style Ales. Our first offerings are... Saison Athene , a bottle conditioned Saison with a spicy and moderately hoppy profile true to the traditions of the farmhouse ales of Wallonia. Lectio Divina,  brewed in the spirit of the abbey ales of Belgium. Brewed with the same care and attention to the Art of Brewing that is practiced in the monastic breweries of Belgium. Pays du Soleil, brewed with palmetto berries and hibiscus should be out this fall!"",""address"":[""1441 Savannah Ave Unit E""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":28.1646,""lon"":-82.7717}}",1,17,1
+timmermans,0,0,245115060225,"{""name"":""Timmermans"",""city"":""Itterbeek"",""state"":"""",""code"":""1701"",""country"":""Belgium"",""phone"":""3225690357"",""website"":""http://www.anthonymartin.be/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Timmermans brews only traditional Lambic; the basic beer that, from spontaneous fermentation, is used throughout the entire range. Brewing Lambic, without adding yeast, is a complex and subtle art requiring recipes and patience passed on by the family. Lambics survive thanks to a handful of Brussels breweries and the presence of two micro-organisms that exist only in the Senne Valley: Brettanomyces Bruxellensis and Brettanomyces Lambicus. By adding fruit and spices, the magic of traditionallymade beers unravels: Strawberry, Kriek, Pêche, Framboise, Forest Fruit, but also Oude Gueuze, Kriek Retro, Gueuze, Faro or Lambicus Blanche. A unique site: open daily (including weekends), booking required. Possibilities for your meetings and banquets."",""address"":[""Kerkstraat 11""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":50.8399,""lon"":4.2475}}",1,39,1
+skagit_river_brewing-red_card_lager,0,0,245003517955,"{""name"":""Red Card Lager"",""abv"":6.65,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+sturgeon_bay_brewing-lighthouse_amber_lager,0,0,245105360898,"{""name"":""Lighthouse Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sturgeon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,16,1
+three_floyds_brewing-alpha_king_pale_ale,0,0,245104967681,"{""name"":""Alpha King Pale Ale"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Big American Pale Ale with citrusy aroma- a hop lover’s cult beer and Three Floyds’ flagship beer Brewed with Cenntennial, Cascade & Warrior Hops"",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+slab_city_brewing-esker_alt,0,0,244993490945,"{""name"":""Esker Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slab_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,31,1
+richbrau_brewing_company-santa_s_little_helper_witbier,0,0,244996702211,"{""name"":""Santa's Little Helper Witbier"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""We brewed this pleasantly aromatic wheat beer with the addition of bitter orange peel, coriander and a Belgian Abbey ale yeast strain. This beer is unfiltered and its flavor is tart but sweet and perfumey."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,38,1
+the_livery-maillot_jaune,0,0,245112504320,"{""name"":""Maillot Jaune"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Maillot Jaune, or \""Yellow Shirt\"", is named for the jersey of honor given to the leader of the Tour De France bicycle race held every July. American Lance Armstrong is the only person in history to wear the Maillot Jaune 7 times in a row! Golden in color and blessed with a kiss of hop bitterness, this ale is also available barrel aged. Steve swears that he does not use any performance enhancing drugs in the production of this beer!"",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,33,1
+mickey_finn_s_brewery-five_springs_oatmeal_stout,0,0,244864843778,"{""name"":""Five Springs Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mickey_finn_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+otter_creek_brewing_wolaver_s_organic_ales-white_sail,0,0,244864712706,"{""name"":""White Sail"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""White Sail is a Belgian-style white beer, craft brewed with wheat, malted barley, hops, and a little bit of coriander and orange peel. It is mild yet flavorful, with fruity undertones and a haze from the yeast and wheat. This ale is delicious on its own, or with a slice of orange."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,18,1
+thunderhead_brewery_2-amber_ale,0,0,245110472704,"{""name"":""Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+rock_bottom_restaurant_brewery_milwaukee-barleywine,0,0,245003780099,"{""name"":""Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_milwaukee"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+terrapin_beer_company-the_iron_tankard,0,0,245102608385,"{""name"":""The Iron Tankard"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Brew 1 – March – “The Iron Tankard” Old Stock Ale – The building started as a YMCA in 1889 and had a huge iron swimming pool in the basement.\r\n\r\nFrom Spike: Iron Tankard “Old Stock Ale” is the first of four beers in Terrapin’s Georgia Theatre Sessions. It is brewed with a generous portion of crystal malts for a full body and is lightly hopped. This malt forward beer has flavors of dark dried fruit, mellow alcoholic warmth and is unfiltered for your listening pleasure.\r\n\r\nA portion of the proceeds will be donated to the Georgia Historic Trust for Historic Preservation Fund to rebuild the Georgia Theater. To make things even more interesting, there is one Golden Ticket hidden among each of the Georgia Theater Sessions brews. This means that four lucky winners will receive a lifetime pass to the new Theater."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,10,1
+michigan_brewing,0,0,244876967937,"{""name"":""Michigan Brewing"",""city"":""Webberville"",""state"":""Michigan"",""code"":""48892"",""country"":""United States"",""phone"":""1-517-521-3600"",""website"":""http://www.michiganbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1093 Highview Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.6616,""lon"":-84.1946}}",1,49,1
+north_country_brewery-creamation_ale,0,0,244862418946,"{""name"":""Creamation Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_country_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""This style of beer is light to medium in body (mouth-feel) with very little hop character. The brewer says “a good beer to try if you’re a Northern Lite drinker”"",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,12,1
+northwest_brewwrks-kirkland_ale,0,0,244880637953,"{""name"":""Kirkland Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwest_brewwrks"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,57,1
+river_west_brewing-red_fox_amber,0,0,245005090816,"{""name"":""Red Fox Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,58,1
+the_lost_abbey-avant_garde,0,0,245103329280,"{""name"":""Avant Garde"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""From the French word “Garde” meaning something worth keeping, this Biere de Garde styled Farmhouse Ale is a most delicious companion to a loaf of freshly baked bread from the oven. Grab a seat on the porch, some soft cheese and a tree ripened apple from your grandmother’s old orchard. Relax and watch the evening arrive as the afternoon sun is consumed by the illuminating moon over the gardens. We brewed Avant Garde for you, our friends and families. Here’s to things worth guarding over."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,11,1
+pabst_brewing_company-piels_light,0,0,244870938625,"{""name"":""Piels Light"",""abv"":3.79,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pabst_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Over a century of brewing skill, along with the finest ingredients obtainable, has resulted in a beer unique for its balance of lightness and delicious flavor."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,34,1
+old_dominion_brewing_co-hop_mountain,0,0,244871266307,"{""name"":""Hop Mountain"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""old_dominion_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+schlossbru-stout,0,0,244996374530,"{""name"":""Stout"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlossbru"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,37,1
+tuppers_hop_pocket_ale,0,0,245101035520,"{""name"":""Tuppers Hop Pocket Ale"",""city"":""Bethesda"",""state"":""Maryland"",""code"":""20817"",""country"":""United States"",""phone"":""1-301-229-2027"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""6404 Redwing Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.9735,""lon"":-77.1272}}",1,7,1
+skagit_river_brewing-navidad,0,0,244986544129,"{""name"":""Navidad"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,14,1
+schlobrauerei_reckendorf-weissbier,0,0,245005418498,"{""name"":""Weissbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlobrauerei_reckendorf"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,59,1
+tyranena_brewing-bitter_woman_in_the_rye,0,0,245121613825,"{""name"":""Bitter Woman in the Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,56,1
+otto_s_pub_and_brewery-otto_s_hefeweizen,0,0,244877492225,"{""name"":""Otto's Hefeweizen"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otto_s_pub_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A south German style wheat ale. This beer is served traditionally cloudy due to the suspended yeast (hefe=yeast). Strong spicy clove flavors and light banana esters are characteristics of a different yeast strain we are trying."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,50,1
+sea_dog_brewing_company,0,0,244987854849,"{""name"":""Sea Dog Brewing Company"",""city"":""Bangor"",""state"":""Maine"",""code"":""4401"",""country"":""United States"",""phone"":""207.947.8009"",""website"":""http://www.seadogbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Today, Sea Dog Brewing Company operates brew pubs in two locations. The Sea Dog in Topsham occupies a scenic spot on the Androscoggin River. The Bangor location overlooks the historic Penobscot River. Both locations serve a full menu of handcrafted ales and creative pub fare with a flair. Being authentic is important to us. Our beers are brewed in a traditional style using only the highest quality ingredients like imported English two-row malted barley and British top-fermenting yeast. Our English brewing style results in brews with a distinctive, refreshing taste and crisp finish unique to top-fermented beers."",""address"":[""26 Front Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.7974,""lon"":-68.77}}",1,17,1
+tyskie_browary_ksiazece,0,0,245115125760,"{""name"":""Tyskie Browary Książęce"",""city"":""Tychy"",""state"":"""",""code"":"""",""country"":""Poland"",""phone"":""48-32-327-81-00"",""website"":""http://www.tyskie.pl/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Mikolowska 5""]}",1,39,1
+sly_fox_brewhouse_and_eatery_royersford-phoenix_pale_ale,0,0,245120630784,"{""name"":""Phoenix Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,54,1
+sullivan_s_black_forest_brew_haus_grill-grateful_red,0,0,245105426432,"{""name"":""Grateful Red"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""Making Jerry proud with an amber ale that's slightly malty and very tasty."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,16,1
+titletown_brewing-belgian_trippel,0,0,245104967682,"{""name"":""Belgian Trippel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+sleeman_brewing_malting,0,0,244993490946,"{""name"":""Sleeman Brewing & Malting"",""city"":""Guelph"",""state"":""Ontario"",""code"":""0"",""country"":""Canada"",""phone"":""1-519-822-1834"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""551 Clair Road West""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.487,""lon"":-80.2068}}",1,31,1
+rio_salado_brewing-thunderhead_schwarz_bier,0,0,244996767744,"{""name"":""Thunderhead Schwarz Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rio_salado_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,38,1
+thirsty_dog_brewing-irish_setter_red_ale,0,0,245112504321,"{""name"":""Irish Setter Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirsty_dog_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,33,1
+middle_ages_brewing-black_heart_stout,0,0,244864909312,"{""name"":""Black Heart Stout"",""abv"":6.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""middle_ages_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Generous portions of roasted barley, black and chocolate malts which leave \""coffee\"" overtones lingering on the palate."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+park_city_brewing-steamer,0,0,244987985920,"{""name"":""Steamer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""park_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+trap_rock_restaurant_and_brewery,0,0,245110472705,"{""name"":""Trap Rock Restaurant and Brewery"",""city"":""Berkeley Heights"",""state"":""New Jersey"",""code"":""7922"",""country"":""United States"",""phone"":""1-908-665-1755"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""279 Springfield Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.6892,""lon"":-74.4349}}",1,28,1
+rock_bottom_restaurant_brewery_minneapolis-stillwater_stout,0,0,245003845632,"{""name"":""Stillwater Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,55,1
+third_street_ale_works,0,0,245102673920,"{""name"":""Third Street Ale Works"",""city"":""Santa Rosa"",""state"":""California"",""code"":""95404"",""country"":""United States"",""phone"":""1-707-523-3060"",""website"":""http://www.thirdstreetaleworks.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""610 Third Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.4398,""lon"":-122.713}}",1,10,1
+midnight_sun_brewing_co-la_maitresse_du_moine,0,0,244876967938,"{""name"":""La Maitresse du Moine"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Dark and strong as the style implies, La Maitresse du Moine dances across the palate with complexity and mystery--just as the Northern Lights move across the night sky, delighting the senses and enlightening the mind.\r\n\r\nIn the tradition of monks who have devoutly brewed beers of character and strength for centuries, La Maitresse du Moine Dark Strong Ale reflects the passion and dedication required to create a beer this heavenly. This Mistress of the Monk is seductive, pensive and intriguing. We say it in French: La Maitresse du Moine."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,49,1
+oggi_s_pizza_and_brewing_vista-ding_ding_double_ipa,0,0,244862484480,"{""name"":""Ding Ding Double IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""oggi_s_pizza_and_brewing_vista"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,12,1
+o_gara_s_bar_grill-light_amber_ale,0,0,244880637954,"{""name"":""Light Amber Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""o_gara_s_bar_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,57,1
+rogue_ales-half_e_weizen,0,0,245005090817,"{""name"":""Half-E-Weizen"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Half-e-Weizen (formerly Mo Ale), was inspired by, and dedicated to, Mo and Dutch Niemi, real people inspiring a real product. Mo was a restaurateur and raconteur whose clam chowder is world-famous; Dutch a leader by example for coastal fisherman. Together their spirit indelibly shapes the daily lives of the Newport, OR waterfront.\r\n\r\nHalf-e-Weizen is a refreshing, unfiltered fusion of wheat and Northwest Harrington malts, coriander, ginger, and Saaz hops in the Belgium style. Half-e-Weizen is available in the classic 22-ounce bottle and on draft."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,58,1
+titletown_brewing-the_400_honey_ale,0,0,245103329281,"{""name"":""The \""400\"" Honey Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+pete_s_brewing-pete_s_wicked_strawberry_blonde,0,0,244994473984,"{""name"":""Pete's Wicked Strawberry Blonde"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pete_s_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Pete's Wicked Strawberry Blonde is truly a unique beer experience. Reward yourself with our golden lager made of the finest pale and wheat malts and Cluster Hops, with a kiss of natural strawberry flavor."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,34,1
+pacific_coast_brewing-imperial_stout,0,0,244994867200,"{""name"":""Imperial Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_coast_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+schooner_brewery-dunkelweizen,0,0,244996374531,"{""name"":""Dunkelweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schooner_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+tustin_brewing-old_town_ipa,0,0,245101035521,"{""name"":""Old Town IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tustin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+south_shore_brewery-honey_pilsner,0,0,245104246784,"{""name"":""Honey Pilsner"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+sierra_nevada_brewing_co-stout,0,0,245005484032,"{""name"":""Stout"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nCreamy, malty, and full-bodied, the Sierra Nevada Stout is satisfyingly rich. Caramel and Black malts give the Stout its deep, dark color and pronounced roasted flavor. \r\n\r\n“Sierra Nevada Stout is admirable from nose to finish, with notes of malty sweetness to the palate but plenty of bitterness available to set up a stimulating counterpoint.”\r\n\r\n– Christopher Finch, A Connoisseur’s Guide \r\nto the World’s Best Beer\r\n\r\nGOLD MEDAL WINNER\r\nCalifornia State Fair (Stout, Sweet & Foreign: 2000)"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+unionsbru_haidhausen-unimator,0,0,245121679360,"{""name"":""Unimator"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unionsbru_haidhausen"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,56,1
+pacific_beach_brewhouse-sunset_red,0,0,244877492226,"{""name"":""Sunset Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pacific_beach_brewhouse"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+seabright_brewery-brew_ribbon,0,0,244987920384,"{""name"":""Brew Ribbon"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+uerige_obergrige_hausbrauerei,0,0,245115125761,"{""name"":""Uerige Obergrige Hausbrauerei"",""city"":""Dsseldorf"",""state"":""Nordrhein-Westfalen"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)211-/-86699-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Bergerstrae 1""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":51.225,""lon"":6.7722}}",1,39,1
+smuttynose_brewing_co-portsmouth_lager,0,0,245120696320,"{""name"":""Portsmouth Lager"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Named in honor of our hometown’s 375th anniversary, Smuttynose Portsmouth Lager is a full-flavored, medium bodied continental-style beer - deep golden in color, featuring a mouth-pleasing maltiness subtly balanced with spicy imported Saaz hops. One taste of this fine lager tells you this is no ordinary beer: From its mellow, velvety body to its lingering, fresh hop finish, Portsmouth Lager is smooth, complex and satisfying.""}",1,54,1
+sweetwater_tavern_centreville,0,0,245105426433,"{""name"":""Sweetwater Tavern - Centreville"",""city"":""Centreville"",""state"":""Virginia"",""code"":""20121"",""country"":""United States"",""phone"":""1-703-449-1100"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""14250 Sweetwater Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.8289,""lon"":-77.4393}}",1,16,1
+tivoli_brewing,0,0,245104967683,"{""name"":""Tivoli Brewing"",""city"":""Denver"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.7392,""lon"":-104.985}}",1,15,1
+slottskllans_bryggeri-vrak,0,0,245111324672,"{""name"":""Vrak"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""slottskllans_bryggeri"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+river_horse_brewing_company-hop_hazard,0,0,244996767745,"{""name"":""Hop Hazard"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_horse_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewing the perfect ale is truly a balancing act...hazardous work you might say. With Hop Hazard our challenge was to hand craft a malt rich base that could counterbalance a combustible five-hop blend and still leave your taste buds with enough room to enjoy a unique, crisp hop finish."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,38,1
+three_floyds_brewing-x_tra_pale_ale,0,0,245112504322,"{""name"":""X-Tra Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+minneapolis_town_hall_brewery-masala_mama_ipa,0,0,244864909313,"{""name"":""Masala Mama IPA"",""abv"":5.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""minneapolis_town_hall_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our brewers believe an American IPA should be full of American hops. Masala Mama uses three different West Coast varieties, over five hop additions. This copper-colored ale is not strictly about hops; American pale barley and several caramel malts balance the flavor for a green, toasted caramel finish. The British realized an abundance of hops will help preserve beer … we realized hops can preserve our customers."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+pennichuck_brewing_company-pozharnik,0,0,244988051456,"{""name"":""Pozharnik"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,18,1
+twisted_pine_brewing_company-big_shot_espresso_stout,0,0,245110472706,"{""name"":""Big Shot Espresso Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twisted_pine_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A favorite of many coffee-loving beer drinkers, Big Shot Espresso Stout boasts about a shot of espresso in every pint. Twisted Pine teamed up with popular Amante Coffee in Boulder to produce what Amante co-owner and founder Greg Buchheister calls \""the most perfectly balanced buzz.\"" The earthy, dark chocolate flavors of the Amante Espresso blend to the flawless balance of the beer.""}",1,28,1
+rock_bottom_restaurant_brewery_san_jose-faller_wheat,0,0,245003845633,"{""name"":""Faller Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+three_floyds_brewing-broodoo,0,0,245102673921,"{""name"":""Broodoo"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,10,1
+midnight_sun_brewing_co-trickster_belgian_style_pumpkin_ale,0,0,244877033472,"{""name"":""Trickster Belgian-style Pumpkin Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""midnight_sun_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""OK, what do you get when we toss pale malted barley, pumpkin and spices into a stainless steel cauldron then stir in some magic? Uh, Trickster! The “magic” is actually mischievous Belgian yeast at play with cardamom, nutmeg and coriander. This spooky cool brew will make your glass glow bright despite the gloominess of the season. \r\n\r\nDesigned to conjure up a little fun during the darkening days of autumn, Trickster is a frivolous concoction of earthy pumpkin, comforting malt, and lively spices. This makes Trickster the brew to accompany your post-winterizing duties, family fall dinners, ghost stories, U-boast-iT stories, and “supposedly haunted” garage parties. \r\n\r\nBut the flavor range of Trickster also pairs well with citrusy and spicy cuisine. Try a glowing glass with your favorite dishes that incorporate nutmeg, cardamom or coriander—like Thai curries, Swedish meatballs, gingerbread, roasted pumpkin soup. Add Trickster to soups and sauces, batters and doughs, glasses and mugs."",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,49,1
+olde_peninsula_brewpub_and_restaurant-india_pale_ale,0,0,244862484481,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,12,1
+oregon_trader_brewing,0,0,244880637955,"{""name"":""Oregon Trader Brewing"",""city"":""Albany"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.6365,""lon"":-123.106}}",1,57,1
+rogue_ales-youngers_special_bitter,0,0,245005090818,"{""name"":""Youngers Special Bitter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Our original Rogue Ale, Youngers Special Bitter (affectionately nicknamed YSB) is a classic English Special Bitter named after Bill Younger of the infamous Horse Brass Pub in Portland, Oregon. The Malt Advocate described Youngers Special Bitter as \""rich and flavorful. A triad of caramel maltiness, fruitiness (apricots?), and hop bitterness in aroma and flavor. A fuller malt foundation than some other pale ales, with some background spiciness. Dry, hoppy finish.\"" In the SouthWest Brewing News, Feb/March 1994 issue, George Fix wrote \""A strong case could be made for Rogue Ale being included among the top 5 ales brewed in the US.\""\r\n\r\nYSB is amber in color with a mild hoppy finish. Brewed with a blend of 2-row Harrington and Crystal malts, Willamette and East Kent Golding hops. YSB is available in the classic 22-ounce seriograph bottle (the 12-ounce 6-pack was phased out in early 2005), and on draft."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,58,1
+top_of_the_hill_restaurant_and_brewery-blackwood_mountain_stout,0,0,245103329282,"{""name"":""Blackwood Mountain Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""top_of_the_hill_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,11,1
+pizza_port_brewing_solana_beach-mother_of_all_beers,0,0,244994473985,"{""name"":""Mother of All Beers"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizza_port_brewing_solana_beach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+phoenix_beverages_ltd,0,0,244994932736,"{""name"":""Phoenix Beverages Ltd"",""city"":""Pont Fer"",""state"":""Phoenix"",""code"":"""",""country"":""Mauritius"",""phone"":"""",""website"":""http://www.phoenixbeveragesgroup.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":-20.2738,""lon"":57.4971}}",1,35,1
+selin_s_grove_brewing_co,0,0,244996440064,"{""name"":""Selin's Grove Brewing Co."",""city"":""Selinsgrove"",""state"":""Pennsylvania"",""code"":""17870"",""country"":""United States"",""phone"":""570-374-7308"",""website"":""http://www.selinsgrovebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""121 North Market St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.801,""lon"":-76.8614}}",1,37,1
+union_colony_brewery,0,0,245101101056,"{""name"":""Union Colony Brewery"",""city"":""Greeley"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.4233,""lon"":-104.709}}",1,7,1
+spaten_franziskaner_brau,0,0,245104312320,"{""name"":""Spaten-Franziskaner-Bräu"",""city"":""München"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)89-/-5122-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Marsstrae 46-48""]}",1,14,1
+simmerberg_brusttt_und_taferne,0,0,245005484033,"{""name"":""Simmerberg Brusttt und Taferne"",""city"":""Simmerberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)8387-/-3806"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Ellhofer Strae 2""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":47.5814,""lon"":9.9191}}",1,59,1
+utah_brewers_cooperative,0,0,245121679361,"{""name"":""Utah Brewers Cooperative"",""city"":""Salt Lake City"",""state"":""Utah"",""code"":""84115"",""country"":""United States"",""phone"":""1-801-466-8855"",""website"":""http://www.utahbeers.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1763 South 300 West""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.7322,""lon"":-111.9}}",1,56,1
+pelican_pub_brewery-bridal_ale_2005,0,0,245001486336,"{""name"":""Bridal Ale 2005"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pelican_pub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+sierra_nevada_brewing_co-bigfoot_1998,0,0,244987920385,"{""name"":""Bigfoot 1998"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+umpqua_brewing,0,0,245115125762,"{""name"":""Umpqua Brewing"",""city"":""Roseburg"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.2165,""lon"":-123.342}}",1,39,1
+south_shore_brewery,0,0,245120696321,"{""name"":""South Shore Brewery"",""city"":""Ashland"",""state"":""Wisconsin"",""code"":""54806"",""country"":""United States"",""phone"":""1-715-682-9199"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""808 West Main Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":46.5872,""lon"":-90.8921}}",1,54,1
+switchback_brewing_co,0,0,245105491968,"{""name"":""Switchback Brewing Co"",""city"":""Burlington"",""state"":""Vermont"",""code"":""5406"",""country"":""United States"",""phone"":""(802) 651-4114"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""PO Box 4210""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":43.3906,""lon"":-79.8049}}",1,16,1
+top_of_the_hill_restaurant_and_brewery-big_bertha_brown,0,0,245104967684,"{""name"":""Big Bertha Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""top_of_the_hill_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,15,1
+southern_tier_brewing_co-back_burner_imperial_barley_wine_style_ale,0,0,245111390208,"{""name"":""Back Burner Imperial Barley Wine Style Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Long ago, British farmhouse brewers made special ales using the first runnings of the mash. These beers, now called barley wine, are brewed in the tradition of days past. At Southern Tier this long awaited brew is placed on the back burner until the start of the new year. Back Burner Barley Wine is a celebration of things to come and things remembered. It’s conceived in three small batches, using voluminous amounts of barley and hops. The process starts early in the morning and ends late into the night. We hope this rare brew reignites your spirit for another trip around the sun."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,31,1
+river_west_brewing-railroad_stout,0,0,244996833280,"{""name"":""Railroad Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""river_west_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+titletown_brewing-pale_ale_a_la_bushner,0,0,245112569856,"{""name"":""Pale Ale \""á la Bushner\"""",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,33,1
+mishawaka_brewing-kolsch,0,0,244864909314,"{""name"":""Kolsch"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mishawaka_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+pennichuck_brewing_company-the_big_o_oktobefest,0,0,244988051457,"{""name"":""The Big O Oktobefest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pennichuck_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,18,1
+union_barrel_works-union_barrel_works_pale_ale,0,0,245110472707,"{""name"":""Union Barrel Works Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_barrel_works"",""updated"":""2010-07-22 20:00:20"",""description"":""A translucent amber-red ale with a moderately high IBU of 36. Bittering hops include Kent Golding and Cascade. A generous amount of Kent Golding is used in the dry hopping to further enhance the aroma."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,28,1
+rogue_ales-old_crustacean_barleywine_2006,0,0,245003911168,"{""name"":""Old Crustacean Barleywine 2006"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+three_floyds_brewing-pride_joy_mild_ale,0,0,245102739456,"{""name"":""Pride & Joy Mild Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,10,1
+moorhouse_s_brewery_burnley-pendle_witches_brew,0,0,244877033473,"{""name"":""Pendle Witches Brew"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moorhouse_s_brewery_burnley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+olde_peninsula_brewpub_and_restaurant-tornado_ale,0,0,244862484482,"{""name"":""Tornado Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_peninsula_brewpub_and_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,12,1
+pivovar_pardubice_a_s-porter_boom,0,0,245004632064,"{""name"":""Porter Boom"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_pardubice_a_s"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,57,1
+ruppaner_brauerei-edel_pils,0,0,245005156352,"{""name"":""Edel-Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,58,1
+troegs_brewing-rugged_trail_ale,0,0,245103394816,"{""name"":""Rugged Trail Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Designed as our session beer, Rugged Trail Nut Brown Ale is bronze in color with a velvety smooth taste and subtle chocolate note. Rugged Trail’s lower alcohol content and subtle hoppiness make it the perfect beer to enjoy during the day and into the night."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+pleasanton_main_street_brewery-train_wreck_ipa,0,0,244994539520,"{""name"":""Train Wreck IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pleasanton_main_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,34,1
+pizzeria_uno_chicago_grill_brewery-32_inning_ale,0,0,244994932737,"{""name"":""32 Inning Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizzeria_uno_chicago_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+sharktooth_brewing-poi_dog_wheat,0,0,244996505600,"{""name"":""Poi Dog Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sharktooth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+vintage_50_restaurant_and_brew_lounge-point_of_rocks_pale_ale,0,0,245744926720,"{""name"":""Point Of Rocks Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vintage_50_restaurant_and_brew_lounge"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,7,1
+st_peter_s_brewery-english_ale,0,0,245104312321,"{""name"":""English Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,14,1
+sixpoint_craft_ales-bengali_tiger,0,0,245005549568,"{""name"":""Bengali Tiger"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sixpoint_craft_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Sixpoint Bengali Tiger is reminiscent of the century-old English IPA. In my perspective, many current IPAs suffer from lacking substance; unbalanced by a hoppy assertiveness that is not substantiated by a strong foundation of rich malt flavors. Our interpretation uses the highest-quality, floor-malted base malt, which lends a full-bodied and rich caramel flavor. We mash at high temperatures and add generous amounts of specialty malts to further emphasize a strong foundation of malt as leverage for our generous additions of hops… Which are indeed generous. We use a total of three different hop strains, and add a total of six different additions throughout the process. The Bengali Tiger has a hoppy snap upfront, but strides at a steady pace, and finishes balanced. The signature characteristic of the Tiger is the aroma… we use massive quantities of whole East Kent Goldings hops to dry hop in our conditioning tanks. The result? The essential oils from the hops are an enticing treat before every sip. Notice the lacing of stripes around the pint glass as you finish your glass; it’s the mark of the Tiger."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,59,1
+voodoo_brewing_co_llc-pilzilla,0,0,245751873536,"{""name"":""PILZILLA"",""abv"":6.75,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Pilzilla is a beer that I've been brewing for years. Each year it gets bigger and bigger. Nicknamed \""The beer that took over Tokyo\"". It is an unfiltered Keller Bier. Nicley hopped at this point with 9 different kinds of hops at 10 additions and about 6.75 % alc. Each year we will add another variety of hop and bump the alc a bit. This is listed on Beer Advocate as the highest rated Kellerbier in the world. \r\n\r\nBottle Conditioned and Refermented. \r\n\r\nThis is not your average pilsner, get it before we drink it all! Prost!!""}",1,56,1
+pennichuck_brewing_company,0,0,245001486337,"{""name"":""Pennichuck Brewing Company"",""city"":""Milford"",""state"":""New Hampshire"",""code"":""3055"",""country"":""United States"",""phone"":""(603) 672-2750"",""website"":""http://www.pennichuckbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""127 Elm St., Unit C""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.8368,""lon"":-71.6626}}",1,50,1
+sioux_falls_brewing-midnight_star_ale,0,0,244987920386,"{""name"":""Midnight Star Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sioux_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+warsteiner_brauerei-konig_ludwig_weissbier,0,0,245749448704,"{""name"":""Konig Ludwig Weissbier"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""warsteiner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,39,1
+steamworks-cascadia_cream_ale,0,0,245120761856,"{""name"":""Cascadia Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Every year in Vancouver there are a few days when the air is cool & crisp, the sun shines brightly, and the leaves show their vibrant colours -- then it starts to rain incessantly. Anyway, our Cascadia Cream Ale is dedicated to the spirit of mountains, oceans, golden days and gentle mist. Caramel and honey malts lend this ale a mellow, grainy maltiness which is balanced by the subtle presence of English finishing hops. Cheers, our Cascadia Cream Ale will be sure to brighten up even the wettest West Coast day."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+the_blind_bat_brewery_llc-long_island_potato_stout,0,0,245105491969,"{""name"":""Long Island Potato Stout"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_blind_bat_brewery_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed with real mashed Long Island Potatoes (or is it \""Potatos\""?) in the mash - hence, \""twice mashed.\"" \r\n\r\nI'll admit, my Polish, Irish, and German heritage finds the siren song of potatoes irresistible. (My French blood, not so much.) The local, Long Island agriculture booster in me needs to go for the Long Island potato above all others. \r\n\r\nWith a brewery this small (basically a home brewery with a license to sell), I can brew what \""gets\"" me, with hopes that some folks will enjoy it."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,16,1
+trailhead_brewing_company-trailblazer_blond_ale,0,0,245105033216,"{""name"":""Trailblazer Blond Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trailhead_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+sprecher_brewing-special_amber,0,0,245111390209,"{""name"":""Special Amber"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A delicate balance of toasted malt and fresh hops give this medium-bodied German-style lager an intriguing, complex malt flavor. A creamy head, deep golden color and an impressive hop bouquet make this a very special beer."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+rogue_ales-imperial_india_pale_ale_i2pa,0,0,244996833281,"{""name"":""Imperial India Pale Ale / I2PA"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Above and beyond an India Pale Ale--I2PA is radically hopped with an intense aroma and hop bitterness. Unfiltered and aged for 9 months before it leaves the brewery--not for the faint of heart. I2PA is brewed with two-row Pipkin Pale malts, Saaz, Cascade and Northwest Golding hops. I2PA is available in a new 750ml Silkscreened black ceramic bottle and on draft."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,38,1
+tyranena_brewing,0,0,245112569857,"{""name"":""Tyranena Brewing"",""city"":""Lake Mills"",""state"":""Wisconsin"",""code"":""53551"",""country"":""United States"",""phone"":""1-920-648-8699"",""website"":""http://www.tyranena.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1025 Owen Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0862,""lon"":-88.8967}}",1,33,1
+moorhouse_s_brewery_burnley-black_cat,0,0,244864974848,"{""name"":""Black Cat"",""abv"":3.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moorhouse_s_brewery_burnley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,19,1
+pizza_beer,0,0,244988116992,"{""name"":""Pizza Beer"",""city"":""St Charles"",""state"":""Illinois"",""code"":""60175"",""country"":""United States"",""phone"":""(630) 377-6888"",""website"":""http://www.mammamiapizzabeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Chef Tom and Mamma Mia aren't the only folks that have discovered how great recipes using Mamma Mia Pizza Beer truly can be. Just ask the owners of Michel Angelo's Pizza & Pasta, Ream's Elburn Market, Josefs Elegante Meat and Deli, and the constantly growing list of fine establishments that now or will soon be featuring food products made with Mamma Mia Pizza Beer. Whether it's used in bread, crusts, meats and even fried fish batter, Mamma Mia Pizza Beer truly is expanding the meaning of The World's First Culinary Beer!"",""address"":[""5N404 Harvest Lane""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":41.9455,""lon"":-88.4507}}",1,18,1
+upstream_brewing_old_market-honey_raspberry_ale,0,0,245110538240,"{""name"":""Honey-Raspberry Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""This easy drinking beer is made with pale and \r\nMunich malts, wheat, honey and fresh raspberry puree. Honey Raspberry Ale is refreshing and mildly sweet."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,28,1
+rogue_ales-xs_imperial_stout,0,0,245003911169,"{""name"":""XS Imperial Stout"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Deserving the title \""Emperor of Ales\"" (unlike the bourgeois \""King of Beers\""), Imperial is the strongest and fullest of all stouts. Imperials originally were brewed with large quantities of hops and a high alcohol content to withstand long, unrefrigerated journeys. Rogue Imperial Stout, considered the high end of stouts, is made of 2-row Great Western Harrington & Klages, Hugh Baird XLT-80, Black, Munich and Chocolate Malts; Willamette, Cascade and Chinook hops; rolled oats; and two secret ingredients. Unfiltered and unfined, Imperial Stout is best when aged for one year. Imperial Stout is available in a new 750-ml ceramic swing-top bottle (replacing the much older 7-ounce and more recent 12-ounce XS-line packaging) and on draft."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,55,1
+thunderhead_brewery_2-nitro_porter,0,0,245102739457,"{""name"":""Nitro Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,10,1
+moylan_s_brewery_restaurant-moylannium_ale,0,0,244877033474,"{""name"":""Moylannium Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""moylan_s_brewery_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+ostankinskij_pivovarennij_zavod-beer,0,0,244862550016,"{""name"":""Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ostankinskij_pivovarennij_zavod"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+port_brewing_company-hop_15_ale,0,0,245004697600,"{""name"":""Hop 15 Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""First brewed in 2002 to celebrate the 15th Anniversary of the Pizza Port in Solana Beach, Hop 15 was imagined and designed by Tomme Arthur and Jeff Bagby. It was to be a celebration of 15 years of \""Good Beer Brings Good Cheer.\"" So there are 15 different hop varieties that are added to the beer every 15 minutes. Over the years, Hop 15 has racked up numerous accolades. It has won two silver medals at the Great American Beer Festival. It also was named Alpha King in 2004 and received a first place award at the Bistro Double IPA beer festival in Hayward, CA. Hop 15 remains won of the stickiest most resinous beers we have ever tasted and for that, we are thankful it is on tap at our brewery each and every day.\r\n\r\nMalts- Two Row and English Light Crystal\r\nHops- We use 15 Different Varieties on a strictly don't ask don't tell policy\r\nYeast- White Labs California Ale and Proprietary Yeast Strains\r\n\r\nOriginal Gravity- 1.086\r\nTerminal Gravity- 1.014\r\n9.7 % ABV\r\n\r\nDraft- Available in Southern California 22 Oz Bottles and Cases- At Port Brewing San Marcos and Pizza Port Carlsbad, San Clemente and Solana Beach and wherever better beers are sold."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,57,1
+san_marcos_brewery_grill-x_tra_pale,0,0,245005156353,"{""name"":""X-Tra Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_marcos_brewery_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+troegs_brewing-scratch_20_2009_apollo_imperial_ale,0,0,245103460352,"{""name"":""Scratch #20 2009 Apollo Imperial Ale"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch #20 has been dubbed Apollo Imperial Ale because of our experimentation with a new hop variety.\r\n \r\nApollo hops are high alpha acid with an intense aroma. Married with other high alpha hops, with almost two pounds of hops added per barrel produced, AIA has an intense staying power in the back of the throat. After a long discussion between Chris, John and the brewers, they dubbed this hop flavor stinky grapefruit with a hint of perfume. The dark color might lead you to believe the some malt may shine through; but no, the hops are the true player in this ale.\r\n \r\nScratch #20 has a dual role, also serving at The Drafting Room’s Anniversary Ale for 2009. We brewed a bit more to serve the brewery and The Drafting Room, but get it while when you see it. Before this intense hop flavor subsides, this beer will be sold out."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,11,1
+plzesk_prazdroj-pilsner_urquell,0,0,244994605056,"{""name"":""Pilsner Urquell"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""plzesk_prazdroj"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,34,1
+pizzeria_uno_chicago_grill_brewery-gust_n_gale_porter,0,0,244994998272,"{""name"":""Gust-N-Gale Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizzeria_uno_chicago_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,35,1
+sierra_nevada_brewing_co-bigfoot_2003,0,0,244996505601,"{""name"":""Bigfoot 2003"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+weyerbacher_brewing_company-hops_infusion,0,0,245744992256,"{""name"":""Hops Infusion"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Hops Infusion is loaded with piney, citrusy notes, much hops complexity, and a strong foundation of malt underneath it all.. Glowing a deep amber color, Hops Infusion is brewed with seven types of hops. Simcoe, Magnum, Cascade, Liberty, Saaz, Fuggles and E. Kent Goldings give this beer the complexity that's so interesting. Our brewers intention on Hops Infusion was to create a complexity of hops flavor and aromas, not found in any other beer.\r\n\r\nOriginally developed for our BrewPub (no longer open), Hops Infusion was ahead of its time in 1998, but eventually became over shadowed by plethora of entries from other brewers in the India Pale Ale category, with everyone pushing the envelope on hops content more and more. So, in late 2005 we redesigned this beer with an entirely new recipe and new packaging as well. The results are unmistakable, Hops Infusion is clearly a leading IPA once again.\r\n\r\nWe brew Hops Infusion (6.2% ABV, 1.068 OG) all year 'round. So if your local beer store doesn't have it, tell 'em to get moving!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,7,1
+stadsbrouwerij_de_hemel,0,0,245104377856,"{""name"":""Stadsbrouwerij De Hemel"",""city"":""Nijmegen"",""state"":"""",""code"":""0"",""country"":""Netherlands"",""phone"":""31-024-3606167"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Franseplaats 1""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.8486,""lon"":5.8639}}",1,14,1
+sixpoint_craft_ales,0,0,245005615104,"{""name"":""Sixpoint Craft Ales"",""city"":""Brooklyn"",""state"":""New York"",""code"":""11231"",""country"":""United States"",""phone"":"""",""website"":""http://www.sixpointcraftales.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""40 Van Dyke St""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.674,""lon"":-74.0118}}",1,59,1
+weyerbacher_brewing_company-alpha,0,0,245751939072,"{""name"":""Alpha"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Alpha, the first entry in our one-off, brewer's choice series is a Belgian-style Pale Ale at 6.2% ABV. Brewed with Pale, Carahell and Wheat malts, Amarillo and Cascade hops. This medium bodied beer is crisp on the palate with a smooth, not overly bitter hops flavor coupled with the fruity esters from the Belgian Abby yeast strain we used. Its bottle and keg conditioned, so expect a tall, fluffy head, and perhaps small amount of sediment. Just one batch was brewed in April 2008, kegs released in late May, and only 20 cases of bottles for sale only at the brewery at the special debut night event of June 13, 2008, from 5 to 8 pm. Recipe by Jeff Musselman, assistant brewer."",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,56,1
+pivovar_hradec_krlov-lion_lev_export_lager_beer_double_bock,0,0,245001551872,"{""name"":""Lion Lev Export Lager Beer Double Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivovar_hradec_krlov"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+skagit_river_brewing-skagit_brown_ale,0,0,244987985920,"{""name"":""Skagit Brown Ale"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,17,1
+water_tower_brewing-flying_horse_pale_ale,0,0,245749448705,"{""name"":""Flying Horse Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_tower_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,39,1
+the_livery-old_cedar,0,0,245120761857,"{""name"":""Old Cedar"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Named after a drawing of an old cedar tree growing out of a cliff on the Lake Superior shoreline done by friend and artist Ladislav Hanka, this beer is copper colored and hopped with American Centennial and English East Kent Golding hops.""}",1,54,1
+titletown_brewing-birra_canadeo_gridiron_gold,0,0,245105491970,"{""name"":""Birra Canadeo / Gridiron Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+troegs_brewing-flying_mouflan,0,0,245105033217,"{""name"":""Flying Mouflan"",""abv"":9.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This strong alluring ale is two beers in one. Cracking open a fresh bottle unleashes hops and heat with more than 100 IBUs emanating from three hop varieties and sweet burn of 9.3% ABV. Cellaring the Flying Mouflan in a cool dark place at 50 degrees for a minimum of four months will mellow out the hops and wash away the heat. If you can resist temptation you will be rewarded with two memorable beers in a single bottle."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,15,1
+standing_stone_brewing_company-standing_stone_double_india_pale_ale,0,0,245111390210,"{""name"":""Standing Stone Double India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""standing_stone_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""An unfiltered ale with intense hop bitterness, flavor and aroma.  This ale is well balanced with higher alcohol, maltiness and hop character. (95 IBU.)"",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,31,1
+rogue_ales-morimoto_soba_ale,0,0,244996833282,"{""name"":""Morimoto Soba Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""The Morimoto Soba Ale is part of the new Signature Series of Rogue Ales, launched in the Spring of 2003 with internationally acclaimed Chef Masaharu Morimoto--a James Beard awarded chef and one of the stars of the Food Network series, Iron Chef. \r\n\r\nSoba (also known as buckwheat) is not a type of wheat but a member of the rhubard family (a fruit, not a grain!) Soba has been a longtime staple of Japanese cuisine because of its nutritional value. Buckwheat is high in potassium, phosphorous, vitamin B (50 percent more than wheat) and protein, and its virtually fat-free. The fruits of buckwheat plant are like small beechnuts, which are milled to separate the edible groats from the dark brown hulls. The groats are then roasted and used more or less like a grain (a good example is Kasha).\r\n\r\nMorimoto Soba Ale is brewed with Roasted Buckwheat, Pale malt, Munich Malt, 13-17 Carastan Malt, and Crystal Hops. (Note, this beer contains Gluten.) The flavor is unique, toasty-nutty sensation with medium body and good hop bitterness. Morimoto Soba Ale is available in a 22 ounce silkscreened bottle and 13.2 gallon sankey kegs.\r\nTo learn more about the Chef, visit Morimotos web page."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,38,1
+uerige_obergrige_hausbrauerei-sticke,0,0,245112569858,"{""name"":""Sticke"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""uerige_obergrige_hausbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,33,1
+mordue_brewery-radgie_gadgie,0,0,244864974849,"{""name"":""Radgie Gadgie"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""mordue_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-apricot_wheat,0,0,244988116993,"{""name"":""Apricot Wheat"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,18,1
+vetter_s_alt_heidelberger_brauhaus-vetter_33,0,0,245110538241,"{""name"":""Vetter 33"",""abv"":37.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""vetter_s_alt_heidelberger_brauhaus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,28,1
+roots_organic_brewing,0,0,245003911170,"{""name"":""Roots Organic Brewing"",""city"":""Portland"",""state"":""Oregon"",""code"":""97214"",""country"":""United States"",""phone"":""1-503-235-7668"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1520 SE Seventh Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":45.5118,""lon"":-122.659}}",1,55,1
+titletown_brewing-art_schmidt_pilsner,0,0,245102739458,"{""name"":""Art Schmidt Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+nethergate_brewery_co_ltd-old_growler,0,0,244877099008,"{""name"":""Old Growler"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""nethergate_brewery_co_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,49,1
+otter_creek_brewing_wolaver_s_organic_ales-oktoberfest,0,0,244862550017,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Oktoberfest is our version of the perennial favorite Bavarian Autumn beer. Oktoberfest's deep golden hue helps bring to mind the old country and its time honored traditions. Brewed with Hallertau and Tettnang hops to balance its clean, malty sweetness, it's the perfect brew for a crisp Autumn day. Available from August to November."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,12,1
+redhook_ale_brewery-winterhook_robust_winter_ale_2000,0,0,245004763136,"{""name"":""Winterhook Robust Winter Ale 2000"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+schussenrieder_erlebnisbrauerei,0,0,245005156354,"{""name"":""Schussenrieder Erlebnisbrauerei"",""city"":""Bad Schussenried"",""state"":""Baden-Wrttemberg"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)7583-/-404-11"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Wilhelm-Schussen-Strae 12""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.004,""lon"":9.6584}}",1,58,1
+tyranena_brewing-rocky_s_revenge,0,0,245103460353,"{""name"":""Rocky's Revenge"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Deep in the darkest depths of Rock Lake prowls a great saurian known today as Rocky.  The legend of Rocky is old.  The ancient inhabitants of Aztalan warned of the beast by building a giant serpent mound at the lake’s edge.  The early residents of Lake Mills were forewarned of a guardian placed in the lake to protect its sacred stone tepees.  And history tells of numerous encounters with Rocky, who became a source of great worry and fear.  Although not seen for over a century, divers still experience a feeling of dread and being watched.  Enjoy Rocky’s Revenge, our offering to this legendary protector of Tyranena.\r\n\r\nRocky’s Revenge is an American brown ale with a portion aged in bourbon barrels.  Each bourbon barrel will contribute its own unique character to this rich, satisfying ale."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,11,1
+raccoon_river_brewing-tallgrass_prairie_gold,0,0,244994605057,"{""name"":""Tallgrass Prairie Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+port_brewing_company-frank_double_ipa,0,0,244994998273,"{""name"":""Frank Double IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,35,1
+south_shore_brewery-red_lager,0,0,245114011648,"{""name"":""Red Lager"",""abv"":4.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_shore_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+stevens_point_brewery-white_biere,0,0,245104377857,"{""name"":""White Bière"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+sleeping_lady_brewing_company-urban_wilderness_english_pale,0,0,245005680640,"{""name"":""Urban Wilderness English Pale"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sleeping_lady_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This tasty English pale ale gets its charm from Imported Maris Otter Pale Malt, East Kent goldings and a few secret ingredients to keep our competitiors guessing. Styled after a classic English Bitter, Urban Wilderness is supremely balanced, smooth and easy to drink."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,59,1
+wisconsin_brewing-badger_porter,0,0,245751939073,"{""name"":""Badger Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wisconsin_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,56,1
+porterhouse_restaurant_and_brewpub-lager,0,0,245001551873,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""porterhouse_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+sleeman_brewing_malting-original_dark,0,0,244987985921,"{""name"":""Original Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sleeman_brewing_malting"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+yakima_brewing_and_malting_grant_s_ales-deep_powder_winter_ale,0,0,245749448706,"{""name"":""Deep Powder Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yakima_brewing_and_malting_grant_s_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,39,1
+the_lost_abbey-devotion,0,0,245120827392,"{""name"":""Devotion"",""abv"":6.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""It’s an unassuming road leading to the priory. Here, off the corner of two intersecting roads, dedicated monks have been making beer for over 150 years. It’s always been a simple life – the kind that requires they brew only enough to sustain the activities of their monastery. In the silence of passing seasons, they pray, they brew and retire in solitary existence behind the sheltering walls. They live a most interesting life. Most likely one we couldn’t sustain.\r\n\r\nNearby, each summer, the trellised fields spring to life as rows of resinous green cones are trained toward the heavens. Rumor is some monks love these hops and being surrounded by budding yellow aromas and the leafy pungent fields inspired them. Since we aren’t sensible enough to locate our brewery near hop fields, we can only offer this blond ale in celebration of our Abbey brethren and their steadfast Devotion."",""style"":""Belgian-Style Pale Ale"",""category"":""Belgian and French Ale""}",1,54,1
+top_of_the_hill_restaurant_and_brewery-iron_mine_pale_ale,0,0,245105491971,"{""name"":""Iron Mine Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""top_of_the_hill_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+twin_rivers_brewing-imperial_i_p_a,0,0,245105098752,"{""name"":""Imperial I.P.A."",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,15,1
+stone_brewing_co-5th_anniversary_ipa,0,0,245111455744,"{""name"":""5th Anniversary IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,31,1
+routh_street_brewery_and_grille-light_ale,0,0,244996898816,"{""name"":""Light Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""routh_street_brewery_and_grille"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+unibroue-don_de_dieu,0,0,245112635392,"{""name"":""Don De Dieu"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""Don de Dieu displays an appealing orange-golden hue with a stable, creamy head of foam. Its fruity, malty and yeasty flavor is quickly succeeded by a palate-warming finish of roasted nuts and spices.\r\n\r\nThis smooth, exceptionally strong triple wheat\r\nale offers a complex flavor that is slightly\r\nfruity, malty, nutty and yeasty, with a hint of \r\nunfiltered sake."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,33,1
+namibia_breweries-urbock,0,0,244865040384,"{""name"":""Urbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""namibia_breweries"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,19,1
+r_b_brewing,0,0,244988182528,"{""name"":""R&B; Brewing"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-874-2537"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""54 East Fourth Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.2673,""lon"":-123.103}}",1,18,1
+victory_brewing-whirlwind_wit,0,0,245747679232,"{""name"":""Whirlwind Wit"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A swirling dynamo of flavor, with a steady calm of satisfaction at its heart, that's Whirlwind Witbier. Offering a tamed tempest of flavors both spicy and sublime, this softly fermented ale greets the nose and tingles the tongue. Imported Belgian yeast charges Whirlwind with an energy all its own. It is a refreshing interpretation of the classic, Belgian 'white beer' style."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,28,1
+roy_pitz_brewing_company-white_horse_hefeweizen,0,0,245003976704,"{""name"":""White Horse Hefeweizen"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roy_pitz_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This German inspired wheat ale is packed full of citrus flavor. We use torrified wheat, pale, and carafoam for balance, giving it a nice hazy, straw color and refreshing wheat taste. We ferment the White Horse at higher ale temps with a German style yeast that is known for producing world class wheat beers. We let the yeast take over the majority of the flavoring in our fermenters, providing the beer with banana and clove like esters. We pull some of the yeast with it to give this brew the proper style and to keep its body and character. We than age this brew with zests of citrus and a brewers spice that blends harmoniously with the esters of the yeast and balance out the sweetness of this brew. Truly a favorite in the summer time for breakfast, lunch, or dinner."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,55,1
+tommyknocker_brewery_and_pub-alpine_glacier_lager,0,0,245102804992,"{""name"":""Alpine Glacier Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,10,1
+new_glarus_brewing_company-norski_honey_bock,0,0,244877099009,"{""name"":""Norski Honey Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""new_glarus_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+palmetto_brewing,0,0,244985495552,"{""name"":""Palmetto Brewing"",""city"":""Charleston"",""state"":""South Carolina"",""code"":""29403"",""country"":""United States"",""phone"":""1-843-937-0903"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""289 Huger Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":32.8017,""lon"":-79.9455}}",1,12,1
+revolution_brewing_llc-workingman_mild,0,0,245004828672,"{""name"":""Workingman Mild"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""revolution_brewing_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""Drinkable brown session beer with a nutty, toffee flavor. Served lightly carbonated from a traditional Brittish handpump."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,57,1
+scuttlebutt_brewing-maibock,0,0,245005156355,"{""name"":""Maibock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,58,1
+water_street_brewery-pils,0,0,245745385472,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,11,1
+rail_house_restaurant_and_brewpub-oktoberfest_discontinued,0,0,244994605058,"{""name"":""Oktoberfest (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,34,1
+private_weissbierbrauerei_g_schneider_sohn_gmbh,0,0,244995063808,"{""name"":""Private Weissbierbrauerei G. Schneider & Sohn GmbH"",""city"":""Kelheim"",""state"":"""",""code"":""93309"",""country"":""Germany"",""phone"":""0 94 41 / 7 05 - 0"",""website"":""http://www.schneider-weisse.de"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Emil-Ott-Strasse 1-5""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":48.9175,""lon"":11.8735}}",1,35,1
+southampton_publick_house-altbier,0,0,245114077184,"{""name"":""Altbier"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southampton_publick_house"",""updated"":""2010-07-22 20:00:20"",""description"":""Reddish brown coloring.  Aroma is slightly sweet, much like flavoring.  Very drinkable.  Recommended."",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,37,1
+stone_brewing_co-old_guardian_barley_wine_2005,0,0,245104377858,"{""name"":""Old Guardian Barley Wine 2005"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,14,1
+south_county_brewing_co-brigantine_smoked_porter,0,0,245122465792,"{""name"":""Brigantine Smoked Porter"",""abv"":8.54,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""south_county_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Brigantine Smoked Porter, much like the high seas, can be a wild ride. This beer is dark brown and full bodied with roasted tones and a hint of chocolate. As if that weren't enough it finishes with a smoked flavor that seems right at home during cooler months here in Southern York County."",""style"":""Porter"",""category"":""Irish Ale""}",1,59,1
+wychwood_brewery_company_ltd,0,0,245751939074,"{""name"":""Wychwood Brewery Company Ltd"",""city"":"""",""state"":"""",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,56,1
+prescott_brewing_company-lodgepole_light,0,0,245001551874,"{""name"":""Lodgepole Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Cream Ale or Lager"",""category"":""Other Style""}",1,50,1
+southern_tier_brewing_co-southern_tier_porter,0,0,245105754112,"{""name"":""Southern Tier Porter"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Porter is our darkest beer, but not necessarily our strongest.  It is widely held that the darker the beer, the stronger the beer, but this is a summarily false.  The contribution of color comes directly from the color of malt that we use.  Some malt is oasted to achieve dark color and coffee-like flavor which in turn get transferred to the beer.\r\n\r\nOur Porter is ruchly complex with overtones of chocolate and expresso beans followed by a subtle flavor of hops.  It's a nourishing beer without being too sweet or filling."",""style"":""Porter"",""category"":""Irish Ale""}",1,17,1
+the_lost_abbey-judgement_day,0,0,245120827393,"{""name"":""Judgement Day"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""A massive beer in every sense of the word. A stronger and more contemplative version of our Lost and Found Ale. Judgment Day is the base beer for our Cuvee de Tomme. Many of the Trappist Breweries produce a version of beer which ages incredibly well for many years to come. And, since none of us knows when the end of the world is coming, we suggest you stock up with lots of Lost Abbey beers so that when the end of the world magically appears from no where, you’ll have a beer or two on hand for even the stingiest of angels. Available in 750ml bottles and on draft at select inspired locations."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,54,1
+troegs_brewing-hopback_amber_ale,0,0,245105557504,"{""name"":""HopBack Amber Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Tröegs Brewery’s Flagship beer, HopBack Amber Ale derives its name from a vessel in the brewhouse called a hopback. As the ‘wort’ is being transferred from the brewhouse to fermentation it passes through the hopback vessel. Packed full of fresh whole flower hops, the wort slowly circulates through this vessel extracting the essence of the aromatic hops. This vessel adds more time and more hop character that creates a fresh, spicy taste and rich caramel note that defines this signature ale.\r\n\r\nTASTING NOTES\r\nDeep amber in color under a huge creamy head. The aroma very apparent, bold and spicy with a slight floral character. Balanced with caramel malt, this well-rounded amber ale has an up-front floral spice that builds with a flush of sweetness"",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,16,1
+unibroue-quelque_chose,0,0,245105098753,"{""name"":""Quelque Chose"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""Quelque Chose was launched in January 1996. This versatile beer was specifically developed as a winter beer because, when warmed to 70ºC (160ºF), it can be taken as a hot drink. On the other hand, on the rocks, it is a wonderful aperitif. The cherries are soaked for months in slightly bitter ale before being blended into the beer. Quelque Chose is made with dark roasted malts, and the end result is something commonly known as an authentic nectar. The most original of the Unibroue line, it is highly appreciated by winter-sports enthusiasts."",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,15,1
+straub_brewery-straub,0,0,245111521280,"{""name"":""Straub"",""abv"":4.33,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""straub_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+scuttlebutt_brewing-nut_brown,0,0,244996898817,"{""name"":""Nut Brown"",""abv"":4.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""scuttlebutt_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,38,1
+upstream_brewing_old_market-1000_barley_wine,0,0,245112635393,"{""name"":""1000 Barley Wine"",""abv"":9.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,33,1
+north_coast_brewing_company-old_no_38_stout,0,0,244865040385,"{""name"":""Old No.38 Stout"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""north_coast_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Named for a retired California Western Railroad steam engine on the Fort Bragg to Willits run through the Redwoods, Old No. 38 Stout is a smooth, firm-bodied stout with the toasted character and coffee notes of dark malts and roasted barley."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+real_ale_brewing_company,0,0,244988182529,"{""name"":""Real Ale Brewing Company"",""city"":""Blanco"",""state"":""Texas"",""code"":""78606"",""country"":""United States"",""phone"":""1-830-833-2534"",""website"":""http://www.realalebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""231 San Saba Court""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":30.113,""lon"":-98.4156}}",1,18,1
+victory_brewing-yakima_twilight,0,0,245747679233,"{""name"":""Yakima Twilight"",""abv"":8.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The tenacious grip of big, juicy hop aroma and character slides smoothly into rich, dark malts. This heavyweight battle between fresh, Yakima Valley hops and dark, roasted malts is resolved harmoniously as the flavors merge to deliver complex satisfaction with a warming edge. Enjoy the ‘twilight’ for the bright and brassy hops!""}",1,28,1
+russian_river_brewing-dead_leaf_green,0,0,245004042240,"{""name"":""Dead Leaf Green"",""abv"":5.68,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Special Bitter or Best Bitter"",""category"":""British Ale""}",1,55,1
+tommyknocker_brewery_and_pub-black_powder_stout,0,0,245102804993,"{""name"":""Black Powder Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,10,1
+northwoods_brewpub_grill-red_cedar_red,0,0,244877099010,"{""name"":""Red Cedar Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""northwoods_brewpub_grill"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,49,1
+paulaner,0,0,244985495553,"{""name"":""Paulaner"",""city"":""Munich"",""state"":"""",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":""http://www.paulaner.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The name of the Paulaner brewery refers to the order of friars that resided in Neuhauser Straße in Munich who were part of the order of Saint Francis of Paola. The monks had brewed beer for their own use since 1634. The beer that was permitted to be sold on holidays was a Bock style which gained local fame. After the abolition of the Neudeck Cloister in 1799, the building was converted into a penitentiary. Franz Xaver Zacherl, the brewer, purchased the former cloister brewery and continued the Starkbier tradition with the product Salvator, which is latin for Saviour. In 1861 the Salvatorkeller (Salvator cellar) was opened upon Nockherberg. In 1928 the brewery merged with the Gebrüder Thomas brewery creating Paulaner Salvator Thomas Bräu. 1994 saw the acquisition into the Kulmbacher brewery group with the affiliated producers Plauen and Chemnitz. A daughter company is the Auer Bräu AG Rosenheim. Paulaner belongs to the BHI (Brau Holding International AG), a joint venture between Schörghuber Ventures (50.1%) and with Holland's Heineken N.V. (49.9%)."",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":48.1391,""lon"":11.5802}}",1,12,1
+rock_bottom_restaurant_brewery_denver-purple_nightie,0,0,245004828673,"{""name"":""Purple Nightie"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_denver"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+siletz_roadhouse_brewery-wooly_bully,0,0,245005221888,"{""name"":""Wooly Bully"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""siletz_roadhouse_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,58,1
+weinkeller_brewery_berwyn-wee_heavy,0,0,245745385473,"{""name"":""Wee Heavy"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Scotch Ale"",""category"":""British Ale""}",1,11,1
+richbrau_brewing_company-griffin_golden_ale,0,0,244994670592,"{""name"":""Griffin Golden Ale"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""richbrau_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest and palest signature brew, the Griffin is our house session beer. Notice the spicy character imparted by the German hops we use in the Griffin."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,34,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-oktoberfest,0,0,244995063809,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,35,1
+st_james_s_gate_brewery,0,0,245114077185,"{""name"":""St. James's Gate Brewery"",""city"":""Dublin"",""state"":"""",""code"":"""",""country"":""Ireland"",""phone"":"""",""website"":""http://www.guinness.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.3441,""lon"":-6.2675}}",1,37,1
+taylor_s_crossing_brewing-traditional_india_pale_ale,0,0,245104443392,"{""name"":""Traditional India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_crossing_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,14,1
+southern_tier_brewing_co-gemini_imperial_blended_ale,0,0,245122531328,"{""name"":""Gemini Imperial Blended Ale"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""High in the winter sky, two parallel stick figures are visible & known as “the twins,” or the constellation Gemini. The astronauts of the 1960s flew as teams of two in a program named after the celestial pairing. At Southern Tier, we have our own fraternal twins, Hoppe & Unearthly. Blended together & placed in this vessel, the mission of our Gemini is to travel high & take passengers on a journey far into the heavens."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,59,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-pale,0,0,245001617408,"{""name"":""Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+sprecher_brewing-pale_lager,0,0,245105754113,"{""name"":""Pale Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,17,1
+the_lost_abbey-red_barn_ale,0,0,245120827394,"{""name"":""Red Barn Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""This Farmhouse Ale traces its roots to the small rustic breweries of Southern Belgium. The word Saison comes to us from the French language and it means Season. Lightly spiced with Organic Ginger, Orange Peels, Black Pepper and Grains of Paradise, this brew promises to quench your thirst on the hottest Southern California days or wherever your travels may take you. Available in 750 ml bottles and on draft at select inspired locations."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,54,1
+troegs_brewing-scratch_25_2009_magical_moustache_rye,0,0,245105557505,"{""name"":""Scratch #25 2009 Magical Moustache Rye"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This mahogany ale packs a lingering, earthy hoppiness. The addition of more than 20% rye to the grain bill gives a creamy mouthfeel and hints of spice that compliment the bitterness of hops. Subtle fruitiness come through from the Bravo hops added during the boil, but the Cluster and Liberty varieties used in dry-hopping this beer are the true flavor drivers in this spicy ale. Dark in color and intense is flavor, Scratch 25-2009 finds true balance in a beer that could have easily gone way over the top. Enjoy."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,16,1
+upstream_brewing_company_at_legacy-oak_aged_belgian_tripel,0,0,245105098754,"{""name"":""Oak-Aged Belgian Tripel"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,15,1
+sweetwater_brewing_atlanta-420_extra_pale_ale,0,0,245111521281,"{""name"":""420 Extra Pale Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_atlanta"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+sequoia_brewing_conoabt-thunderhead_amber_ale,0,0,244996898818,"{""name"":""Thunderhead Amber Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sequoia_brewing_conoabt"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,38,1
+valley_brewing_company-valley_brew_pale_wheat,0,0,245112635394,"{""name"":""Valley Brew Pale Wheat"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""An American style Wheat Ale made with 50% malted 2 Row barley and 50% malted wheat. Valley Brew Pale Wheat is lightly hopped to produce a smooth and satisfying finish."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,33,1
+o_fallon_brewery,0,0,244865040386,"{""name"":""O'Fallon Brewery"",""city"":""O'Fallon"",""state"":""Missouri"",""code"":""63366"",""country"":""United States"",""phone"":""1-636-474-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""26 West Industrial Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":38.8058,""lon"":-90.7532}}",1,19,1
+redhook_ale_brewery-rye,0,0,244988182530,"{""name"":""Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+walldorff_brew_pub-bee_sting_honey_rye_ale,0,0,245747679234,"{""name"":""Bee Sting Honey Rye Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""walldorff_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""A smooth golden ale flavored with Pilsner malt and fresh local honey from Schaefer Shack Farms."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,28,1
+san_diego_brewing-old_town_nut_brown,0,0,245004042241,"{""name"":""Old Town Nut Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,55,1
+tucher_bru-kristall_weizen,0,0,245102804994,"{""name"":""Kristall Weizen"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tucher_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+o_grady_s_brewery_and_pub_1,0,0,244877164544,"{""name"":""O'Grady's Brewery and Pub #1"",""city"":""Arlington Heights"",""state"":""Illinois"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.0884,""lon"":-87.9806}}",1,49,1
+pyramid_alehouse_brewery_and_restaurant_seattle-curve_ball,0,0,244985561088,"{""name"":""Curve Ball"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+rogue_ales-old_crustacean_barleywine_2004,0,0,245004828674,"{""name"":""Old Crustacean Barleywine 2004"",""abv"":11.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""In Britain, seasonal brews for winter are high in alcohol, robust, malty, and dark. The two main styles of these brews are Old Ales and Barleywines. As the name suggests, barleywines are similar to wines in alcohol and need aging but are derived from grain, not the grape. Rogues barleywine is described by beer expert Stuart Ramsey as: \""A masterful, intense creation from brewer John Maier....it has achieved a depth and complexity usually associated with well-ages strong ales. I hope the brewery bottles some before it disappears.\"" We call it the cognac of beers. An unfiltered and unfined Barleywine. Intense, robust, malty and dark. The cognac of beers. A hugh beer in a little bottle, this is a beer designed for sipping.\r\n\r\nOld Crustacean is brewed with eight ingredients, Great Western Harrington, Klages, Hugh Baird Carastan and Munich Malts, Chinook and Centennial Hops, free-range coastal water and PacMan yeast. Old Crustacean is best when aged for one year. Old Crustacean is available in a new 750-ml ceramic swingtop bottle (replacing the much older 7-ounce and more recent 12 ounce XS-line package) and on draft."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,57,1
+southend_brewery_and_smokehouse_charleston-east_bay_brown,0,0,245122072576,"{""name"":""East Bay Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,58,1
+weyerbacher_brewing_company-autumnfest,0,0,245745385474,"{""name"":""AutumnFest"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""AutumnFest is Weyerbacher's own unique twist on the German Oktoberfest style. Copper-amber in color, AutumnFest is made with Vienna and Munich malts for that authentic, Bavarian easy drinking taste.  Each sip imparts a wonderful roastiness of malt on the tongue followed by a smooth, consistent finish.  Wonderfully balanced with a clean, velvety, slightly fruity taste, AutumnFest is the perfect beer for the Fall- a nice transition between the lighter beers of summer and the darker, heavier winter brews. It's a favorite of many Weyerbacher aficionados, who anticipate the end of summer with this wonderful beer. \r\n\r\n   Weyerbacher AutumnFest ( ABV 5.4%) is generally available in stores August through December.  Pick up a case to celebrate the change of seasons. Prost!"",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,11,1
+roost_brewery-kristall_weizen,0,0,244994670593,"{""name"":""Kristall Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""roost_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+rock_bottom_restaurant_brewery_minneapolis-north_star_premium_lager,0,0,244995063810,"{""name"":""North Star Premium Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_minneapolis"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,35,1
+st_peter_s_brewery-st_peter_s_organic_ale,0,0,245114077186,"{""name"":""St Peter's Organic Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Water is extracted from our own 300’ deep borehole and combined with Soil Association accredited light malted barley from Norfolk. Organic hops provide the distinctive palate. The yeast used is St. Peter’s own single strand variety. The result is a delicate, clean, crisp, lightly carbonated, traditional English Ale with a full ‘citrus hop’ aftertaste. This lovely beer won the Soil Association’s top prize in 2002 and a silver medal in 2006."",""style"":""Classic English-Style Pale Ale"",""category"":""British Ale""}",1,37,1
+taylor_s_restaurant_and_brewery,0,0,245104443393,"{""name"":""Taylor's Restaurant and Brewery"",""city"":""San Diego"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":32.7153,""lon"":-117.157}}",1,14,1
+southern_tier_brewing_co-jahva_imperial_coffee_stout,0,0,245122531329,"{""name"":""Jahva Imperial Coffee Stout"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,59,1
+pyramid_alehouse_brewery_and_restaurant_seattle-snow_cap,0,0,245001617409,"{""name"":""Snow Cap"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_seattle"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,50,1
+sprecher_brewing-sprecher_pub_ale,0,0,245105819648,"{""name"":""Sprecher Pub Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Seven varieties of malted barley are combined to give this English-style ale its complex flavor and deep, brown color. A select British yeast culture adds a subtle fruitiness and a blend of choice hops gives this non-bitter ale a soft finish."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,17,1
+the_round_barn_winery_brewery-round_barn_kolsch_style,0,0,245120892928,"{""name"":""Round Barn Kölsch Style"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_round_barn_winery_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Kölsch style beer is a golden-blonde ale that is our version of Cologne's native style. Soft, subtle maltiness and a clean finish make it a great thirst-quencher. Kölsch pairs well with spicy foods, or by itself. Enjoy with friends and in good health. Round Barn beer is bottle conditioned, decant into a pint glass before drinking for the best taste experience.""}",1,54,1
+tuppers_hop_pocket_ale-hop_pocket_ale,0,0,245105623040,"{""name"":""Hop Pocket Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tuppers_hop_pocket_ale"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,16,1
+ushers_of_trowbridge,0,0,245105164288,"{""name"":""Ushers of Trowbridge"",""city"":""Trowbridge"",""state"":""Wiltshire"",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.3201,""lon"":-2.208}}",1,15,1
+t_r_theakston,0,0,245111521282,"{""name"":""T&R; Theakston"",""city"":""Ripon"",""state"":""North Yorkshire"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01765)-689544"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""The Brewery""]}",1,31,1
+siletz_roadhouse_brewery-paddle_me_ipa,0,0,244996898819,"{""name"":""Paddle Me IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""siletz_roadhouse_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+water_street_brewery-amber,0,0,245748269056,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,33,1
+odell_brewing-isolation_ale,0,0,244865105920,"{""name"":""Isolation Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Ever been in a warm, cozy cabin and had a secret desire to get snowed in? To celebrate the winter season, we offer our Isolation Ale - a traditional winter brew made with premium malts imported from England. It's just one of the reasons Isolation Ale stands alone."",""style"":""Winter Warmer"",""category"":""Other Style""}",1,19,1
+river_horse_brewing_company,0,0,244988248064,"{""name"":""River Horse Brewing Company"",""city"":""Lambertville"",""state"":""New Jersey"",""code"":""8530"",""country"":""United States"",""phone"":"""",""website"":""http://www.riverhorse.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""While we might be new to your area, we have been brewing fine craft ales and lagers along the banks of the Delaware River since April of 1996. You can find our all natural, fresh bottled and draft beer products throughout the Mid-Atlantic region and parts of New England. Distribution includes Pennsylvania, New Jersey, Delaware, Maryland, New York, New York City, Long Island, Ohio, Connecticut and Massachusetts. We have also been featured by several well-known beer-of-the-month clubs. We use choice, all-natural ingredients and local spring water to produce the best product made in our area. You will notice that all of our products are pure representations of their respective styles, very clean and very well balanced."",""address"":[""80 LAMBERT LANE""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.3688,""lon"":-74.9477}}",1,18,1
+water_street_lake_country-amber,0,0,245747744768,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,28,1
+san_miguel_corporation-dark_lager,0,0,245004042242,"{""name"":""Dark Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_miguel_corporation"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,55,1
+two_brothers_brewing,0,0,245102870528,"{""name"":""Two Brothers Brewing"",""city"":""Warrenville"",""state"":""Illinois"",""code"":""60555"",""country"":""United States"",""phone"":""1-800-451-6348"",""website"":""http://www.twobrosbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""30 Butterfield Road""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.8206,""lon"":-88.2068}}",1,10,1
+odell_brewing-90_shilling,0,0,244877164545,"{""name"":""90 Shilling"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""We introduced 90 Shilling, our flagship beer, at our opening party in 1989. For a while, we'd been wondering - what would happen if we lightened up the traditional Scottish ale? The result is an irresistibly smooth and delicious medium-bodied amber ale. The name 90 Shilling comes from the Scottish method of taxing beer. Only the highest quality beers were taxed 90 Shillings. A shilling was a British coin used from 1549 to 1982. We think you'll find this original ale brilliantly refreshing, and worth every shilling."",""style"":""Scottish-Style Light Ale"",""category"":""British Ale""}",1,49,1
+real_ale_brewing_company-sisyphus_barleywine,0,0,244985561089,"{""name"":""Sisyphus Barleywine"",""abv"":11.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""real_ale_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+rogue_ales,0,0,245004894208,"{""name"":""Rogue Ales"",""city"":""Newport"",""state"":""Oregon"",""code"":""97365"",""country"":""United States"",""phone"":""1-541-867-3664"",""website"":""http://www.rogue.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Rogue Ales was founded in 1988 by Jack Joyce, Rob Strasser and Bob Woodell, three corporate types who wanted to go into the food/beverage industry. Rogue's first brewpub was located in Ashland, Oregon and was a 10bbl brewsystem. Rogue opened a second brewpub, 15bbl brewsystem, in May 1989 located in Newport, Oregon. Rogue closed its Ashland operation in 1997, after the great flood destroyed the place. In 1991, the 15bbl system, named Howard after John Maier's former boss, from the Newport brewpub was transferred across the bay to the current brewery and upgraded to a 30bbl system. In 1998 Rogue bought a 50bbl brewsystem, named Kobe. Kobe is the only brewsystem in use. Tours: We offer brewery tours every day at 3 pm (followed by a distillery tour at 4pm). Go up to the bar inside the brewery (Brewers on the Bay) and check in with the bartender and the tour will commence. Please call ahead if you have a large group and or to verify the tour time...Brewer's on the Bay phone is 541-867-3664. The view from Brewers on the Bay includes the marina (outside), and the bottling line and brew kettles (inside)."",""address"":[""2320 SE OSU Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.6202,""lon"":-124.052}}",1,57,1
+southend_brewery_and_smokehouse_charleston-frostbite,0,0,245122072577,"{""name"":""Frostbite"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+weyerbacher_brewing_company-raspberry_imperial_stout,0,0,245745451008,"{""name"":""Raspberry Imperial Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Enjoyed alone as a winter-warmer or as the perfect finish to any fine meal, our Raspberry Imperial Stout is a wonderfully full-flavored beer with just a \""kiss\"" of raspberry flavor. \r\nWhen we brew this beer we add just a touch of real raspberries during the fermentation process. The result is a modest fruit flavor which enhances--- without dominating the rich, malty, stout taste.\r\n\r\nOur Raspberry Imperial Stout (8.0% ABV) is great alone or as an after-dinner accompaniment. It's especially good with chocolate desserts. We brew it only during the winter months, so check out the Brewing Schedule on the \""What's New\""  page for the next time it will be coming to a beer store near you."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,11,1
+san_diego_brewing-friars_ipa,0,0,244994670594,"{""name"":""Friars IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""san_diego_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,34,1
+rogue_ales-charlie_1981,0,0,244995129344,"{""name"":""Charlie 1981"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An unfiltered strong ale that is amber in color and has an intense piney hop aroma. The beer is named in honor of Charlie Papazian, president of the Association of Brewers, founder of the American Homebrewers Association and homebrewing guru. John Maier, Brewmaster for Rogue Ales, made his first batch of beer in 1981 using Papazians influential book \""The New Complete Joy of Homebrewing.\"" \r\nBrewed with Munich and Crystal 40 two-row pale malt, and dry-hopped with Horizon, Sterling and Amarillo hops, free range coastal waters, and top fermenting Pacman yeast.""}",1,35,1
+steamworks-nirvana_nut_brown_ale,0,0,245114142720,"{""name"":""Nirvana Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""Our regulars have many reasons for frequenting our premises. Some come for the comfy chairs, a game of pool, or to exude some seriously suaveness at the oyster bar on a Friday evening. For the truly devoted, however, who come in search of truth, it's the Nut Brown they're after. Often they arrive with a glazed look in their eyes, having endured days of office drudgery or the unknowable hardships of securing a parking spot. Set your cares aside, for all can find solace in this ale's yin-yang of nutty maltiness and delicate, dryish hoppiness. For our Nut Brown, an ale deep auburn in colour, we use a blend of Munich, caramel and chocolate malts to create a rich malty palate with a lingering dry chocolatiness.""}",1,37,1
+the_alchemist-heathen,0,0,245104508928,"{""name"":""Heathen"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""An american IPA brewed with a blend of 3 base malts and a multitude of hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+spanish_peaks_brewing-peaches_and_cream,0,0,245122596864,"{""name"":""Peaches and Cream"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spanish_peaks_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,59,1
+raccoon_river_brewing-railyard_ale,0,0,245001617410,"{""name"":""Railyard Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,50,1
+spring_house_brewing_company,0,0,245105819649,"{""name"":""Spring House Brewing Company"",""city"":""Conestoga"",""state"":""Pennsylvania"",""code"":""17516"",""country"":""United States"",""phone"":"""",""website"":""http://www.springhousebeer.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2519 Main St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.9525,""lon"":-76.3295}}",1,17,1
+tomos_watkin_and_sons_ltd,0,0,245120892929,"{""name"":""Tomos Watkin and Sons Ltd."",""city"":""Swansea"",""state"":""Wales"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01792)-775333"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Unit 3, Century Park, Valley Way""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.6666,""lon"":-3.9443}}",1,54,1
+tworows_restaurant_brewery_dallas-esb,0,0,245105623041,"{""name"":""ESB"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tworows_restaurant_brewery_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+wainwright_brewing-black_jack_black_and_tan,0,0,245745975296,"{""name"":""Black Jack Black and Tan"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wainwright_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,15,1
+taylor_s_crossing_brewing-dominion_lager,0,0,245111521283,"{""name"":""Dominion Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_crossing_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,31,1
+southern_tier_brewing_co-phin_matt_s_extroidinary_ale,0,0,245114470400,"{""name"":""Phin & Matt's Extroidinary Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""After sampling a wide array of great beers, the duo hit upon an idea.  \""I've got it!\"" exclaimed Matt, \""we'll use vast amounts of whole hops, the finest malt, and put a little love in each batch.\""  \""Eureka!\"" shouted Phin.  And thus became a beer so fresh and tasty they had to put their names on it."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,38,1
+olde_main_brewing-caramel_apple_ale,0,0,244865105921,"{""name"":""Caramel Apple Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""olde_main_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,19,1
+rock_bottom_restaurant_brewery_san_jose-pilsner,0,0,244988248065,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+wychwood_brewery-bah_humbug,0,0,245747744769,"{""name"":""Bah Humbug"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,28,1
+shipwrecked_brew_pub-peninsula_porter,0,0,245004107776,"{""name"":""Peninsula Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipwrecked_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,55,1
+uerige_obergrige_hausbrauerei-alt,0,0,245102870529,"{""name"":""Alt"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""uerige_obergrige_hausbrauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,10,1
+odell_brewing-imperial_stout,0,0,244877164546,"{""name"":""Imperial Stout"",""abv"":7.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""odell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+rogue_ales-ten_thousand_brew_ale,0,0,244985626624,"{""name"":""Ten Thousand Brew Ale"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Brew 10,000: One Brewer, Eighteen Years, Ten-Thousand Batches of Beer. \r\n\r\nBrew 10,000 is not so much a style of beer, rather it is a new recipe using some of the best ingredients John Maier has ever brewed with... Vienna, French Special Aroma, and Maris Otter Pale Malts; Yakima Summit and German Saphir Hops, Free-range Coastal Waters, and PacMan Yeast. \r\n\r\nBrew 10,000 was brewed only once, so its allocated and very, very limited. Its packaged in the swing-top 750-ml ceramic bottle and available only at select retailers. Note, Brew 10,000 was sold out at the brewery in early 2007, however, very limited amounts may still available in the retail trade, email Schuyler@rogue.com for a retailer near you."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,12,1
+sharktooth_brewing,0,0,245004894209,"{""name"":""Sharktooth Brewing"",""city"":""Kahului"",""state"":""Hawaii"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":20.8947,""lon"":-156.47}}",1,57,1
+southern_tier_brewing_co-southern_tier_harvest_ale,0,0,245122072578,"{""name"":""Southern Tier Harvest Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,58,1
+white_marsh_brewing_company-avenue_ale,0,0,245745451009,"{""name"":""Avenue Ale"",""abv"":4.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""white_marsh_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""2007 Maryland Governor's Cup Bronze Medal:\r\nA golden colored ale with crisp malt character and a slightly spicy hop aroma. We use a good amount of wheat and some German malt in this one to give it a very refreshing taste. Avenue Ale is a true session beer, so sit down and prepare for a long one."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,11,1
+sandlot_brewery_at_coors_field,0,0,244994670595,"{""name"":""SandLot Brewery at Coors Field"",""city"":""Denver"",""state"":""Colorado"",""code"":""80205"",""country"":""United States"",""phone"":""1-303-298-1587"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2145 Blake Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.7557,""lon"":-104.993}}",1,34,1
+route_66_brewery-river_city_red_ale,0,0,244995129345,"{""name"":""River City Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""route_66_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,35,1
+stevens_point_brewery,0,0,245114142721,"{""name"":""Stevens Point Brewery"",""city"":""Stevens Point"",""state"":""Wisconsin"",""code"":""54481"",""country"":""United States"",""phone"":""1-715-344-9310"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2617 Water Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.5104,""lon"":-89.5734}}",1,37,1
+the_alchemist-light_weight,0,0,245104508929,"{""name"":""Light Weight"",""abv"":4.33,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""Our lightest beer, and our Bronze Medal Winner 2006 World Beer Cup German pilsner malt and American hops give this brew a light, crisp finish. Made with the light beer drinker in mind."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,14,1
+spilker_ales-espresso_stout_discontinued,0,0,245122596865,"{""name"":""Espresso Stout (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spilker_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+red_kettle_brewing-dark,0,0,245001682944,"{""name"":""Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""red_kettle_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,50,1
+stieglbrauerei_zu_salzburg_gmbh-weizengold_hefefein,0,0,245105885184,"{""name"":""Weizengold Hefefein"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stieglbrauerei_zu_salzburg_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""Stiegl Weizengold. It has 12o original gravity; the choicest ingredients and a top fermentation process are responsible for the highest possible quality and an unmistakable flavor. It is brewed according to the classic wheat beer recipe: 60 % wheat malt and 40 % barley malt, top fermentation and in compliance with the Purity Law of 1516.  This fine yeast wheat beer specialty is a refreshing, natural and stimulating beer brand."",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,17,1
+tunner_s_guild_brewing_systems-berkshire_springs_stock_ale,0,0,245120892930,"{""name"":""Berkshire Springs Stock Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tunner_s_guild_brewing_systems"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,54,1
+tyranena_brewing-hopwhore_imperial_india_pale_ale,0,0,245105623042,"{""name"":""HopWhore Imperial India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,16,1
+wernesgruner_brauerei_gmbh-wernesgruner_pils_legende,0,0,245746040832,"{""name"":""Wernesgrüner Pils Legende"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wernesgruner_brauerei_gmbh"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic German-style Pils"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,15,1
+thomas_kemper_brewing-oktoberfest,0,0,245111586816,"{""name"":""Oktoberfest"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thomas_kemper_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,31,1
+spilker_ales-wind_chill_spiced_ale_discontinued,0,0,245114535936,"{""name"":""Wind Chill Spiced Ale (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spilker_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+orkney_brewery-skullsplitter_ale,0,0,244865171456,"{""name"":""Skullsplitter Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""orkney_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Skull Splitter is our strongest ale: which is named after Thorfinn Einarsson who was the 7th Viking Earl of Orkney. Sophisticated, satiny smooth with a deceptively light character, it is a tribute to our colourful forbear.\r\n\r\nOn the nose, this strong beer has a fruity malt character, with hints of dark fruit, spicy hop, dates and figs.\r\n\r\nOn the palate, rich and complex with sweet toasted malt, molasses, fresh and dried fruit and hints of warming spices."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,19,1
+rogue_ales-issaquah_bullfrog_ale,0,0,244988248066,"{""name"":""Issaquah Bullfrog Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""An American style wheat beer and an Issaquah Brewhouse origina. Light in color and body and served with a lemon, Bullfrog is crisp, refreshing and goes down easy. Take a flying leap!\r\n\r\nBullfrog Ale took the Silver Medal at the 2004 Great American Beer Festival in the American Wheat category."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,18,1
+sierra_nevada_brewing_co-torpedo_extra_ipa,0,0,245004107777,"{""name"":""Torpedo Extra IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Sierra Nevada Torpedo Ale is a big American IPA; bold, assertive and full of flavor and aromas highlighting the complex citrus, pine and herbal character of whole-cone American hops.\r\n\r\nNamed after the torpedo-shaped hopback employed in its making, is an IPA made with Chinook, Cascade and Centennial hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,55,1
+upper_mississippi_brewing-mudcat_stout,0,0,245102870530,"{""name"":""Mudcat Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upper_mississippi_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,10,1
+otter_creek_brewing_wolaver_s_organic_ales-alta_gracia_coffee_porter,0,0,244877230080,"{""name"":""Alta Gracia Coffee Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-12-20 16:10:29"",""description"":""Brewed with organic roasted barley and chocolate malts for a rich, dark and robust flavor with an infusion of organic vanilla beans and coffee from the Dominican Republic farm community Alta Gracia. "",""style"":""Porter"",""category"":""North American Ale""}",1,49,1
+russell_brewing-cream_ale,0,0,244985626625,"{""name"":""Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russell_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,12,1
+south_county_brewing_co,0,0,245121679360,"{""name"":""South County Brewing Co."",""city"":""Fawn Grove"",""state"":""Pennsylvania"",""code"":""17321"",""country"":""United States"",""phone"":"""",""website"":""http://www.southcountybrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""104 Mill St.""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.7323,""lon"":-76.4496}}",1,57,1
+spilker_ales-cortland_wheat,0,0,245122138112,"{""name"":""Cortland Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spilker_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+youngs_company_brewery-old_nick,0,0,245745451010,"{""name"":""Old Nick"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""youngs_company_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,11,1
+sharktooth_brewing-amber,0,0,244994736128,"{""name"":""Amber"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sharktooth_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,34,1
+saint_louis_brewery_schlafy_tap_room-schlafly_oatmeal_stout,0,0,244995129346,"{""name"":""Schlafly Oatmeal Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+stroh_brewery_company-hatuey_beer,0,0,245114142722,"{""name"":""Hatuey Beer"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stroh_brewery_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+the_blind_bat_brewery_llc-hellsmoke_porter,0,0,245104508930,"{""name"":""Hellsmoke Porter"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_blind_bat_brewery_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""A roasty robust porter. \r\nBrewed with malt that I smoke over alder and apple wood. \r\n\r\nGoes great with steak, burgers, \r\nas well as barbecued, grilled, or smoked food. \r\nKielbasi! \r\n\r\nCheeses? \r\nTry it with Gouda, Brie, Swiss, or Havarti."",""style"":""Porter"",""category"":""Irish Ale""}",1,14,1
+spring_house_brewing_company-kerplunk_imperial_chocolate_stout,0,0,245122596866,"{""name"":""Kerplunk Imperial Chocolate Stout"",""abv"":8.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Kerplunk! Imperial Chocolate Stout is named for the delicious sound made as large amounts of Wilbur chocolate and west coast hops are added directly into the simmering brew kettle. This hefty black imperial-style stout boasts a rich caramel sweetness lavished by a robust, deep-roasted heartiness you can sink your two front teeth into. The bold flavors found in Kerplunk! are produced using a generous blend of roasted barley, crystal malts and locally produced chocolate. The resulting brew exhibits a deliciously complex and unique profile of subtle mocha coffee and intense chocolate, balanced nicely by the underlying roasted hop bitterness. This is a balanced strong brew boasting an A.B.V. of 8.1% that can creep up on you.""}",1,59,1
+rogue_ales-golden_frog,0,0,245001682945,"{""name"":""Golden Frog"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""A Belgian - Style Pale Ale.  The Belgian yeast produces flavors of cloves, banana, and other spices that meld perfectly with the malt and hops.  Ingredients: Pilsner Malt, Saaz Hops, Blegian Yeast, Free Range Cascade Water.\r\nNo Chemicals, Additives or Preservatives."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,50,1
+stone_cellar_brewpub_restaurant-riverboat_rye,0,0,245105885185,"{""name"":""Riverboat Rye"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_cellar_brewpub_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+unibroue-15,0,0,245120958464,"{""name"":""15"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+upper_mississippi_brewing-mullin_brown,0,0,245105623043,"{""name"":""Mullin Brown"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upper_mississippi_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,16,1
+yamhill_brewing-best_mild_discontinued,0,0,245746040833,"{""name"":""Best Mild (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yamhill_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,15,1
+tommyknocker_brewery_and_pub-jack_whacker_wheat_ale,0,0,245111586817,"{""name"":""Jack Whacker Wheat Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""Jack Whacker Wheat Ale is a light, unfiltered brew with a citrus aroma and flavor imparted by a late addition of lemon grass. It's the perfect refreshment for a thirsty, trail-weary ale lover."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,31,1
+st_peter_s_brewery-winter_ale,0,0,245114535937,"{""name"":""Winter Ale"",""abv"":6.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,38,1
+otter_creek_brewing_wolaver_s_organic_ales-copper_ale,0,0,244865171457,"{""name"":""Copper Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""otter_creek_brewing_wolaver_s_organic_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Copper Ale, a medium bodied, amber ale inspired by the Altbiers of Northern Germany. Brewed with six different malts, three hop varieties and our special house yeast, Copper Ale is characterized by a well-balanced blend of malty notes and mild bitterness."",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,19,1
+rogue_ales-santas_private_reserve,0,0,244988248067,"{""name"":""Santas Private Reserve"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Rogues annual holiday offering, Santas Private Reserve, is a variation of the classic Saint Rogue Red, but with double the hops--including Chinook, and Centennial, and a mystery hop called Rudolph by head brewer John \""more hops\"" Maier!This holiday elixir is brewed with two-row Harrington, Klages and Munich malts, along with Hugh Baird 30-37, Carastan 13-17, and Crystal 70-80 malts, plus free range coastal water and Johns proprietary top-fermenting Pacman yeast. Available in both 22-ounce bottles, 12oz Loose packs for Winter 2005, and 12oz six packs for 2006."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,18,1
+silver_gulch_brewing_company-anchorage_ale,0,0,245004107778,"{""name"":""Anchorage Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""silver_gulch_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+upstream_brewing_old_market-heartland_hefeweizen,0,0,245103001600,"{""name"":""Heartland Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,10,1
+pearl_street_brewery,0,0,245001027584,"{""name"":""Pearl Street Brewery"",""city"":""La Crosse"",""state"":""Wisconsin"",""code"":""54603"",""country"":""United States"",""phone"":""1-608-784-4832"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1401 Saint Andrew Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.8344,""lon"":-91.2362}}",1,49,1
+sabmiller_india,0,0,244985626626,"{""name"":""Sabmiller India,"",""city"":""Bangalore"",""state"":""Karnataka"",""code"":""560022"",""country"":""India"",""phone"":""91 (0) 80 - 22198800"",""website"":""http://www.sabmiller.in/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""If you are contacting SABMiller India with a question, then please feel free to find the answer to your question by contacting us."",""address"":[""SKOL Breweries Limited""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":12.9683,""lon"":77.657}}",1,12,1
+southend_brewery_and_smokehouse_charleston-ironman_wheat,0,0,245121744896,"{""name"":""Ironman Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,57,1
+spoetzl_brewery-shiner_blonde,0,0,245122203648,"{""name"":""Shiner Blonde"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spoetzl_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+shepherd_neame,0,0,244994736129,"{""name"":""Shepherd Neame"",""city"":""Faversham"",""state"":""Kent"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01795)-532206"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""17 Court Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":51.3169,""lon"":0.8921}}",1,34,1
+saint_louis_brewery_schlafy_tap_room-schlafly_oktoberfest,0,0,244995194880,"{""name"":""Schlafly Oktoberfest"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""A malty, full-bodied, deep reddish-amber lager. Traditionally brewed in March for the Oktoberfest in the fall, this style is also known as Märzen. Also available in bottles."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,35,1
+t_bonz_gill_grill_and_brewery-market_street_wheat,0,0,245114142723,"{""name"":""Market Street Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_bonz_gill_grill_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,37,1
+the_hop_yard,0,0,245104574464,"{""name"":""The Hop Yard"",""city"":""San Ramon"",""state"":""California"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":""http://www.hopyard.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Good rotating selection of beers from distinct breweries. Good food as well."",""address"":[""Bollinger Canyon Rd.""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":37.7839,""lon"":-122.001}}",1,14,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-satin_stout,0,0,245122662400,"{""name"":""Satin Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,59,1
+santa_fe_brewing_company-santa_fe_wheat,0,0,245001682946,"{""name"":""Santa Fe Wheat"",""abv"":5.25,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A true Bavarian wheat yeast, sixty percent wheat malt, and German hops make Santa Fe Wheat Beer as true to the style as any American rendition can be. German Wheat Beer, with its hints of banana and clove, its delectable, spicy, hops, and its pale golden color, is becoming increasingly popular in America’s craft brewing world, and with good reason: wheat beers are both light enough to please light beer drinkers, and complex enough to please true micro-brew connoisseurs. To mimic a classic German Hefeweisen, after pouring your Santa Fe Wheat Beer into a glass, swirl the last few drops in the bottle to loosen the yeast from the bottom, then pour the yeast over the top of your beer."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,50,1
+stone_coast_brewing_portland-sunday_river_alt,0,0,245105950720,"{""name"":""Sunday River Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_coast_brewing_portland"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,17,1
+valley_brewing_company-valley_brewing_apricot_ale,0,0,245120958465,"{""name"":""Valley Brewing Apricot Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Apricot Ale is a fruit beer produced using 100% Apricot fruit extract. The beer has a hint of Apricot in the nose and a sweet clean and refreshing finish."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,54,1
+upstream_brewing_company_at_legacy-oak_aged_ipa,0,0,245105688576,"{""name"":""Oak Aged IPA"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+yards_brewing-thomas_jefferson_s_tavern_ale,0,0,245746040834,"{""name"":""Thomas Jefferson's Tavern Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""All beers are not created equal.\r\n\r\nWhile Thomas Jefferson spent much of his time in Philadelphia drafting, editing, revising, and re-editing the Declaration of Independence, he longed to be home in Monticello, where twice a year his wife Martha would brew up one of his favorite beverages — beer.\r\n\r\nThomas Jefferson Tavern Ale™ is a strong golden ale, based on Jefferson's original recipe, which included ingredients specified and grown on his Virginia estate.\r\n\r\nEnjoy a taste of history, courtesy of Yards Brewing Company, Philadelphia's premier brewer and bottler.""}",1,15,1
+tongerlo-tongerlo_dubbel_blond,0,0,245111586818,"{""name"":""Tongerlo Dubbel  Blond"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tongerlo"",""updated"":""2010-07-22 20:00:20"",""description"":""DOUBLE BLONDE 6°\r\nCopper-coloured beer with a honey aroma, a full and smooth flavour and a gently evolving aftertaste"",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,31,1
+the_alchemist-el_jefe,0,0,245114535938,"{""name"":""El Jefe"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""Our holiday ale. This I.D.A., India Dark Ale, is crisp, bitter and overflowing with the aroma of spruce. Perfect for the holidays."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+phoenix_beverages_ltd-phoenix,0,0,244988444672,"{""name"":""Phoenix"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""phoenix_beverages_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""A polished, golden yellow beer with 5% alcohol. Phoenix beer is pasteurised after bottling, according to natural conservation methods. The quality of the underground water also allows us to produce a beer with no chemicals additives. Time of maturation before distribution is meticulously controlled.""}",1,19,1
+ruppaner_brauerei-hefe_weizen_hell,0,0,244988313600,"{""name"":""Hefe Weizen Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ruppaner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,18,1
+simmerberg_brusttt_und_taferne-braustatt_pils,0,0,245004173312,"{""name"":""Bräustatt Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""simmerberg_brusttt_und_taferne"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+victory_brewing-helios,0,0,245103001601,"{""name"":""Helios"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,10,1
+pivzavod_baltika-baltika_6_porter,0,0,245001093120,"{""name"":""Baltika 6 Porter"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pivzavod_baltika"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,49,1
+sacramento_brewing_company,0,0,244985692160,"{""name"":""Sacramento Brewing Company"",""city"":""Sacramento"",""state"":""California"",""code"":""95821"",""country"":""United States"",""phone"":""(916) 485-4677"",""website"":""http://sacbrew.blogspot.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2713 El Paseo Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.6191,""lon"":-121.4}}",1,12,1
+speakeasy_ales_and_lagers-double_daddy,0,0,245121744897,"{""name"":""Double Daddy"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""speakeasy_ales_and_lagers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,57,1
+steamworks-blitzen_christmas_ale,0,0,245122203649,"{""name"":""Blitzen Christmas Ale"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""A strong, fruity, belgian-style trippel 8.5% alc./vol.\r\n\r\nOur aptly named Christmas Ale is based on the strong beers traditionally brewed by Belgium's trappist monasteries. Trippel is typically at least 8% alc./vol. and has a light golden colour. Because of its high strength this beer has an intensely fruity palate. Up front it has a honeyish sweetness but the finish is dry and champagne-like. Most weary Christmas shoppers would be well advised to benefit from the warmth and 'ho-ho-ho factor' that only a beer of the Biltzen's calibre can provide."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,58,1
+sherlock_s_home-cologne_golden_ale,0,0,244994736130,"{""name"":""Cologne Golden Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sherlock_s_home"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+saint_somewhere_brewing_company-lectio_divina,0,0,244995194881,"{""name"":""Lectio Divina"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_somewhere_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the spirit of the abbey ales of Belgium. Brewed with the same care and attention to the Art of Brewing that is practiced in the monastic breweries of Belgium.\r\n\r\nA Belgian inspired amber. This beer gets it’s color from the candi sugar, as it is made without dark or crystal malts."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,35,1
+tap_room_brewing_company-tap_room_no_21_amber_ale,0,0,245114208256,"{""name"":""Tap Room No. 21 Amber Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tap_room_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,37,1
+the_lost_abbey-the_angel_s_share_bourbon_barrel_aged,0,0,245104574465,"{""name"":""The Angel's Share - Bourbon Barrel Aged"",""abv"":12.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_lost_abbey"",""updated"":""2010-07-22 20:00:20"",""description"":""own in Kentucky and across the pond in Scotland, distillers who age their whiskeys for many years refer to the evaporation of the spirits from their barrels as \""The Angel's Share.\"" We couldn’t agree more. Each time a barrel is filled, a measure of liquid seeps into the oak and is lost for good.\r\n\r\nThis striking Strong Ale is brewed with copious amounts of Caramel malt to emphasize the vanilla and oak flavors found in freshly emptied bourbon or brandy barrels. The beer spends a year in oak before it is packaged for release. The beer is 12.5% ABV and is available in 375ml and 750ml bottles and on draft at inspired locations."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,14,1
+strangford_lough_brewing_company_ltd,0,0,245122662401,"{""name"":""Strangford Lough Brewing Company Ltd"",""city"":""Killyleagh"",""state"":""County Down"",""code"":""BT30 9UE"",""country"":""Ireland"",""phone"":""+44 (0)28 4482 1461"",""website"":""http://slbc.ie/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Braidleigh Lodge 22 Shore Road""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":54.3906,""lon"":-5.6548}}",1,59,1
+shipwrecked_brew_pub-lighthouse_light,0,0,245001748480,"{""name"":""Lighthouse Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shipwrecked_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+storm_brewing-fruit_lambics,0,0,245105950721,"{""name"":""Fruit Lambics"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""storm_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""These authentic Belgian-style ales are intensely sour, dry and complex. All three of the lambics - Raspberry, Blackberry and Black Cherry - are aged in oak casks for more than one year. 15 kg, give or take, of whole unpasteurized fruit is added to each 200 litre oak barrel of fermented beer. The naturally occurring wild yeasts cause a second, slow fermentation, breaking down the fruit sugars to total dryness."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,17,1
+victory_brewing-st_victorious,0,0,245120958466,"{""name"":""St. Victorious"",""abv"":7.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""From the tradition started by the monks of St. Francis of Paula in 1634 comes this warming beer of rich heritage. A dark, rich lager of sublime complexity and character, St. Victorious is created from multiple German malts. Laborious decoction mashing yields the choicest elements of the malt. Long, cold aging mellows the strong temperament of this subtle beer. Celebrate the end of winter with a warming draft of St. Victorious Doppelbock!"",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+water_street_lake_country-pils,0,0,245746106368,"{""name"":""Pils"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_lake_country"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,16,1
+troegs_brewing-scratch_14_2008,0,0,245111652352,"{""name"":""Scratch #14 2008"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch #14-2008 is our interpretation of a farmhouse ale—a once near-extinct winter-brewed (and summer–imbibed) Belgian ale.\r\n\r\nOur celebratory brew starts with a black pepper and ginger nose. The nicely carbonated brew releases a honey-malt flavor that gives way to a tart crisp finish that masks the elevated ABV.\r\n\r\nWe use a blended yeast strain (Saison Dupont & Le Chouffe) to create the traditional peppery, spicy earthy flavors of the saison. Slight hints of ginger also come through in the finish.\r\n\r\nDrink it ‘til the wedding bells chime!"",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,31,1
+thunderhead_brewery-dry_stout,0,0,245114601472,"{""name"":""Dry Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,38,1
+pizza_port_brewing_solana_beach-cuvee_de_tomme,0,0,244988510208,"{""name"":""Cuvee de Tomme"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizza_port_brewing_solana_beach"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+saint_louis_brewery_schlafy_tap_room-schlafly_pale_ale,0,0,244988313601,"{""name"":""Schlafly Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+sioux_falls_brewing-ringneck_red_ale,0,0,245004173313,"{""name"":""Ringneck Red Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sioux_falls_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,55,1
+victory_brewing,0,0,245745188864,"{""name"":""Victory Brewing"",""city"":""Downingtown"",""state"":""Pennsylvania"",""code"":""19335"",""country"":""United States"",""phone"":""1-610-873-0881"",""website"":""http://www.victorybeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""420 Acorn Lane""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.0061,""lon"":-75.6942}}",1,10,1
+pizzeria_uno_chicago_grill_brewery-bootlegger_blonde_ale,0,0,245001093121,"{""name"":""Bootlegger Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pizzeria_uno_chicago_grill_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,49,1
+sports_city_cafe_brewery-creamy_stout,0,0,245103525888,"{""name"":""Creamy Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sports_city_cafe_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+st_peter_s_brewery-golden_ale,0,0,245121810432,"{""name"":""Golden Ale"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_peter_s_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+steve_and_clark_s_brew_pub_and_sausage_co_2,0,0,245122269184,"{""name"":""Steve and Clark's Brew Pub and Sausage Co. #2"",""city"":""Durham"",""state"":""North Carolina"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":35.994,""lon"":-78.8986}}",1,58,1
+sierra_nevada_brewing_co-bigfoot_2002,0,0,244994736131,"{""name"":""Bigfoot 2002"",""abv"":9.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+santa_fe_brewing_company-sante_fe_pale_ale,0,0,244995194882,"{""name"":""Sante Fe Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_fe_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Anything but a typical American Pale, Santa Fe Pale Ale is as full bodied as its most robust English counterparts, while asserting its American origin with a healthy nose resplendent with Cascade and Willamette hops. It finishes with a well-balanced combination of the subtle, almost Pilsner-like maltiness accentuated by the German yeast used to brew this Santa Fe classic, and a hop bite sufficient to leave a lingering smile on the face of any fan of American Pale Ales."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+terrapin_beer_company-terrapin_midnight_project_depth_charge_espresso_milk_stout,0,0,245114208257,"{""name"":""Terrapin Midnight Project Depth Charge Espresso Milk Stout"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Terrapin Midnight Project Brew Two 2009. Sometime around midnight in a city nobody can agree on, the idea for Terrapin and Left Hand to brew a collaboration beer was born. Depth Charge is the second in the series of one-time releases between the two breweries. Be wary of the calm before the storm. This creamy, deeply delicious milk stout will seduce you into submission while the explosion of hand roasted gourmet espresso will blow you into next week. We Shall Drink in the breweries. We Shall Drink in the pubs, We Shall Drink the the comfort of our homes. We Shall Never Surrender."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,37,1
+thirstybear_brewing-brown_bear_ale,0,0,245104640000,"{""name"":""Brown Bear Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,14,1
+terrapin_beer_company-capt_n_krunkles,0,0,245122727936,"{""name"":""Capt'n Krunkles"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A black IPA.""}",1,59,1
+skagit_river_brewing-yellowjacket_pale_ale,0,0,245001748481,"{""name"":""Yellowjacket Pale Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""skagit_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,50,1
+terrapin_beer_company-terrapin_rye_pale_ale,0,0,245105950722,"{""name"":""Terrapin Rye Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""By using an exact amount of rye, a grain seldom found in other micro brewed beers, the Rye Pale Ale acquires its signature taste. Made with five varieties of hops and a generous amount of specialty malts, it offers a complex flavor and aroma that is both aggressive and well balanced – a rare find among beers.\r\n\r\nThe Terrapin Rye Pale Ale was released in Athens, GA in April of 2002 at the Classic City Brew Fest. Six months later this beer which was sold only in Athens was awarded the American Pale Ale Gold Medal at the 2002 Great American Beer Festival, the most prestigious competition in North America. We hope you will agree with our peers in the brewing industry that this is truly one of the best pale ales in the country."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+whitbread_beer_company,0,0,245751611392,"{""name"":""Whitbread Beer Company"",""city"":""Luton"",""state"":""Bedford"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01582)-391166"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Porter Tun House""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.1357,""lon"":-0.468}}",1,54,1
+weissbierbrauerei_hopf-weisse_export_helle_wesse,0,0,245746106369,"{""name"":""Weiße Export / Helle Weße"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weissbierbrauerei_hopf"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,16,1
+troegs_brewing-the_mad_elf,0,0,245111652353,"{""name"":""The Mad Elf"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The Mad Elf, a cheerful creation to warm your heart and enlighten your tongue. The combination of Cherries, Honey, and Chocolate Malts delivers gentle fruits and subtle spices. Fermented and aged with a unique yeast, this ruby red beer has significant warming strength that underlies the pleasant character of this intriguing yet delicious Ale. The Mad Elf, a jolly and delicious beer for the Holidays.""}",1,31,1
+thunderhead_brewery_2,0,0,245114601473,"{""name"":""Thunderhead Brewery #2"",""city"":""Grand Island"",""state"":""Nebraska"",""code"":""68801"",""country"":""United States"",""phone"":""1-308-398-2500"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""120 East Third Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.9259,""lon"":-98.3397}}",1,38,1
+port_brewing_company-mongo_double_ipa,0,0,244988510209,"{""name"":""Mongo Double IPA"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""port_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A Double IPA brewed in memory of the brew cat.  In honor of Mongo, Mike Rodriguez made his first Double IPA, as he loved the cat and wanted to honor him with this beer. This 8.5% abv beer was made with Columbus hops (Mongo’s Birthname), Cascade for the Mama cat, and Simocoe because that is Mike’s favorite hop."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,19,1
+seabright_brewery-blur_ipa,0,0,244988313602,"{""name"":""Blur IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,18,1
+sprecher_brewing-black_bavarian_lager,0,0,245120958464,"{""name"":""Black Bavarian Lager"",""abv"":5.86,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sprecher_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This intensely dark Kulmbacher style lager has a superb malt complexity with the distinctive flavors and aromas of coffee, caramel and chocolate.\r\n\r\nA renowned smoothness and a creamy, tan head make it a world champion."",""style"":""German-Style Schwarzbier"",""category"":""German Lager""}",1,55,1
+wdi_bru_huus-hanf,0,0,245745254400,"{""name"":""Hanf"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+porterhouse_restaurant_and_brewpub-irish_stout,0,0,245001093122,"{""name"":""Irish Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""porterhouse_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+spring_house_brewing_company-planet_bean_coffee_stout,0,0,245103525889,"{""name"":""Planet Bean Coffee Stout"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spring_house_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed to give the stout a smoother, almost slick, mouthfeel with a nice finish of coffee provided by Cumberland Coffee and Tea Company. Dark malts are used to give this beer a very complex roast flavor. Lower bittering rates ~30 IBU’s helps put the flavor highlighting the maltiness, and roasted malt. ABV is coming in around 7% on this one!""}",1,12,1
+steam_whistle_brewery-steamwhistle_lager,0,0,245121810433,"{""name"":""Steamwhistle Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steam_whistle_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Good clean lager."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,57,1
+t_bonz_gill_grill_and_brewery,0,0,245122269185,"{""name"":""T-Bonz Gill, Grill and Brewery"",""city"":""Mount Pleasant"",""state"":""South Carolina"",""code"":""29464"",""country"":""United States"",""phone"":""1-843-971-7777"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1028 Johnny Dodds Boulevard""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":32.8091,""lon"":-79.875}}",1,58,1
+sierra_nevada_brewing_co-summerfest,0,0,244994801664,"{""name"":""Summerfest"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nOur Summerfest® is a refreshing, pilsner-style lager. Its incredible smoothness comes from an extra-long lagering period. Lighter in body than our ales but just as complex in character, Summerfest® quenches your thirst with big aroma and a tangy hop bite. \r\n\r\nGOLD MEDAL WINNER\r\nCalifornia State Fair (European Light Lagers: 1999)"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,34,1
+sarah_hughes_brewery-dark_ruby_ale,0,0,244995194883,"{""name"":""Dark Ruby Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sarah_hughes_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+three_floyds_brewing,0,0,245114208258,"{""name"":""Three Floyds Brewing"",""city"":""Munster"",""state"":""Indiana"",""code"":""46321"",""country"":""United States"",""phone"":""1-219-922-3565"",""website"":""http://www.threefloydspub.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""9750 Indiana Parkway""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":41.5354,""lon"":-87.5158}}",1,37,1
+three_floyds_brewing-gumballhead,0,0,245104640001,"{""name"":""Gumballhead"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Three Floyds official summer beer highly dry hopped American wheat beer. Quite hoppy. Gumballhead is brewed from red wheat and amarillo hops. It has a medium haze, due to bottle conditioning; once the beer is bottled, extra yeast is added for a secondary fermentation. The hops give off a pronounced citrus note on the nose. Notes of bread - from the yeast - and a good malt undertone. Medium carbonation."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,14,1
+the_alchemist-revitalization_rye,0,0,245122727937,"{""name"":""Revitalization Rye"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""This IPA is brewed with 35% rye malt. The crisp malt character is layered with Warrior hops. Dry-hopped with Warrior and Simcoe."",""style"":""American Rye Ale or Lager"",""category"":""Other Style""}",1,59,1
+sly_fox_brewhouse_and_eatery_royersford-instigator_doppelbock,0,0,245119320064,"{""name"":""Instigator Doppelbock"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+the_church_brew_works-pious_monk_dunkel,0,0,245106016256,"{""name"":""Pious Monk Dunkel"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""Gold Medal Winner of the Great American Beer Festival. Our beer is fairly dark in color, but don’t be afraid. It is a perfect example that dark beers are not always strong beers. The body is surprisingly mellow, and the alcohol content is a bit lower than most people might think. It has a wonderfully clean and roasty aroma. Hop bitterness levels are kept in line, but is has a noticeable hop flavor.""}",1,17,1
+williams_brothers_brewing_company-kelpie_seaweed_ale,0,0,245751742464,"{""name"":""Kelpie Seaweed Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""williams_brothers_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+white_winter_winery,0,0,245746106370,"{""name"":""White Winter Winery"",""city"":""Iron River"",""state"":""Wisconsin"",""code"":""54847"",""country"":""United States"",""phone"":""1-800-697-2006"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""7665 US Highway 2""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":47.3812,""lon"":-94.6669}}",1,16,1
+twin_rivers_brewing-n_w_pale_ale,0,0,245111652354,"{""name"":""N.W. Pale Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_rivers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+titletown_brewing-steam_engine_common,0,0,245114667008,"{""name"":""Steam Engine Common"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,38,1
+pyramid_alehouse_brewery_and_restaurant_berkeley-thomas_kemper_porter,0,0,244988575744,"{""name"":""Thomas Kemper Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""pyramid_alehouse_brewery_and_restaurant_berkeley"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,19,1
+seabright_brewery-oatmeal_stout,0,0,244988379136,"{""name"":""Oatmeal Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""seabright_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,18,1
+stevens_point_brewery-pale_ale,0,0,245121089536,"{""name"":""Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+wells_and_youngs_brewing_company_ltd,0,0,245745254401,"{""name"":""Wells and (&) Youngs Brewing Company Ltd."",""city"":"""",""state"":"""",""code"":"""",""country"":""United Kingdom"",""phone"":"""",""website"":""http://www.bombardier.co.uk/bombardier"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,10,1
+prescott_brewing_company-willow_wheat,0,0,245001158656,"{""name"":""Willow Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""prescott_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,49,1
+staatliches_hofbrauhaus_in_munchen-original,0,0,245103591424,"{""name"":""Original"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""staatliches_hofbrauhaus_in_munchen"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+stone_brewing_co-stone_10th_anniversery_ipa,0,0,245121810434,"{""name"":""Stone 10th Anniversery IPA"",""abv"":10.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Stone 10th Anniversary IPA harkens back to our earlier Anniversary Ales, with abundant hopping at many stages of the brewing process. Appropriately, the aroma is over-the-top, with pronounced piney and resiny hop flavors combined with tropical fruit esters and more subtle notes of toasted malts and alcohol. Our Stone 10th Anniversary Ale weighs in at 10% alcohol by volume (perfect for a 10th anniversary beer), and has a little more color and malt character than our other IPAs. In addition to using the new Summit hop variety in the brewhouse to provide the powerful bitterness, we went back through our records and found some of our favorite hops over the years, and used them to flavor this brew, including Chinook, Crystal, and large doses of Simcoe in the dry-hop to provide a huge, complex, piney, fruity and floral hop character. This is a colossal beer, big in every sense: hoppy, malty, rich, and strong! Right up our alley."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,57,1
+tabernash_brewing-weiss,0,0,245122269186,"{""name"":""Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tabernash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,58,1
+six_rivers_brewery-six_rivers_ipa,0,0,244994801665,"{""name"":""Six Rivers IPA"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""six_rivers_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,34,1
+schlobrauerei_reckendorf-edel_pils,0,0,244995260416,"{""name"":""Edel-Pils"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""schlobrauerei_reckendorf"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+tommyknocker_brewery_and_pub,0,0,245114273792,"{""name"":""Tommyknocker Brewery and Pub"",""city"":""Idaho Springs"",""state"":""Colorado"",""code"":""80452"",""country"":""United States"",""phone"":""1-303-567-2688"",""website"":""http://www.tommyknocker.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1401 Miner Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7418,""lon"":-105.518}}",1,37,1
+thunder_canyon_brewery-thunderhead_ipa,0,0,245104640002,"{""name"":""Thunderhead IPA"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunder_canyon_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Granddaddy of Pale Ales, this style got its start as a special brew for English soldiers living in India.  Our IPA is a medium bodied ale, with a light copper color characterized by an intense hop flavor, with a full flowery hop aroma and higher alcohol content."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,14,1
+timmermans-timmermans_framboise,0,0,245122793472,"{""name"":""Timmermans Framboise"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""timmermans"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,59,1
+sly_fox_brewhouse_and_eatery_royersford-piketown_pils,0,0,245119320065,"{""name"":""Piketown Pils"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sly_fox_brewhouse_and_eatery_royersford"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+titletown_brewing-hopping_turtle_pale_ale,0,0,245106016257,"{""name"":""Hopping Turtle Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+wychwood_brewery-wychcraft,0,0,245751742465,"{""name"":""Wychcraft"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,54,1
+wynkoop_brewing,0,0,245746171904,"{""name"":""Wynkoop Brewing"",""city"":""Denver"",""state"":""Colorado"",""code"":""80202"",""country"":""United States"",""phone"":""1-303-297-2700"",""website"":""http://www.wynkoop.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1634 18th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.7535,""lon"":-104.998}}",1,16,1
+upstream_brewing_company_at_legacy-double_ipa,0,0,245111717888,"{""name"":""Double IPA"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,31,1
+tollemache_and_cobbold_brewery-ipa,0,0,245114667009,"{""name"":""IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tollemache_and_cobbold_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,38,1
+pyramid_alehouse_brewery_and_restaurant_seattle,0,0,244988575745,"{""name"":""Pyramid Alehouse, Brewery and Restaurant - Seattle"",""city"":""Seattle"",""state"":""Washington"",""code"":""98134"",""country"":""United States"",""phone"":""1-206-682-3377"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1201 First Avenue South""]}",1,19,1
+shaftebury_brewing-cream_ale,0,0,244988379137,"{""name"":""Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shaftebury_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,18,1
+stone_cellar_brewpub_restaurant-masterpiece_porter,0,0,245121089537,"{""name"":""Masterpiece Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_cellar_brewpub_restaurant"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,55,1
+wernesgruner_brauerei-pils_legende,0,0,245745254402,"{""name"":""Pils Legende"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wernesgruner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,10,1
+pripps_ringnes_bryggerier,0,0,245001158657,"{""name"":""Pripps Ringnes Bryggerier"",""city"":""Bromma"",""state"":"""",""code"":"""",""country"":""Sweden"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":60.4877,""lon"":9.1885}}",1,49,1
+steamworks-signature_pale_ale,0,0,245103656960,"{""name"":""Signature Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""The term \""Pale Ale\"" dates back to the 1800s when all beer was dark brown in colour. New malting techniques led to the development of pale malt, a barley malt kilned at low temperatures which contributed very little colour to the finished beer. Hence the birth of Pale Ale, an amber- to copper-coloured ale you could actually see through. Plenty of British Crystal malt in the grist lends this ale its rich colour, its caramel maltiness, and adds the occasional whiff of toffee to the nose. An addition of American and German hops to the kettle at the end of the boil is used to suffuse our Pale Ale with a gently spicy hop finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+stone_brewing_co-stone_ipa,0,0,245121875968,"{""name"":""Stone IPA"",""abv"":6.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""An \""India Pale Ale\"" by definition is highly hopped and high in alcohol (ours is 6.9% alc./vol.).\r\n\r\nMedium Bodied Refreshing Ale\r\nLight-medium malt character with a heavy dose of over the top hops! Two full weeks of \""dry hopping\"" give this beer its abundant hop aroma and crisp hop flavor."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,57,1
+the_livery-the_livery_kilt_tilter,0,0,245122334720,"{""name"":""The Livery Kilt Tilter"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Our version of a Scotch Ale is made with a portion of peat smoked barley. Very malty, with a subtle smoky finish. Also available in a barrel aged version."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,58,1
+smuttynose_brewing_co-smuttynose_finestkind_ipa,0,0,245112766464,"{""name"":""Smuttynose Finestkind IPA"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""smuttynose_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Portsmouth is a colonial era seaport town, so it goes to follow that sooner or later we'd brew an India Pale Ale as a tribute to those big, hoppy 19th century ales that made the long sea voyage from England's temperate shores, 'round the Cape of Good Hope, to the sultry climes of the faraway East Indies.\r\n\r\nBut there's another reason we brewed this beer, one that's closer to our home and hearts. Hopheads. \r\n\r\nTen years ago we brewed our first batch of Shoals Pale Ale, our American interpretation of the traditional British ESB (Extra Special Bitter) style. At the time, it was widely considered to be darned hoppy. However, a funny thing happened over the last decade - our Shoals Pale Ale didn't change; beer lovers did, and we started to hear more and more: “Why don't you guys make a really hoppy beer?”\r\n\r\nYou could say, then, that Smuttynose IPA is a physical salute to the glory of the American hop grower. The citrusy hop flavor coming from a mixture of Simcoe and Santiams is pleasantly balanced by a smooth bitterness from the Amarillo hops. The beer itself is light bodied and crisp with a golden color that will throw a slight haze, as we bottle it unfiltered. At 65 IBU's, this is definitely not a training-wheels IPA, but is meant for hop lovers looking to satisfy their craving in a way that's not easy to find. We think they’ll be quite pleased."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,34,1
+shepherd_neame-spitfire_premium_kentish_strong_ale,0,0,244995260417,"{""name"":""Spitfire Premium Kentish Strong Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""shepherd_neame"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+troegs_brewing-dead_reckoning_porter,0,0,245114273793,"{""name"":""Dead Reckoning Porter"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""In the 14th Century, Sailors would rely on sheer skill to get from a starting point to a final destination.  They called this Dead Reckoning.  We see our beer the same way.  We know where to begin and know where to go, but there are hundreds of ways to get there.\r\n\r\nDead Reckoning is unfiltered and weighs in at 5.8% abv and 53 IBU’s. It features Pilsner, Caramel, Chocolate and Roasted malts along with Chinook and Vanguard hops. “The outstanding taste and flavor of Dead Reckoning originates in the chocolate and roasted malts,” says John Trogner. \""There is a nice hoppiness in the front of the beer, but the rich, smooth mouth feel is what really stands out.\"""",""style"":""Porter"",""category"":""Irish Ale""}",1,37,1
+tommyknocker_brewery_and_pub-tundrabeary_ale,0,0,245104640003,"{""name"":""Tundrabeary Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,14,1
+tommyknocker_brewery_and_pub-ornery_amber_lager,0,0,245122793473,"{""name"":""Ornery Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tommyknocker_brewery_and_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""Ornery Amber is brewed with a blend of the finest European hops and gently roasted malts."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+southern_tier_brewing_co-oat_imperial_oatmeal_stout,0,0,245119385600,"{""name"":""Oat Imperial Oatmeal Stout"",""abv"":12.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""It is beer #2 in our \""Blackwater Series\"" of original Imperial Stouts. The first in the Series was \""Is\"", a dark and bitter Russian Imperial Stout. \""Oat\"" is the follow up; an Oatmeal Stout with major alcohol volume and tons of body to back it up. The cloying character of the oats in this brew lends itself to a chewy and almost oily mouthfeel. ABV. is off the charts at about 12.5%. Note, that this is an all malt beer fermented with our house ale strain of yeast. Judicious hopping with Columbus and Chinook produce a hoppy aroma that mingles nicely with the chocolate and de-bittered black barley from Belgium."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,50,1
+titletown_brewing-piper_down_scottish_ale,0,0,245106016258,"{""name"":""Piper Down Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+yuengling_son_brewing-yuengling_premium_beer,0,0,245751742466,"{""name"":""Yuengling Premium Beer"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A regional favorite, Yuengling Premium Beer is popular among local beer drinkers for its thirst quenching taste. It is a pilsner-style brew, gold in color with pale malt character that finishes crisp and clean. Premium flawlessly blends both two-row and six-row barley malt for a well balanced flavor that is always refreshing. Traces of the slight hop aroma are evident in every delicious sip of Premium Beer. Discover this well kept secret and enjoy the superior quality and taste you've come to expect from America's Oldest Brewery."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,54,1
+youngs_company_brewery-winter_warmer,0,0,245746171905,"{""name"":""Winter Warmer"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""youngs_company_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Old Ale"",""category"":""British Ale""}",1,16,1
+upstream_brewing_company_at_legacy-gueuze_lambic,0,0,245111717889,"{""name"":""Gueuze-Lambic"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Belgian-Style Fruit Lambic"",""category"":""Belgian and French Ale""}",1,31,1
+troegs_brewing-nugget_nectar,0,0,245114732544,"{""name"":""Nugget Nectar"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Squeeze those hops for all they’re worth and prepare to pucker up: Nugget Nectar Ale, will take hopheads to nirvana with a heady collection of Nugget, Warrior and Tomahawk hops. Starting with the same base ingredients of our flagship HopBack Amber Ale, Nugget Nectar intensifies the malt and hop flavors to create an explosive hop experience."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,38,1
+rail_house_restaurant_and_brewpub-gold_rush_discontinued,0,0,244988575746,"{""name"":""Gold Rush (discontinued)"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rail_house_restaurant_and_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+siletz_roadhouse_brewery-mojo_ale,0,0,244988444672,"{""name"":""Mojo Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""siletz_roadhouse_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,18,1
+stonecutters_brewhouse,0,0,245121155072,"{""name"":""Stonecutters Brewhouse"",""city"":""Barre"",""state"":""Vermont"",""code"":""5641"",""country"":""United States"",""phone"":""(802) 476-6000"",""website"":""http://www.stonecuttersbrewhouse.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Stonecutters Brewhouse is a 4 barrel brewhouse located in central Vermont in the small town (pop. 9000) of Barre. Barre is the sister town to Montpelier, which is the capital of Vermont. Stonecutters is a locally owned and operated."",""address"":[""14 N Main St.""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":44.1972,""lon"":-72.5019}}",1,55,1
+williams_brothers_brewing_company-fraoch_heather_ale,0,0,245745319936,"{""name"":""Fraoch Heather Ale"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""williams_brothers_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+raccoon_lodge_and_brewpub_cascade_brewing-cascade_razberry_wheat,0,0,245001158658,"{""name"":""Cascade Razberry Wheat"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""raccoon_lodge_and_brewpub_cascade_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Razberry Wheat is crisp with a refreshing tartness and the fresh aroma of raspberries. This salmon pink ale is just the thing to transport you to berry time in the summer."",""style"":""Fruit Beer"",""category"":""Other Style""}",1,49,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-hefeweizen,0,0,245103656961,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,12,1
+summit_brewing-hefe_weizen,0,0,245121875969,"{""name"":""Hefe-Weizen"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""summit_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,57,1
+thunderhead_brewery-hefeweizen,0,0,245122334721,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,58,1
+snowshoe_brewing_sonora-thompson_pale_ale,0,0,245112766465,"{""name"":""Thompson Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""snowshoe_brewing_sonora"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,34,1
+sierra_nevada_brewing_co-unfiltered_wheat_beer,0,0,244995260418,"{""name"":""Unfiltered Wheat Beer"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""From the Sierra Nevada Brewing Co. website:\r\nPale, smooth, and light-bodied, Sierra Nevada Wheat Beer is brewed from premium malted wheat and light barley malts, utilizing our traditional ale yeast. This unfiltered ale is finished with the characteristically spicy Strissel Spalt hops from the Alsace region of France. \r\n\r\n“The lightest Sierra Nevada beer is this refreshing wheat beer made with barley & wheat for a very light character but loads of flavor!”\r\n\r\n– BevMo.com\r\n\r\nSILVER MEDAL WINNER\r\nCalifornia State Fair (American Wheat: 2000)"",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,35,1
+tui_brewery-east_india_pale_ale,0,0,245114273794,"{""name"":""East India Pale Ale"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tui_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+troegs_brewing-scratch_10_2008,0,0,245104705536,"{""name"":""Scratch #10 2008"",""abv"":10.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""he third time just might be the charm—Scratch #10-2008 is our third triple in the Scratch Beer series.\r\n\r\nThis grand cru has been lovingly aged since late-February, yet still unleashes the slightest hint of alcohol heat.\r\n\r\nScratch #10-2008 also has a triple flavor inspiration combining the caramel/toffee notes of dememera sugar and molasses, with citrus and licorice flavors created by the orange peel and star anise; lastly we create a peppery/spicy finish with the same trappist yeast has been used in each Scratch Beer Triple."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,14,1
+tropical_beverage_international_co_ltd-phuket_lager,0,0,245122859008,"{""name"":""Phuket Lager"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tropical_beverage_international_co_ltd"",""updated"":""2010-07-22 20:00:20"",""description"":""Phuket Beer was created as a refreshing ‘boutique’ beer in view of the exotic island of Phuket with a much lower formula of bitterness than any other domestic rivals in Thailand.\r\n\r\nPhuket Beer is the first regional beer brewed in Thailand and is positioned to appeal to both the international markets as well as the local population. This is manifested through the label and packaging designs presented in both English and Thai languages.\r\n\r\nPhuket Beer is well positioned as a premium brand located somewhere between the local standard brands and the imported premium brands. The efforts were inspired from the feeling of being in a tropical paradise. Thai beer consumers have become more sophisticated over the years, by selecting and demanding premium and high-end beers. initial consumer target was Phuket Island's significant tourist sector, a sector that is prone to taste and drink locally produced brands.However, strategic positioning and selected marketing of Phuket Beer has resulted in a ray of successful export markets with overwhelming response from the initial markets overseas.\r\n\r\nThe philosophy is to provide a ‘tropical lifestyle’ drinking experience in a fresh clean light tasting lager beer with 5% alcohol by volume, which is in total contrast to the other Thai beers that are very bitter with higher alcohol content."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,59,1
+spaten_franziskaner_brau-optimator,0,0,245119385601,"{""name"":""Optimator"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""spaten_franziskaner_brau"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,50,1
+triple_rock_brewery-pale,0,0,245106016259,"{""name"":""Pale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triple_rock_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+valley_forge_brewing-dunkelweizen,0,0,245111783424,"{""name"":""Dunkelweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_forge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+troegs_brewing-scratch_19_2009_imperial_double_expresso_oatmeal_stout,0,0,245114732545,"{""name"":""Scratch #19 2009 Imperial Double Expresso Oatmeal Stout"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Every beer tells a story, and some are longer than others.\r\n\r\nConsider Scratch #19; originally designed as an enhanced take on Scratch #15 with a slightly higher ABV, our brewers went to town to deliver a brew slightly more akin to our fabled Scratch #5, the Imperial Oatmeal Stout brewed for The Flying Mouflan Experience.\r\n\r\nFor Scratch #19, we teamed up with St. Thomas Roasters of Linglestown to create a special blend of espresso beans. They added Kenyan beans to the mix because of a strong citrus flavor that compliments the hops. Creating en environment akin a French press, the beans are combined with whole flower hops in the hopback, and the hot wort passes through the vessel on the way to fermentation giving Scratch #19 a lush coffee espresso nose and hints of coffee flavor. There is a silky quality to the mouthfeel and a citrus hop finsh coming from the Kenyan beans and hops.\r\n\r\nSome stories have twists, and unfortunately a faulty valve in the fermentation cellar led to a dramatic beer tragedy one afternoon in the brewery. Risking life and limb (while keeping his mouth open to sample the beer), a heroic brewery team member took the dive reconnecting the valve and saving about half the batch of Scratch #19.\r\n\r\nSo for your amusement (and our final relief), we give you a draft-only release of a third-take on a style that demands continued research for the Troegs Brewery staff. Enjoy!"",""style"":""Oatmeal Stout"",""category"":""British Ale""}",1,38,1
+redhook_ale_brewery-redhook_long_hammer_ipa,0,0,244988641280,"{""name"":""Redhook Long Hammer IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""redhook_ale_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+speakeasy_ales_and_lagers-untouchable_pale_ale,0,0,245106212864,"{""name"":""Untouchable Pale Ale"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""speakeasy_ales_and_lagers"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+tennent_caledonian_brewery-lager,0,0,245121155073,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tennent_caledonian_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+wynkoop_brewing-light_rail_ale,0,0,245745319937,"{""name"":""Light Rail Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This blonde beer has a very light body and mild flavors of hops and pale malts. A hint of caramel malt gives color to this popular choice for craft beer newcomers"",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,10,1
+rock_art_brewery-rock_art_ipa,0,0,245001224192,"{""name"":""Rock Art IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_art_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A light copper body low bitterness with good hop flavor. This is my impression of what the English troops may have been drinking when they occupied India. The pale ale they drank had mellowed considerably. The wooden casks had spent many months traveling on ships and long inland journeys to the troops, where they were then tapped and enjoyed."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,49,1
+stone_brewing_co-imperial_stout_2003,0,0,245103656962,"{""name"":""Imperial Stout 2003"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,12,1
+tabernash_brewing,0,0,245121875970,"{""name"":""Tabernash Brewing"",""city"":""Longmont"",""state"":""Colorado"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":40.1672,""lon"":-105.102}}",1,57,1
+tin_whistle_brewing,0,0,245122400256,"{""name"":""Tin Whistle Brewing"",""city"":""Penticton"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-250-770-1122"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""954 West Eckhardt Avenue""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.4944,""lon"":-119.61}}",1,58,1
+stone_brewing_co-oaked_arrogant_bastard_ale,0,0,245112832000,"{""name"":""Oaked Arrogant Bastard Ale"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Arrogant Bastard Ale aged in oak barrels."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,34,1
+silver_gulch_brewing_company-old_55_pale_ale,0,0,244995325952,"{""name"":""Old 55 Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""silver_gulch_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+two_brothers_brewing-brown_fox_ale,0,0,245114339328,"{""name"":""Brown Fox Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,37,1
+tustin_brewing,0,0,245104705537,"{""name"":""Tustin Brewing"",""city"":""Tustin"",""state"":""California"",""code"":""92780"",""country"":""United States"",""phone"":""1-714-665-2337"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""13011 Newport Avenue #100""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":33.7496,""lon"":-117.812}}",1,14,1
+trout_river_brewing,0,0,245122859009,"{""name"":""Trout River Brewing"",""city"":""Lyndonville"",""state"":""Vermont"",""code"":""5851"",""country"":""United States"",""phone"":""802) 656-9396"",""website"":""http://www.troutriverbrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Trout River Brewing prides itself on creating and serving fresh, all natural, premium ales and lagers. Our beers are made with pure Vermont water, the best imported and domestic malts and hops, and quality yeasts. Nothing else is added and we take nothing away!"",""address"":[""58 Broad Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.5203,""lon"":-72.0014}}",1,59,1
+standing_stone_brewing_company,0,0,245119451136,"{""name"":""Standing Stone Brewing Company"",""city"":""Ashland"",""state"":""Oregon"",""code"":""97520"",""country"":""United States"",""phone"":""(541) 482-2448"",""website"":""http://www.standingstonebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Ashland's only full service brewpub is housed in an historic building with a light industrial character. We offer our own freshly brewed handcrafted ales and lagers, including seasonal and other specialty brews.  All Standing Stone Ales are made here at the brewery in ten barrel batches using over 80% organic malts."",""address"":[""101 Oak Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.1976,""lon"":-122.715}}",1,50,1
+troegs_brewing,0,0,245106081792,"{""name"":""Troegs Brewing"",""city"":""Harrisburg"",""state"":""Pennsylvania"",""code"":""17104"",""country"":""United States"",""phone"":""1-717-232-1297"",""website"":""http://www.troegs.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Tröegs Brewing Company was established in 1997. Today, the brewery produces nine different beers including Hopback Amber Ale, Troegenator Doublebock, Rugged Trail Ale, Tröegs Pale Ale, Nugget Nectar (seasonal) Dead Reckoning Porter (seasonal), Sunshine Pils (seasonal), The Mad Elf (seasonal), and distributes its product in Pennsylvania, New Jersey, Maryland, Delaware and Virginia."",""address"":[""800 Paxton Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.2559,""lon"":-76.8715}}",1,17,1
+victory_brewing-st_boisterous_hellerbock,0,0,245111783425,"{""name"":""St. Boisterous Hellerbock"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A full-bodied lager beer of exuberant and robust character. It’s muscle-man body comes from decocted German malts and noble German hops. Lagered long and cold to refine its strong temperament, St. Boisterous emerges smooth and seductive, with a malty sweet charm. This classic rendition of the German ‘maibock' style will warm your heart."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,31,1
+troegs_brewing-scratch_7_2008,0,0,245114732546,"{""name"":""Scratch #7 2008"",""abv"":7.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Red and white wheat combined with darker malts add body to this hazy, unfiltered ale.  Fermented with the same yeast as DreamWeaver Wheat replicating the pepper, clove and all-spice flavors found in our year-round beer."",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,38,1
+russian_river_brewing-damnation,0,0,244988641281,"{""name"":""Damnation"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""russian_river_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Damnation has extraordinary aromas of banana and pear with mouth filling flavors of sweet malt and earthy hops. The lingering finish is dry and slightly bitter but very, very smooth."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,19,1
+st_austell_brewery-proper_job,0,0,245106278400,"{""name"":""Proper Job"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_austell_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Proper Job is an authentic IPA brewed with Cornish spring water and malt made from a blend of malts including Cornish grown Maris Otter barley."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,18,1
+the_alchemist-broken_spoke,0,0,245121155074,"{""name"":""Broken Spoke"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":""An American pale ale made entirely with amarillo hops."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+zea_rotisserie_and_brewery-ginger_slap_spiced_ale,0,0,245745319938,"{""name"":""Ginger-\""slap\"" Spiced Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,10,1
+rock_bottom_restaurant_brewery_san_jose-boulder_creek_pale_ale,0,0,245001224193,"{""name"":""Boulder Creek Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rock_bottom_restaurant_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+stroh_brewery_company-lone_star,0,0,245103722496,"{""name"":""Lone Star"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stroh_brewery_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+titletown_brewing-fort_edward_augustus_1770_scottish_ale,0,0,245121941504,"{""name"":""Fort Edward Augustus 1770 Scottish Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+titletown_brewing-boxcar_brown_ale,0,0,245122400257,"{""name"":""Boxcar Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,58,1
+stone_cellar_brewpub_restaurant,0,0,245112832001,"{""name"":""Stone Cellar Brewpub & Restaurant"",""city"":""Appleton"",""state"":""Wisconsin"",""code"":""54915"",""country"":""United States"",""phone"":""1-920-735-0507"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1004 South Olde Oneida""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":44.2536,""lon"":-88.4037}}",1,34,1
+sports_city_cafe_brewery-india_pale_ale,0,0,245113159680,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sports_city_cafe_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,35,1
+tyranena_brewing-gemuetlichkeit_oktoberfest,0,0,245114339329,"{""name"":""Gemuetlichkeit Oktoberfest"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Gemuetlichkeit translates from German as \""the fondness of feasting, drinking and merry company.\""  This is true of most everyone in Wisconsin, especially those of us at the brewery.   Each September in the nearby city of Jefferson, Wisconsin, thousand turn out for Gemuetlichkeit Days, a celebration of the area's German heritage.  We invite you to celebrate the spirit of Gemuetlichkeit with us.  Don your lederhösen, kick up your heels with a polka and raise a stein of our Gemuetlichkeit Oktoberfest with a friend.  Ein Prosit!\r\n\r\nGemuetlichkeit Oktoberfest is a rich, amber lager with a malty aroma and balanced hop bitterness.  This seasonal style is served at German Oktoberfests in liter steins."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,37,1
+ukiah_brewing-emancipator,0,0,245104705538,"{""name"":""Emancipator"",""abv"":8.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ukiah_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,14,1
+weyerbacher_brewing_company-blasphemy,0,0,245752201216,"{""name"":""Blasphemy"",""abv"":11.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""First released in March 2007,  Blasphemy is our award winning QUAD aged in bourbon barrels.  But not overaged, so we've picked up gentle vanilla oaky notes which complement rather than supercede the complex qualities that already make QUAD such an incredible beer.  Expected to be an annual Spring seasonal, supplies are limited.  ABV is 11.8%."",""style"":""Belgian-Style Quadrupel"",""category"":""Belgian and French Ale""}",1,59,1
+steamworks-empress_india_pale_ale,0,0,245119451137,"{""name"":""Empress India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""During the heyday of the British Empire, India Pale Ale was born as a strong pale ale brewed especially to endure the rigors of the long journey to the colonies. In order to guard against spoilage, I.P.A. was brewed with a high alcohol content and with liberal amounts of hops, which act as a natural preservative. This ale's golden amber colour only hints at its full-bodied flavour. Its sumptuous maltiness is tempered by a goodly amount of bitterness and a mouth-filling hop flavour. In order to finish our I.P.A. with a truly fresh hop bouquet, we dry hop this ale in the serving tank with both East Kent Goldings and Mount Hood hops."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,50,1
+tucher_bru,0,0,245106081793,"{""name"":""Tucher Bru"",""city"":""Nrnberg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)911-/-9776-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Schillerstrae 14""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.4643,""lon"":11.0847}}",1,17,1
+walldorff_brew_pub,0,0,245748006912,"{""name"":""Walldorff Brew Pub"",""city"":""Hastings"",""state"":""Michigan"",""code"":""49508"",""country"":""United States"",""phone"":""269 945-4400"",""website"":""http://walldorffbrewpub.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""105 East State Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.6488,""lon"":-85.2875}}",1,31,1
+upland_brewing-upland_wheat_ale,0,0,245114732547,"{""name"":""Upland Wheat Ale"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upland_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,38,1
+saint_louis_brewery_schlafy_tap_room-schlafly_witbier,0,0,244988641282,"{""name"":""Schlafly Witbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_louis_brewery_schlafy_tap_room"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+steve_and_clark_s_brew_pub_and_sausage_co_2-northwest_pale_ale,0,0,245106278401,"{""name"":""Northwest Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steve_and_clark_s_brew_pub_and_sausage_co_2"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,18,1
+thirstybear_brewing-polar_ale,0,0,245121155075,"{""name"":""Polar Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+rogue_ales-menage_frog,0,0,245001224194,"{""name"":""Menage Frog"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""rogue_ales"",""updated"":""2010-07-22 20:00:20"",""description"":""Belgian Style Tripel using same Abbey Yeast. Monster aromas and sweet flavors coming from the yeast and a huge amount of Belgian Candi Sugar. Ingredients: Weyermann Pilsner Malt, Belgian Candi Sugar, Saaz Hops."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,49,1
+summit_brewing-horizon_red_ale,0,0,245103722497,"{""name"":""Horizon Red Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""summit_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A richer shade of Red. Summit has artfully crossed the boundaries of traditional IPA and Amber styles to create a brew all our own. Featuring an aromatic blend of Horizon, Amarillo and Cascade hops with nicely balanced malts for a flavor you’ll enjoy to the fullest."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+top_of_the_hill_restaurant_and_brewery-davie_poplar_ipa,0,0,245121941505,"{""name"":""Davie Poplar IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""top_of_the_hill_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,57,1
+troegs_brewing-scratch_27_2010_cocaoabunga,0,0,245122400258,"{""name"":""Scratch #27 2010 Cocaoabunga"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch #27-2010 begins a new fold in the Scratch series. For the next several batches individual Troegs brewers will create recipes of their choice. First up, The Ticeman had a hankering for a sweet stout, so the Troegs brothers and all the brewers met with Scharffen Berger Chocolate Company engineers to eat ridiculous amounts of cocoa nibs and chocolates over a few pints of beer.\r\n\r\nThis collaboration resulted in the delivery of a special blend of cocoa nibs that were added during the boiling process. In addition to the nibs, lactose was added at the end of the boil to give a little sweetness in the body. The addition of Galena and Simcoe hops lends a subtle fruity balance. After primary fermentation, the beer was aged for three weeks on a blend of cocoa nibs and Ugandan vanilla beans.\r\n\r\nDubbed Cocaoabunga, this unfiltered beer has a pleasant cocoa aroma, a subtle sweetness in the mouthfeel, a full-bodied flavor, and hints of vanilla. Enjoy!"",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,58,1
+stoney_creek_brewing_company,0,0,245112897536,"{""name"":""Stoney Creek Brewing Company"",""city"":""Detroit"",""state"":""Michigan"",""code"":""48207"",""country"":""United States"",""phone"":""1-877-786-6399"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""237 Joseph Campau""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3372,""lon"":-83.0186}}",1,34,1
+stone_city_brewing-stein_bock,0,0,245113225216,"{""name"":""Stein Bock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_city_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,35,1
+unibroue-la_fin_du_monde,0,0,245114404864,"{""name"":""La Fin Du Monde"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""La Fin du Monde has a brilliant golden color with vigorously effervescent foam.\r\nIt is midly yeasty with a complex palate of malt, fruit and spice notes followed by a smooth, dry finish."",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,37,1
+weyerbacher_brewing_company,0,0,245745909760,"{""name"":""Weyerbacher Brewing Company"",""city"":""Easton"",""state"":""Pennsylvania"",""code"":""18042"",""country"":""United States"",""phone"":""1.610.559.5561"",""website"":""http://www.weyerbacher.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""At Weyerbacher, we're passionate about our brews. That passion is reflected in the diversity of our offerings. We currently offer over twenty styles of beers. These range from our flagship beers Double Simcoe IPA, Hops Infusion, Merry Monks' Ale, Old Heathen and Blithering Idiot Barleywine to our big seasonals like QUAD and Imperial Pumpkin Ale. And don't forget our bourbon barrel beers: Heresy, Insanity, and Blasphemy ( and yes, we actually age them in real bourbon barrels, and we only use the barrels once). We practically have a new seasonal every month."",""address"":[""905 Line Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.6732,""lon"":-75.2249}}",1,14,1
+wyder_s_cider,0,0,245752201217,"{""name"":""Wyder's Cider"",""city"":""Calgary"",""state"":""Alberta"",""code"":""0"",""country"":""Canada"",""phone"":""1-510-832-4540"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""255999 Eighth Street SW""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.034,""lon"":-114.083}}",1,59,1
+steamworks-lions_gate_lager,0,0,245119516672,"{""name"":""Lions Gate Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""steamworks"",""updated"":""2010-07-22 20:00:20"",""description"":""While ales are fermented for relatively short periods of time at room temperature, lagers employ a special variety of yeast and much cooler fermentation temperatures to achieve their truly clean, dry flavour profile. Our Lion's Gate Lager has a light body, a very crisp palate and a soft, hop finish, which is imparted by the exquisitely gentle Czech Saaz hop variety. The Lions would approve."",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+twin_ports_brewing-derailed_ale,0,0,245106081794,"{""name"":""Derailed Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_ports_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+watney_brewery-red_barrel,0,0,245748072448,"{""name"":""Red Barrel"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""watney_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+upper_mississippi_brewing-bartles_and_lager,0,0,245114798080,"{""name"":""Bartles and Lager"",""abv"":4.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upper_mississippi_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+sand_creek_brewing_company-lilja_s_hop_nest_monster,0,0,244988706816,"{""name"":""Lilja's Hop Nest Monster"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sand_creek_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+stone_brewing_co-stone_11th_anniversery_ale,0,0,245106343936,"{""name"":""Stone 11th Anniversery Ale"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The inspiration for making a Black IPA (or should we say \""India Black Ale/ IBA\""?) has been over a year in the making. As soon as we wrapped up the brewing of the Stone 10th Anniversary IPA, we started brainstorming ideas for the Stone 11th Anniversary Ale, and the Black IPA concept was born. This was a challenging brew to formulate and achieve what we considered the ideal flavor balance of intense up-front hops with balanced roasted malt flavors, a deep, rich flavor, and a hearty bitterness."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,18,1
+titletown_brewing-old_broadway_cream_ale,0,0,245121220608,"{""name"":""Old Broadway Cream Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+russell_brewing,0,0,245001289728,"{""name"":""Russell Brewing"",""city"":""Surrey"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-599-1190"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""202 - 13018 80th Avenue""]}",1,49,1
+sweetwater_brewing_casper,0,0,245103722498,"{""name"":""Sweetwater Brewing - Casper"",""city"":""Casper"",""state"":""Wyoming"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":42.8666,""lon"":-106.313}}",1,12,1
+twin_rivers_brewing,0,0,245121941506,"{""name"":""Twin Rivers Brewing"",""city"":""Monroe"",""state"":""Washington"",""code"":""98272"",""country"":""United States"",""phone"":""1-360-794-4056"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""104 North Lewis Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.8559,""lon"":-121.971}}",1,57,1
+watson_brothers_brewhouse,0,0,245752070144,"{""name"":""Watson Brothers Brewhouse"",""city"":""Blue Ash"",""state"":""Ohio"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":39.232,""lon"":-84.3783}}",1,58,1
+sturgeon_bay_brewing-peninsula_pirate_pilsner,0,0,245112897537,"{""name"":""Peninsula Pirate Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sturgeon_bay_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+stout_brothers_public_house-taverner_nut_brown_ale,0,0,245113225217,"{""name"":""Taverner Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stout_brothers_public_house"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,35,1
+unibroue-maudite,0,0,245114404865,"{""name"":""Maudite"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""Maudite has a deep amber-red color with a rocky foam head and an appealing aroma of wild spices and floral hop notes.  It is spicy, vinous, and deliciously complex with a crisp hop finish.\r\n\r\n\r\nThe robust maltiness and  spiciness of our\r\namber-red ale is counterbalanced by an\r\nassertive hop finish, offering a distinctive\r\nflavor that is cognac-like in complexity."",""style"":""Belgian-Style Dark Strong Ale"",""category"":""Belgian and French Ale""}",1,37,1
+wrzburger_hofbru_ag,0,0,245745909761,"{""name"":""Wrzburger Hofbru AG"",""city"":""Wrzburg"",""state"":""Bayern"",""code"":"""",""country"":""Germany"",""phone"":""49-(0)931-/-4109-0"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hchberger Strae 28""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":49.792,""lon"":9.915}}",1,14,1
+yards_brewing-yards_extra_special_ale,0,0,245752266752,"{""name"":""Yards Extra Special Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Crafted from the finest ingredients and originally intended for the cask-ale connoisseur, Extra Special Ale is a robust and hearty amber ale with a malt body and aromatic hop finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,59,1
+stevens_point_brewery-lizard_lager,0,0,245119516673,"{""name"":""Lizard Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stevens_point_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,50,1
+unicer,0,0,245106147328,"{""name"":""Unicer"",""city"":"""",""state"":"""",""code"":"""",""country"":""Portugal"",""phone"":"""",""website"":""http://www.unicer.pt"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,17,1
+white_oak_cider-black_cider,0,0,245748072449,"{""name"":""Black Cider"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""white_oak_cider"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+wachusetts_brewing_company,0,0,245749252096,"{""name"":""Wachusetts Brewing Company"",""city"":""Westminster"",""state"":""Massachusetts"",""code"":""1473"",""country"":""United States"",""phone"":""978-874-9965"",""website"":""http://www.wachusettbrew.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""History Wachusett Brewery founders Ned, Kevin and Peter developed a significant appreciation for beer while attending Worcester Polytechnic Institute. Adventures in biking, canoeing, and hiking that led the trio to the northern New England states allowed them to visit some of the first operating craft breweries. Armed with a we can do this attitude the three cast off from their careers in engineering and biology to found the Wachusett Brewing Co. in 1993. Wachusett Country Ale was introduced to beer fans of Massachusetts the next year after lots of experimenting to get the formula just right. When Wachusett opened, the three designed and built most of the equipment; did the brewing and filling, selling and delivering, and everything else that a small startup brewery needed. Ned, Kevin and Peter are now backed by some of the most passionate and capable co-workers in the industry. Wachusett Ales continue to be hand crafted with the finest ingredients available, bottled and kegged in our Westminster facility. The three have never strayed from their plan to brew and sell the freshest, highest quality beers possible."",""address"":[""175 State Road East""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":42.5586,""lon"":-71.8715}}",1,38,1
+santa_cruz_brewing-beacon_barleywine,0,0,244988706817,"{""name"":""Beacon Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""santa_cruz_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+t_bonz_gill_grill_and_brewery-low_country_light_lager,0,0,245106343937,"{""name"":""Low Country Light Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""t_bonz_gill_grill_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,18,1
+tworows_restaurant_brewery_dallas-honey_blonde_light_pale_ale,0,0,245121220609,"{""name"":""Honey Blonde Light Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tworows_restaurant_brewery_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,55,1
+saint_arnold_brewing-saint_arnold_texas_weat,0,0,245001289729,"{""name"":""Saint Arnold Texas Weat"",""abv"":3.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""saint_arnold_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A refreshing, flavorful filtered wheat beer. The perfect beer to accompany a meal or for a summer's day. The wheat contributes a lighter flavor while maintaining a rich body. The beer has a light hop profile -- just enough to give the beer balance and complexity. The light fruitiness is derived from a Kölsch yeast strain. A chill haze may be present, which is a characteristic of wheat beers. \r\n\r\nSaint Arnold Texas Wheat is best consumed at 40-45° Fahrenheit.""}",1,49,1
+taylor_s_crossing_brewing-red_truck_ale,0,0,245103722499,"{""name"":""Red Truck Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""taylor_s_crossing_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+tyranena_brewing-shantytown_doppelbock,0,0,245122007040,"{""name"":""Shantytown Doppelbock"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""The sun barely breaks the horizon, the arctic winds bite, and snow blankets the land. It’s winter in Wisconsin! Throughout the area, you’ll find armies of fisherman, clad in blaze orange parkas and snowmobile suits, dragging their crudely built ice shanties onto the frozen lakes. While they vary in size, shape and color, each shanty contains an enthusiast braving the cold; spinning their tall tales; staring deeply into that hole in the ice; and, of course, enjoying a Legendary Wisconsin Beer. Brewed in the fall to help you survive our Wisconsin winters.\r\n\r\nShantytown Doppelbock is brewed in the style of a German Doppelbock. Brown in color with malty sweetness and a full body."",""style"":""German-Style Doppelbock"",""category"":""German Lager""}",1,57,1
+wrzburger_hofbru_ag-julius_echter_hefe_weissbier_hell,0,0,245752135680,"{""name"":""Julius Echter Hefe-Weißbier Hell"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wrzburger_hofbru_ag"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,58,1
+swan_brewery-lager,0,0,245112897538,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""swan_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+stroh_brewery_company-schlitz,0,0,245113290752,"{""name"":""Schlitz"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stroh_brewery_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,35,1
+union_colony_brewery-old_8444_alt,0,0,245114404866,"{""name"":""Old 8444 Alt"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""union_colony_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,37,1
+yuengling_son_brewing-yuengling_premium_light,0,0,245745975296,"{""name"":""Yuengling Premium Light"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Yuengling Light Beer is skillfully crafted to deliver a consistently refreshing brew with only 98 calories. Drawing from traditional brewing techniques, our Light Beer is brewed longer to reduce the sugar content and produce fewer calories in each thirst-quenching drink. Its pale golden color is complemented by a light-bodied flavor. Yuengling Light maintains a well balanced character of malt and hops, with slight carbonation for a crisp satisfying finish. We sacrifice nothing to produce a premium light beer that is low in calories and full of flavor. This combination delivers the ultimate refreshment in Yuengling Light Beer."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,14,1
+sullivan_s_black_forest_brew_haus_grill-pirate_s_porter,0,0,245119582208,"{""name"":""Pirate's Porter"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""Arrr this be a dark beer with strong notes of coffee and chocolate flavors."",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,50,1
+valley_forge_brewing-regiment_pale_ale,0,0,245106147329,"{""name"":""Regiment Pale Ale"",""abv"":6.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_forge_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,17,1
+white_winter_winery-traditional_brackett,0,0,245748072450,"{""name"":""Traditional Brackett"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""white_winter_winery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+water_street_brewery-honey_lager_light,0,0,245749317632,"{""name"":""Honey Lager Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,38,1
+second_street_brewery-altbier,0,0,244988706818,"{""name"":""Altbier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""second_street_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,19,1
+terrapin_beer_company-sunray_wheat_beer,0,0,245106343938,"{""name"":""SunRay Wheat Beer"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The Sunray Wheat is a German-style unfiltered wheat beer brewed with a touch of local Georgia Coast Tupelo honey from the Savannah Bee Company.\r\n\r\nIts inviting banana and sweet clove like aroma gives way to a pleasant, clean finish with a hint of tartness.\r\n\r\nThis beer is available in the Terrapin “All The Hits” Variety 12-pack as well as in individual 6-packs."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,18,1
+unibroue-ephemere_pomme,0,0,245121220610,"{""name"":""Éphémère Pomme"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""White ale brewed with apple must\r\n\r\nRedolent of ripe Granny Smith apples, this\r\nunique white ale pleases the palate with a\r\ndelicate balance of fruit and spice notes and\r\njust a hint of sweetness.\r\n \r\nÉphémère apple satisfies with each sip and\r\nrefreshes in all seasons, especially when\r\npaired with an artisan cheddar cheese, pork\r\ntenderloin served with apple chutney or Vidalia\r\nonion soup.\r\n\r\nWe developed the Éphémère (Ephemeral)\r\nseries to feature a seasonal fruit in a\r\nrefreshing, lightly spiced white ale.\r\n \r\nThe label depicts a fairy, an ephemeral spirit\r\nassociated with fruits picked at the peak of\r\nripeness during each harvest season. \r\nÉphémère apple flavor is brewed with apple\r\nmust, which consists of the freshly-pressed\r\njuice from apples.\r\n\r\nEnjoy this beer 'alfresco' while dining in the\r\nafternoon sun, relaxing at a family gathering or\r\nat a picnic in the back yard.\r\n\r\nWinner of 3 Gold Medals from the Beverage\r\nTesting Institute since 2002"",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,55,1
+santa_barbara_brewing,0,0,245001355264,"{""name"":""Santa Barbara Brewing"",""city"":""Santa Barbara"",""state"":""California"",""code"":""93101"",""country"":""United States"",""phone"":""1-805-730-1040"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""501 State Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":34.4166,""lon"":-119.696}}",1,49,1
+terrapin_beer_company-hopsecutioner,0,0,245103788032,"{""name"":""Hopsecutioner"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Here ye, here ye…All hopheads shall herewith rejoice! Terrapin has recruited ye old HOPSECUTIONER to execute the exact hop profile for this killer IPA!"",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,12,1
+ukiah_brewing,0,0,245122007041,"{""name"":""Ukiah Brewing"",""city"":""Ukiah"",""state"":""California"",""code"":""95482"",""country"":""United States"",""phone"":""1-707-468-5898"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""102 South State Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":39.1498,""lon"":-123.208}}",1,57,1
+yakima_brewing_and_malting_grant_s_ales-india_pale_ale,0,0,245752135681,"{""name"":""India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yakima_brewing_and_malting_grant_s_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,58,1
+tempo-goldstar,0,0,245112963072,"{""name"":""Goldstar"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tempo"",""updated"":""2010-07-22 20:00:20"",""description"":""The best beer ever!""}",1,34,1
+sullivan_s_black_forest_brew_haus_grill-sully_s_irish_stout,0,0,245113290753,"{""name"":""Sully's Irish Stout"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sullivan_s_black_forest_brew_haus_grill"",""updated"":""2010-07-22 20:00:20"",""description"":""Put on your kilt and enjoy this roasted, dark, malty and slightly sweet beer."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+upstream_brewing_company_at_legacy-oak_aged_ebenezer,0,0,245114404867,"{""name"":""Oak Aged Ebenezer"",""abv"":9.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_company_at_legacy"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,37,1
+zea_rotisserie_and_brewery-lager,0,0,245745975297,"{""name"":""Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,14,1
+tailgate_beer-tailgate_ipa,0,0,245119582209,"{""name"":""Tailgate IPA"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tailgate_beer"",""updated"":""2010-07-22 20:00:20"",""description"":""This is what beer is all about.  First swallow offers a nice little bite, followed by a blossom of flavors delivered by our handpicked aromatic hops.  Flavor carries through the end with a full fisted kick of alcohol content that rocks the Richter scale at 6.5%.  A nose of citrus with a floral essence of spice tickles the tongue in this ode to hops.  Discover an IPA that encourages how to enjoy what beer is all about."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,50,1
+victory_brewing-hop_wallop,0,0,245106212864,"{""name"":""Hop Wallop"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""We celebrate the pioneering spirit of old Horace 'Hop' Wallop and those who dare mighty adventurous things in this vivid, robust ale. As our annual homage to the hop harvest, expect loads of aromatic splendor and bitter beauty."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,17,1
+widmer_brothers_brewing-sweet_betty_classic_blonde_ale,0,0,245748137984,"{""name"":""Sweet Betty Classic Blonde Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""widmer_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,31,1
+wdi_bru_huus-ur_weizen,0,0,245749317633,"{""name"":""Ur-Weizen"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,38,1
+st_austell_brewery-tribute_premium_cornish_ale,0,0,245106540544,"{""name"":""Tribute Premium Cornish Ale"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""st_austell_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A Supreme Champion Ale of Cornwall as\r\nvoted by CAMRA*, and the South West's Favourite cask beer**, Tribute is a popular\r\nfavourite with locals and visitors to Cornwall, as well as being a much sought after guest ale throughout the rest of the UK. It is brewed using specially grown Cornish Gold Malt and is a perfect accompaniment to chicken, gammon or fish. The ideal alternative to a fine white wine."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,19,1
+the_church_brew_works-mad_brewer_maibock,0,0,245106409472,"{""name"":""Mad Brewer Maibock"",""abv"":7.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_church_brew_works"",""updated"":""2010-07-22 20:00:20"",""description"":""A bock beer is required by German law to start at 17°Plato.   For those who are interested, °Plato is a measurement of the sugar content before fermentation.  It is a very malty lager beer with medium hop bitterness.  A maibock is a light to amber colored bock beer.  A Maibock is very similar to a Helles/pale bock.  Maibocks were originally brewed for the coming of spring, hence the name Mai (German for May).  The Mad Brewer Maibock is medium amber in color.  Though similar in color to our Pipe Organ Pale Ale, it is very different in character.  Don’t let it get you though, it’s a very strong beer at about 7% alcohol. It has a very clean and malty nose.  The hop bitterness is evident, but not dominant.  The Mad Brewer Maibock will finish quite full and have a delicate sweetness."",""style"":""German-Style Heller Bock/Maibock"",""category"":""German Lager""}",1,18,1
+utenos_alus-porter,0,0,245121220611,"{""name"":""Porter"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""utenos_alus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,55,1
+selin_s_grove_brewing_co-selin_s_grove_ipa,0,0,245001355265,"{""name"":""Selin's Grove IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""selin_s_grove_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,49,1
+terrapin_beer_company-terrapin_all_american_imperial_pilsner,0,0,245103788033,"{""name"":""Terrapin All-American Imperial Pilsner"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""terrapin_beer_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Help us celebrate American Independence and American Beer Month in July with the release of the Terrapin All-American Imperial Pilsner.\r\n\r\nThis beer was brewed using only American malts, American hops, and American yeast. Who says you have to import ingredients from Germany to make a true Pilsner?\r\n\r\nOf course, this Pilsner is made “Terrapin Style”. Hence the 75 B.U.’s, the 7.5% alcohol and the term “IMPERIAL Pilsner”.""}",1,12,1
+viking_brewing-copperhead_premium_ruby_lager,0,0,245751939072,"{""name"":""Copperhead Premium Ruby Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""viking_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,57,1
+yegua_creek_brewing_dallas-golden_wheat,0,0,245752135682,"{""name"":""Golden Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yegua_creek_brewing_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,58,1
+thomas_hooker_brewing-hooker_oktoberfest,0,0,245112963073,"{""name"":""Hooker Oktoberfest"",""abv"":5.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thomas_hooker_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Originally brewed to celebrate the beginning of the German brewing season and the 1810 wedding of crown prince Ludwig of Bavaria and his bride-to-be, princess Therese of Saxon-Hildburghausen. This amber beer was brewed in March (\""Marzenbier\"") and left to age in cool lagering caves during the heat of the summer. Our rich and satisfying Bavarian-style OctoberFest comes from a special blend of imported German malts that creates a full-bodied brew and stresses a malty flavor and lingering aroma. Gently hopped and delicately balanced, its true-to-style, slow fermentation and long, cold maturation produces a luxuriously smooth, award-winning brew."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,34,1
+surly_brewing-darkness,0,0,245113356288,"{""name"":""Darkness"",""abv"":10.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""surly_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This Russian Imperial Stout is a sipper. Problem is that you want to sip it all night. Look for this one to be released when the leaves change color and Halloween is approaching. Brewed with a blend of 8 different malts, oats and candi sugar. This huge stout reflects Surly's commitment to brewing intensely flavored beers in small batches. Only 25 barrels of this beer were brewed."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,35,1
+upstream_brewing_old_market-dundee_scotch_ale,0,0,245114470400,"{""name"":""Dundee Scotch Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""Our Dundee Scotch Ale begins with a traditional \r\nsweetness and finishes with a full, malty flavor. Don’t be fooled by the dark color—this beer is delicious and surprisingly easy to drink."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,37,1
+the_bruery-orchard_white,0,0,245119647744,"{""name"":""Orchard White"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_bruery"",""updated"":""2010-07-22 20:00:20"",""description"":""Orchard White is an unfiltered, bottle conditioned Belgian-style witbier. This hazy, straw yellow beer is spiced with coriander, citrus peel and lavender added to the boil and whirlpool. A spicy, fruity yeast strain is used to add complexity, and rolled oats are added for a silky texture."",""style"":""Belgian-Style White"",""category"":""Belgian and French Ale""}",1,50,1
+victory_brewing-prima_pils,0,0,245106212865,"{""name"":""Prima Pils"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Heaps of hops give this pale lager a bracing, herbal bite over layers of soft and smooth malt flavor. This refreshing combination of tastes makes Prima a classy quencher in the tradition of the great pilsners of Europe. Dry and delightful, this is an elegant beer."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,17,1
+willoughby_brewing-wenceslas,0,0,245748137985,"{""name"":""Wenceslas"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""willoughby_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,31,1
+weyerbacher_brewing_company-scotch_ale,0,0,245749383168,"{""name"":""Scotch Ale"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Exceptionally smooth and thoroughly robust, Weyerbacher Scotch Ale has a deep delicious flavor that will warm you down to your wee little bones. Malty and roasty on the palate, and with distinctive caramel notes, this beer will satisfy the desires of any malty beer aficionado. \r\n\r\nWeyerbacher Scotch Ale is our interpretation of a beer style originating from Scotland, where the chilly damp weather calls for a hearty beer. Lacking the preservative powers of hops, scotch ales were brewed with high alcohol content to prevent spoilage. And at 8.7% ABV (alcohol by volume) Weyerbacher Scotch Ale definitely contains a warming belt.\r\n\r\nWe brew Weyerbacher Scotch Ale mostly in the cooler months of the year. Check out the Upcoming Events and Beers page for the next time it will be at a beer store near you."",""style"":""Scotch Ale"",""category"":""British Ale""}",1,38,1
+sweetwater_brewing_casper-wild_wyo_wheat,0,0,245106606080,"{""name"":""Wild Wyo Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweetwater_brewing_casper"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+troegs_brewing-scratch_11_2008,0,0,245106409473,"{""name"":""Scratch #11 2008"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Next up, we present Scratch Beer #11-2008, a Bitter. Back in the day, we used to brew a little number called Tröegs ESB. Even though this beer was retired almost six years ago, we still get numerous Tröegs old-schoolers (Martha) begging for its return.\r\n\r\nWell hang onto your boot straps because Scratch #11 is about as close as we can get to the original ESB without firing up the old brew kettle. The Scratch #11 recipe originates from Chris’ stint at England’s University of Sunderland brewing program. After returning to Colorado the brothers drew on Chris’ experience and brewed pilot batches tweaking that recipe. The ESB production recipe has direct bloodlines to these pilot batches.\r\n\r\nThe Thames Valley ale yeast and the roasted barley create a biscuit flavor with nutty undertones. Combining these flavors with the earthiness of East Kent Golding hops creates one hell of a fine session beer. Take in the deep mahogany beauty of this beer and breathe in the full hoppy nose. It’s not the ESB, but it’s damn special."",""style"":""Ordinary Bitter"",""category"":""British Ale""}",1,18,1
+weinkeller_brewery_berwyn-pilsner,0,0,245751742464,"{""name"":""Pilsner"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,55,1
+ship_inn_brewpub-pheasant_plucker,0,0,245001355266,"{""name"":""Pheasant Plucker"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""ship_inn_brewpub"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,49,1
+thomas_kemper_brewing,0,0,245103788034,"{""name"":""Thomas Kemper Brewing"",""city"":""Seattle"",""state"":""Washington"",""code"":""98134"",""country"":""United States"",""phone"":""1-260-682-8322"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""91 South Royal Brougham""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":47.5924,""lon"":-122.334}}",1,12,1
+weyerbacher_brewing_company-weyerbacher_juliet,0,0,245752004608,"{""name"":""Weyerbacher Juliet"",""abv"":8.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Brown Ale/Altbier"",""category"":""German Ale""}",1,57,1
+yuengling_son_brewing-yuengling_lager_light,0,0,245752135683,"{""name"":""Yuengling Lager Light"",""abv"":3.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""True to its American heritage, Yuengling Light Lager is an exceptional brew that appeals to consumers who don't want to sacrifice character for a low-calorie light beer. It has been masterfully developed to maintain the full flavor profile akin to our flagship Lager brand. Skillfully pairing a caramel malt flavor and mild hop character creates a beautifully rich-colored beer with deep amber highlights that finishes smooth and clean. With only 99 calories, Yuengling Light Lager is a uniquely refreshing beer that brings new dimension to the meaning light beer."",""style"":""American-Style Light Lager"",""category"":""North American Lager""}",1,58,1
+three_floyds_brewing-dark_lord_russian_imperial_stout,0,0,245112963074,"{""name"":""Dark Lord Russian Imperial Stout"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Gargantuan Russian Stout brewed with coffee, molasses, and honey."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,34,1
+tabernash_brewing-dunkel_weizen,0,0,245113356289,"{""name"":""Dunkel Weizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tabernash_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+voodoo_brewing_co_llc-big_black_voodoo_daddy,0,0,245749055488,"{""name"":""Big Black Voodoo Daddy"",""abv"":12.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our Imperial Stout that we age in conditioning tanks with oak staves.  This adds a classic character of old world aging with out the Bourbon tones. This black ale is about 12% alc. and very rich in roasted and chocolate malt tones.  Velvety smooth and able tobe aged for years. For now this will be a Seasonal Beer Offering. \r\n\r\nAll Beers to be bottle conditioned and Refermented."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,37,1
+the_cambridge_house-old_mill_pond_esb,0,0,245119647745,"{""name"":""Old Mill Pond ESB"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_cambridge_house"",""updated"":""2010-07-22 20:00:20"",""description"":""As English style extra special bitter, brewed using the finest malt and hops from England to produce a well balanced medium body pint."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,50,1
+voodoo_brewing_co_llc-voodoo_love_child,0,0,245746237440,"{""name"":""Voodoo Love Child"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""This is our Gran Met Ale aged on intimate Passion Fruit, Raspberry and Michigan Tart Cherry. Lightly spiced with passion. Light Reddish hue and with a alcohol strength of 10% and nicely carbonated in the bottle. \r\n\r\nAgain Bottle Conditioned and Fermented.  \r\n\r\nEnjoy a couple and have your own Voodoo Love Child later!!!"",""style"":""Belgian-Style Tripel"",""category"":""Belgian and French Ale""}",1,17,1
+yards_brewing,0,0,245748137986,"{""name"":""Yards Brewing"",""city"":""Philadelphia"",""state"":""Pennsylvania"",""code"":""19125"",""country"":""United States"",""phone"":""1-215-634-2600"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""2439 Amber Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.9831,""lon"":-75.1274}}",1,31,1
+wynkoop_brewing-two_guns_pilsner,0,0,245749383169,"{""name"":""Two Guns Pilsner"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wynkoop_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A Czech style Pilsner, Two Guns is golden in color with a soft malt character derived from Bohemian barley and just enough spicy bitterness to make another tasted desirable."",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,38,1
+third_street_ale_works-old_redwood_porter,0,0,245106671616,"{""name"":""Old Redwood Porter"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""third_street_ale_works"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,19,1
+twisted_pine_brewing_company,0,0,245106475008,"{""name"":""Twisted Pine Brewing Company"",""city"":""Boulder"",""state"":""Colorado"",""code"":""80301"",""country"":""United States"",""phone"":""303.786.9270"",""website"":""http://www.twistedpinebrewing.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Established in 1995, Twisted Pine Brewing Company produces only 100% natural, unpasteurized pure malt ales, batch brewed and hand-crafted. Because we believe that craft beer is best enjoyed fresh, Twisted Pine ales can only be found throughout Colorado. By maintaining only a local presence we feel proud that our beers capture the full flavor and variety of style found at our brewery. It is our intention to bring to you a select family of individually distinctive ales that we as brewers would enjoy drinking ourselves. That is our final measure. We ignore costs, fads, and difficulty in creating our ales. And, while we are very serious about the art and business of beer making, we try to avoid taking ourselves too seriously. After all, we realize brewing a fine beer isn't exactly nuclear physics. It's something far more important. -Twistedpine.com"",""address"":[""3201 Walnut Street Ste A""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.0201,""lon"":-105.251}}",1,18,1
+yakima_brewing_and_malting_grant_s_ales-hefeweizen,0,0,245751808000,"{""name"":""Hefeweizen"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yakima_brewing_and_malting_grant_s_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,55,1
+sierra_nevada_brewing_co-harvest_ale,0,0,245001420800,"{""name"":""Harvest Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sierra_nevada_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""The cornerstone of our Harvest series is the beer that started the modern-day fresh hop ale phenomenon in America, our original Harvest Ale. \r\n\r\nCreated in 1996, Harvest Ale features Cascade and Centennial hops from the Yakima Valley in Eastern Washington. These hops are harvested and shipped as “wet” un-dried hops—the same day they are picked—to our brewery in Chico where our brewers eagerly wait to get them into the brew kettle while their oils and resins are still at their peak."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+three_floyds_brewing-dreadnaught_imperial_ipa,0,0,245103853568,"{""name"":""Dreadnaught Imperial IPA"",""abv"":9.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""three_floyds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""A hop lover’s dream! Mango and peach aromas with a crisp citrus finish."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,12,1
+white_oak_cider-1997,0,0,245752004609,"{""name"":""1997"",""abv"":6.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""white_oak_cider"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,57,1
+thunderhead_brewery-american_wheat,0,0,245112963075,"{""name"":""American Wheat"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,34,1
+tampa_bay_brewing,0,0,245113421824,"{""name"":""Tampa Bay Brewing"",""city"":""Tampa"",""state"":""Florida"",""code"":""33605"",""country"":""United States"",""phone"":""1-813-247-1422"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1812 North 15th Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":27.9607,""lon"":-82.4433}}",1,35,1
+voodoo_brewing_co_llc-wynona_s_big_brown_ale,0,0,245749121024,"{""name"":""Wynona's Big Brown Ale"",""abv"":7.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""This is named after a song that sparked the idea to make this ale. Brown ales seem to be there, but not really there, do you know what I mean? Well that won't be the mistake with Wynona! We Voodooed out this style and added more that's what we say. Mildly hoppy and smooth with hints of chocolate and tons of brown malt to let you know it's there. Currently 7.3% by vol. \r\n\r\nBottle conditioned and Refermented. \r\n\r\nGet down with the brown, You'll be Happy You Did!!"",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,37,1
+the_church_brew_works,0,0,245119647746,"{""name"":""The Church Brew Works"",""city"":""Pittsburgh"",""state"":""Pennsylvania"",""code"":""15201"",""country"":""United States"",""phone"":""412-688-8200"",""website"":""http://churchbrew.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""3525 Liberty Avenue""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.4624,""lon"":-79.9645}}",1,50,1
+water_tower_brewing-old_ls_barleywine,0,0,245746237441,"{""name"":""Old LS Barleywine"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""water_tower_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,17,1
+zea_rotisserie_and_brewery-z_p_a_india_pale_ale,0,0,245748203520,"{""name"":""Z.P.A. India Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,31,1
+thirstybear_brewing-thirsty_ipa,0,0,245106737152,"{""name"":""Thirsty IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thirstybear_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+victory_brewing-wild_devil_ale,0,0,245746302976,"{""name"":""Wild Devil Ale"",""abv"":6.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,18,1
+yegua_creek_brewing_dallas-icehaus_pale_ale,0,0,245751808001,"{""name"":""Icehaus Pale Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yegua_creek_brewing_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+sly_fox_brewhouse_and_eatery_phoenixville,0,0,245118926848,"{""name"":""Sly Fox Brewhouse and Eatery - Phoenixville"",""city"":""Phoenixville"",""state"":""Pennsylvania"",""code"":""19460"",""country"":""United States"",""phone"":""1-610-935-4540"",""website"":""http://www.slyfoxbeer.com/index1.asp"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A family owned brewpub founded in 1995. A second location, in Royersford, PA, was opened in 2004 and includes a full production brewery as well as an accompanying restaurant. Head brewer is Brian O'Reilly, a multi-GABF Medal winner. Sly Fox packages its beers in cans, 22oz and 750ml bottles, but not in the standard 12oz-er. The pub is noted for its annual Bock Festival & Goat Race (winning goat's name goes on the year's MaiBock) and the IPA Project, a year-long program of single varietal beers culminating in an Imperial IPA using all those varietals, released at a day-long party every December when all the IPAs are on draught."",""address"":[""519 Kimberton Road""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.1298,""lon"":-75.5499}}",1,49,1
+trap_rock_restaurant_and_brewery-hathor_red_lager,0,0,245103853569,"{""name"":""Hathor Red Lager"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trap_rock_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,12,1
+williams_brothers_brewing_company,0,0,245752004610,"{""name"":""Williams Brothers Brewing Company"",""city"":""Alloa"",""state"":""Scotland"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01259)-725511"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""New Alloa Brewery""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":56.1163,""lon"":-3.7954}}",1,57,1
+tongerlo,0,0,245113028608,"{""name"":""Tongerlo"",""city"":""Westerlo"",""state"":""Antwerp"",""code"":"""",""country"":""Belgium"",""phone"":"""",""website"":""http://www.tongerlo.be"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":51.0873,""lon"":4.9178}}",1,34,1
+the_alchemist-alena,0,0,245113421825,"{""name"":""Alena"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_alchemist"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,35,1
+whitstable_brewery-east_india_ipa,0,0,245749186560,"{""name"":""East India IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""whitstable_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,37,1
+the_livery-herb_superb,0,0,245119713280,"{""name"":""Herb Superb"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""This India Pale Ale is brewed with English Maris Otter pale malt and Chocolate malt, giving it a dark color and is generously hopped with English Fuggles hops. Named for mug club member and brewery supporter Herb Caldwell."",""style"":""English-Style India Pale Ale"",""category"":""British Ale""}",1,50,1
+weyerbacher_brewing_company-weyerbacher_india,0,0,245746302976,"{""name"":""Weyerbacher India"",""abv"":7.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""The latest in our Brewers’ Select One-offs, India is a West Coast style IPA at [7.2%] ABV, with incredibly delicious hoppiness! Golden in color, this beer is tilted way over toward the hops by way of less specialty malts used in the mash. Draft will be going out to select wholesalers in PA, NJ, FL, and MD.” 70+ IBU’s."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,17,1
+trade_winds_brewing-paniolo_ale,0,0,245106737153,"{""name"":""Paniolo Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trade_winds_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,19,1
+victory_brewing-workhorse_porter,0,0,245746368512,"{""name"":""Workhorse Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,18,1
+youngs_company_brewery-double_chocolate_stout,0,0,245751808002,"{""name"":""Double Chocolate Stout"",""abv"":5.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""youngs_company_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A rich, creamy stout with roasted chocolate flavors. A perfect dessert beer."",""style"":""Sweet Stout"",""category"":""British Ale""}",1,55,1
+southend_brewery_and_smokehouse_charleston-blonde_light,0,0,245118926849,"{""name"":""Blonde Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southend_brewery_and_smokehouse_charleston"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,49,1
+trinity_brewing_company-flo_ipa,0,0,245103919104,"{""name"":""Flo IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trinity_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,12,1
+yazoo_brewing-sly_rye_porter,0,0,245752070144,"{""name"":""Sly Rye Porter"",""abv"":5.7,""ibu"":28.0,""srm"":29.0,""upc"":0,""type"":""beer"",""brewery_id"":""yazoo_brewing"",""updated"":""2011-04-17 12:32:26"",""description"":""A rich, chocolaty English Porter with a clean finish. We use the finest floor-malted Maris Otter malts from England, the same malts used for the best single-malt scotch. A portion of malted rye gives a spicy, slightly dry finish."",""style"":""Porter"",""category"":""North American Ale""}",1,57,1
+trap_rock_restaurant_and_brewery-ghost_pony_helles_lager,0,0,245113028609,"{""name"":""Ghost Pony Helles Lager"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trap_rock_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+the_livery-barrel_aged_synapse_esb,0,0,245113421826,"{""name"":""Barrel Aged Synapse ESB"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Extra Special Bitter, or ESB, were the benchmark beers for British brewers to serve to their special customers. Brewed with British pale and crystal malt, this reddish copper beer finishes with a subtle dose of English Fuggles hops."",""style"":""Extra Special Bitter"",""category"":""British Ale""}",1,35,1
+wild_duck_brewing,0,0,245749186561,"{""name"":""Wild Duck Brewing"",""city"":""Eugene"",""state"":""Oregon"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":44.0521,""lon"":-123.087}}",1,37,1
+tied_house_cafe_brewery_san_jose-alpine_gold,0,0,245119713281,"{""name"":""Alpine Gold"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+troegs_brewing-scratch_23_2009_kellar_fest,0,0,245106737154,"{""name"":""Scratch #23 2009 Kellar Fest"",""abv"":5.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""In honor of Oktoberfest, we give you Scratch #23-2009, Kellar Fest. This unfiltered lager features all German malts and noble hops. Fermented with the Augustinerbrau yeast strain, Kellar Fest is a blend of Bohemian Pils, Munich and Vienna malts. The Magnum hops provide a crisp bitterness and the Hallertau noble hops impart a slight earthy taste. Kellar Fest finishes crisp and dry with hints of fruit. Grab a lamb handle and savor this Kellar Fest.""}",1,19,1
+watch_city_brewing,0,0,245746368513,"{""name"":""Watch City Brewing"",""city"":""Waltham"",""state"":""Massachusetts"",""code"":""2453"",""country"":""United States"",""phone"":""1-781-647-4000"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""256 Moody Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":42.3718,""lon"":-71.2367}}",1,18,1
+yuengling_son_brewing-lord_chesterfield_ale,0,0,245751808003,"{""name"":""Lord Chesterfield Ale"",""abv"":5.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yuengling_son_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""One of our distinct classic beers brewed since 1829, Yuengling Lord Chesterfield Ale has as much rich heritage as it does flavor and appeal. Crafted in a unique two-stage European brewing style for enhanced bitterness, it utilizes both conventional kettle hopping and dry hopping after fermentation resulting in a dry sharp finish. Brewed with select hops, its distinct robust flavor is derived from a delicate combination of sweet maltiness and lingering herbal bitterness. Lord Chesterfield Ale's bright gold color is complemented by a lightly laced foam head and fragrant zesty aroma. This fine Ale compares with the very best crafty-style beers. It pairs flawlessly with many foods including seafood dishes and fine cheeses."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,55,1
+southern_tier_brewing_co-heavy_weizen_imperial_unfiltered_wheat_ale,0,0,245118992384,"{""name"":""Heavy Weizen Imperial Unfiltered Wheat Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""southern_tier_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,49,1
+troegs_brewing-scratch_17_2009,0,0,245103919105,"{""name"":""Scratch #17 2009"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""O.G.: 12.7 Plato\r\nA.B.V.: 5.6%\r\nIBU: 43\r\nMalt: Pils\r\nYeast: Augustiner\r\nHops: Select, Tradition, Spalt, Glacier"",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,12,1
+yegua_creek_brewing_dallas-white_rock_red,0,0,245752070145,"{""name"":""White Rock Red"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yegua_creek_brewing_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,57,1
+two_brothers_brewing-iditarod_imperial_stout,0,0,245113094144,"{""name"":""Iditarod Imperial Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,34,1
+the_lost_abbey,0,0,245113487360,"{""name"":""The Lost Abbey"",""city"":""San Marcos"",""state"":""California"",""code"":""92069"",""country"":""United States"",""phone"":""(800) 918-6816"",""website"":""http://www.lostabbey.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""155 Mata Way Suite 104""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":33.1406,""lon"":-117.15}}",1,35,1
+tied_house_cafe_brewery_san_jose-ironwood_dark,0,0,245119713282,"{""name"":""Ironwood Dark"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tied_house_cafe_brewery_san_jose"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,50,1
+twin_ports_brewing-gingered_ale,0,0,245106802688,"{""name"":""Gingered Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_ports_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,19,1
+weyerbacher_brewing_company-imperial_pumpkin_ale,0,0,245746368514,"{""name"":""Imperial Pumpkin Ale"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Yes that's right!  The mother of all Pumpkin Ales is currently in transit to our wholesalers and should be out on shelves around mid-September.  This 8.0% ABV pumpkin ale is heartier, spicier, and more \""caramelly\"" and \""pumpkiny\"" than its faint brethren!  \r\n  Perfect finisher on a cool autumn night, or match it up with a slice of pumpkin pie and fresh whipped cream.  \r\n  If you don't agree this is the mother of all pumpkin ales, then you just don't like mothers!"",""style"":""Pumpkin Beer"",""category"":""Other Style""}",1,18,1
+spilker_ales,0,0,245118992385,"{""name"":""Spilker Ales"",""city"":""Cortland"",""state"":""Nebraska"",""code"":""68331"",""country"":""United States"",""phone"":""1-402-798-7445"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""300 West Fourth Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":40.5058,""lon"":-96.707}}",1,49,1
+tucher_bru-dunkles_hefe_weizen,0,0,245103919106,"{""name"":""Dunkles Hefe Weizen"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tucher_bru"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+valley_brewing_company-indian_red_ale,0,0,245113094145,"{""name"":""Indian Red Ale"",""abv"":6.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A flavorful Red Ale with a generous helping of fresh Cascade hops. A full-bodied unfiltered beer with a slightly dry and roasted finish."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,34,1
+thunderhead_brewery-belgian_brown,0,0,245113487361,"{""name"":""Belgian Brown"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thunderhead_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+titletown_brewing-befuddelator_doppelbock,0,0,245119713283,"{""name"":""Befuddelator Doppelbock"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""titletown_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Traditional German-Style Bock"",""category"":""German Lager""}",1,50,1
+tworows_restaurant_brewery_dallas-barking_fish_porter,0,0,245106802689,"{""name"":""Barking Fish Porter"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tworows_restaurant_brewery_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Porter"",""category"":""Irish Ale""}",1,19,1
+yaletown_brewing,0,0,245746434048,"{""name"":""Yaletown Brewing"",""city"":""Vancouver"",""state"":""British Columbia"",""code"":""0"",""country"":""Canada"",""phone"":""1-604-688-0039"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1111 Mainland Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":49.2755,""lon"":-123.121}}",1,18,1
+stone_brewing_co-imperial_russian_stout,0,0,245119057920,"{""name"":""Imperial Russian Stout"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""stone_brewing_co"",""updated"":""2010-07-22 20:00:20"",""description"":""Brewed in the authentic historical style of an Imperial Russian Stout, this ale is massive. Intensely aromatic (notes of anise, lack currants, coffee, roastiness and alcohol) and heavy on the palate, this brew goes where few can --- and fewer dare even try. The style originated from Czarist Russia's demand for ever thicker English stouts. Expect our version of this mysterious brew to pour like Siberian crude and taste even heavier!"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,49,1
+unibroue-seigneuriale,0,0,245103984640,"{""name"":""Seigneuriale"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""The copper-colored body and generous foam\r\nhead of this amber ale tantalize the eyes but\r\nit's the complex flavor of Seigneuriale that\r\ndelivers a pleasant surprise. It is slightly\r\nsweet, malty and spicy, but a distinctive hop\r\ncharacter and notes of apricot brandy give\r\nSeigneuriale a truly unique character. \r\n\r\nWe recommending pairing it with carved ham,\r\napricot-glazed duck or squab, Thai shrimp\r\ncurry or a holiday fruit cake."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,12,1
+victory_brewing-festbier,0,0,245113094146,"{""name"":""Festbier"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Seductively smooth, this medium-bodied amber beauty is akin to the great Oktoberfest beers of Munich. All German malts and whole flower European hops make this lager true to style."",""style"":""German-Style Oktoberfest"",""category"":""German Lager""}",1,34,1
+triumph_brewing_of_princeton-winter_wonder,0,0,245113487362,"{""name"":""Winter Wonder"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""triumph_brewing_of_princeton"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+trap_rock_restaurant_and_brewery-pacific_coast_ale,0,0,245119778816,"{""name"":""Pacific Coast Ale"",""abv"":5.6,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trap_rock_restaurant_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+tyranena_brewing-bitter_woman_from_hell_extra_ipa,0,0,245106802690,"{""name"":""Bitter Woman From Hell Extra IPA"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""tyranena_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,19,1
+yuksom_breweries,0,0,245746434049,"{""name"":""Yuksom Breweries"",""city"":""Malli"",""state"":""Sikkim"",""code"":"""",""country"":""India"",""phone"":""91 03595-70205"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[]}",1,18,1
+sweet_water_tavern_and_brewery-great_american_s_restaurant_pale_ale,0,0,245119057921,"{""name"":""Great American's Restaurant Pale Ale"",""abv"":5.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""sweet_water_tavern_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""A fruity, copper-colored ale with a firm maltiness & dry hop."",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+voodoo_brewing_co_llc-4_seasons_ipa,0,0,245745516544,"{""name"":""4 Seasons IPA"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""voodoo_brewing_co_llc"",""updated"":""2010-07-22 20:00:20"",""description"":""India Pale Ale is a wonderful example of marriage.  Bitter Hops and Boasting Barley come together to make one of the most sought after ales of the Craft Beer masses. Bottle Conditioned and Refermented."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,12,1
+water_street_brewery,0,0,245748400128,"{""name"":""Water Street Brewery"",""city"":""Milwaukee"",""state"":""Wisconsin"",""code"":""53202"",""country"":""United States"",""phone"":""1-414-272-1195"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""1101 North Water Street""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":43.0448,""lon"":-87.9114}}",1,34,1
+tsingtao,0,0,245113552896,"{""name"":""Tsingtao"",""city"":""Qingdao"",""state"":""Shandong"",""code"":"""",""country"":""China"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":36.0663,""lon"":120.383}}",1,35,1
+two_brothers_brewing-northwind_imperial_stout,0,0,245119778817,"{""name"":""Northwind Imperial Stout"",""abv"":7.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""two_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,50,1
+victory_brewing-moonglow_weizenbock,0,0,245106868224,"{""name"":""Moonglow Weizenbock"",""abv"":8.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""victory_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""This dark amber wheat beer features fruity and spicy aromas galore.  Significant strength underlies the pleasant citric appeal of this bock beer. Redolent with the flavors of harvest fruit, Moonglow typifies the traditional weizenbock-style so thoroughly enjoyed throughout Bavaria. Left unfiltered, its unique yeast strain gives Moonglow a radiance all its own."",""style"":""South German-Style Weizenbock"",""category"":""German Ale""}",1,19,1
+tallgrass_brewing_co,0,0,245119123456,"{""name"":""Tallgrass Brewing Co."",""city"":""Manhattan"",""state"":""KS"",""code"":""66502"",""country"":""United States"",""phone"":""785-537-1131"",""website"":""http://www.tallgrassbeer.com"",""type"":""brewery"",""updated"":""2010-11-11 19:21:21"",""description"":"""",""address"":[""8845 Quail Lane""]}",1,49,1
+weyerbacher_brewing_company-old_heathen,0,0,245745582080,"{""name"":""Old Heathen"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Rich, velvety and deliciously complex, Old Heathen is a truly distinctive winter warmer. We use seven types of malt and two varieties of hops to bring forth this big brew. Quite robust and roasty on the palate, Old Heathen imperial stout has a wonderfully fruity nose and a moderately dry finish. The taste is highly complex- perhaps you'll even discern notes of espresso or chocolate. \r\n\r\nOld Heathen imperial stout is our interpretation of a beer style that originated in the 18th century. Brewed in England and exported to Germany, Scandinavia and Russia, these beers became fashionable among the members of the Czar's court. In order to survive long voyages they were brewed with high alcohol content to prevent spoilage. And at 8.0% ABV (alcohol by volume) Old Heathen definitely contains a warming belt. You may want to lay down a few bottles for future evaluation- this beer keeps well and will only get better with age.\r\n\r\nLike most of our beers, Weyerbacher Old Heathen is a perfect accompaniment to foods. Try it with rich stews, oysters, caviar or roasted meats. Old Heathen is also a perfect companion to chocolate desserts.\r\n\r\nOld Heathen is now available year-round."",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,12,1
+wdi_bru_huus-dunkel,0,0,245748400129,"{""name"":""Dunkel"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,34,1
+tworows_restaurant_brewery_dallas,0,0,245113552897,"{""name"":""TwoRows Restaurant & Brewery - Dallas"",""city"":""Dallas"",""state"":""Texas"",""code"":""75206"",""country"":""United States"",""phone"":""1-214-696-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""5500 Greenville Avenue #1300""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":32.8545,""lon"":-96.7687}}",1,35,1
+uinta_brewing_compnay-gelande_amber_lager,0,0,245119778818,"{""name"":""Gelande Amber Lager"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""uinta_brewing_compnay"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+wdi_bru_huus-single_malt_bier,0,0,245746434048,"{""name"":""Single-Malt-Bier"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wdi_bru_huus"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Lager"",""category"":""North American Lager""}",1,19,1
+the_blind_bat_brewery_llc,0,0,245119123457,"{""name"":""The Blind Bat Brewery LLC"",""city"":""Centerport"",""state"":""New York"",""code"":""11721"",""country"":""United States"",""phone"":""(631) 891-7909"",""website"":""http://www.blindbatbrewery.com/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""420 Harrison Drive""],""geo"":{""accuracy"":""ROOFTOP"",""lat"":40.8959,""lon"":-73.3811}}",1,49,1
+white_winter_winery-dry_mead,0,0,245745582081,"{""name"":""Dry Mead"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""white_winter_winery"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+weinkeller_brewery_berwyn-bavarian_weiss,0,0,245748400130,"{""name"":""Bavarian Weiss"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,34,1
+uehara_shuzou_co_ltd_echigo_beer_pub-koshihikari_echigo_beer,0,0,245113618432,"{""name"":""Koshihikari Echigo Beer"",""abv"":5.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""uehara_shuzou_co_ltd_echigo_beer_pub"",""updated"":""2011-07-23 20:37:34"",""description"":""Japanese Rice Lager"",""style"":""Out of Category"",""category"":""Other Style""}",1,35,1
+upstream_brewing_old_market-gold_coast_blonde_ale,0,0,245119844352,"{""name"":""Gold Coast Blonde Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""Gold Coast Blonde is light in malt and hops and of course, golden in color. A great choice if you’re looking for true American beer flavor with a bit more malt than a light beer has to offer."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,50,1
+weeping_radish_restaurant_and_brewery_manteo,0,0,245746499584,"{""name"":""Weeping Radish Restaurant and Brewery - Manteo"",""city"":""Manteo"",""state"":""North Carolina"",""code"":""27954"",""country"":""United States"",""phone"":""1-800-896-5403"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""525 N Virginia Dare Road""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":35.8859,""lon"":-75.6697}}",1,19,1
+the_livery-cousin_jax,0,0,245119123458,"{""name"":""Cousin Jax"",""abv"":9.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""the_livery"",""updated"":""2010-07-22 20:00:20"",""description"":""Way up in the Keewenaw Peninsula in Michigans UP, Mt. Bohemia ski area has a powder run hidden at the top called \""Cousin Jack\"" (named after the Cornish miners)that winds its' way steeply through the rocks and trees. AAAHHH WINTER!!! Double the Belgian Malt, double the Amarillo hops-a perfect way to end any day. Everyones' favorite cousin! Also available barrel aged."",""style"":""Imperial or Double India Pale Ale"",""category"":""North American Ale""}",1,49,1
+wild_river_brewing_and_pizza_cave_junction-light,0,0,245745647616,"{""name"":""Light"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wild_river_brewing_and_pizza_cave_junction"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,12,1
+weinkeller_brewery_berwyn-nut_brown_ale,0,0,245748531200,"{""name"":""Nut Brown Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Brown Ale"",""category"":""North American Ale""}",1,34,1
+unibroue-terrible,0,0,245113618433,"{""name"":""Terrible"",""abv"":10.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""unibroue"",""updated"":""2010-07-22 20:00:20"",""description"":""Topped by a sumptuous head of foam, La Terrible possesses a fruity aroma enriched with notes of roasted malt and Madeira. Its long lasting flavour is both elegant and full bodied.\r\n\r\nLa Terrible is a dark brown beer on lees and is part of a collection of exotic and refined Unibroue beers brewed using 100% natural raw materials. It may be drunk as an aperitif or as an after dinner digestive. It is equally a perfect accompaniment to the above-mentioned dishes or a pleasant alternative to coffee."",""style"":""Other Belgian-Style Ales"",""category"":""Belgian and French Ale""}",1,35,1
+warsteiner_brauerei-warsteiner_premium_verum,0,0,245751021568,"{""name"":""Warsteiner Premium Verum"",""abv"":4.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""warsteiner_brauerei"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""German-Style Pilsener"",""category"":""German Lager""}",1,50,1
+weyerbacher_brewing_company-delta_ale,0,0,245746499585,"{""name"":""Delta Ale"",""abv"":7.8,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A pitch black stout made with ginger, cinnamon and a touch of molasses. This medium–bodied ale has flavors of dark chocolate, roasted coffee beans and ginger snap cookies."",""style"":""Herb and Spice Beer"",""category"":""Other Style""}",1,19,1
+thomas_hooker_brewing-thomas_hooker_irish_red_ale,0,0,245119188992,"{""name"":""Thomas Hooker Irish Red Ale"",""abv"":5.3,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""thomas_hooker_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Thomas Hooker's traditional Irish-Style Red Ale gets its warm, ruby color from an interesting blend of pale, caramel and roasted malts which promote a sweetness that's balanced with crisp, authentic, English-style hops. A very unique and drinkable red ale that's also favored by amber lovers.\r\nHooker Irish Red is drinks well year-round, not just on St. Paddy's day."",""style"":""Irish-Style Red Ale"",""category"":""Irish Ale""}",1,49,1
+wisconsin_brewing,0,0,245745647617,"{""name"":""Wisconsin Brewing"",""city"":""Wauwatosa"",""state"":""Wisconsin"",""code"":"""",""country"":""United States"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":43.0495,""lon"":-88.0076}}",1,12,1
+weyerbacher_brewing_company-heresy,0,0,245748596736,"{""name"":""Heresy"",""abv"":8.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""This incredibly intriguing Imperial Stout is made by aging our Old Heathen in some very famous Oak barrels that were used for aging bourbon! What do we have when we are done? A stout whose very essence has been enhanced. A stout whose complexity has been increased. A stout with notes of Oak, whiskey and vanilla melding together to create a new sensation. Have we gone too far this time? We don't think so. Heresy is a step above and a leap beyond the extraordinary. Taste it and see what everyone is talking about. 8.0% ABV"",""style"":""American-Style Imperial Stout"",""category"":""North American Ale""}",1,34,1
+van_honsebrouch-kasteel_blonde,0,0,245113618434,"{""name"":""Kasteel Blonde"",""abv"":11.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""van_honsebrouch"",""updated"":""2010-07-22 20:00:20"",""description"":""Slightly dangerous beer - tastes like an 8% blonde, delivers like nothing else. A little tart around the edges, due to the higher alcohol content, but otherwise a pleasant strong pils taste : not too much hop on the palate."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,35,1
+weyerbacher_brewing_company-decadence,0,0,245751087104,"{""name"":""Decadence"",""abv"":13.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Decadence is our Tenth Anniversay spiced amber ale.  This is a very limited production, brewed only once, to celebrate ten fantastic years in business.  This ale weighs in at 13% ABV and is a fantastic sipper, especially after dinner or consider paring it with a good book on a cool fall evening.  Decadence is brewed with honey, cardamom spice and gentian (a rare botanical!)  This ale is very unique and will develop finer character when aged at cellar temperatures."",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,50,1
+whim_ales,0,0,245746565120,"{""name"":""Whim Ales"",""city"":""Buxton"",""state"":""Derby"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01298)-84991"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Hartington""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":53.1407,""lon"":-1.8084}}",1,19,1
+trailhead_brewing_company-red_winter_ale,0,0,245119188993,"{""name"":""Red Winter Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""trailhead_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Amber/Red Ale"",""category"":""North American Ale""}",1,49,1
+whitstable_brewery,0,0,245748662272,"{""name"":""Whitstable Brewery"",""city"":""Maidstone"",""state"":""Kent"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01622)-851007"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Little Telpits Farm, Woodcock Lane""],""geo"":{""accuracy"":""GEOMETRIC_CENTER"",""lat"":51.2047,""lon"":0.6813}}",1,34,1
+vivungs_bryggeri,0,0,245748727808,"{""name"":""Vivungs Bryggeri"",""city"":""Romakloster"",""state"":"""",""code"":"""",""country"":""Sweden"",""phone"":"""",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":57.4985,""lon"":18.459}}",1,35,1
+wh_brakspear_sons-henley_ale,0,0,245751087105,"{""name"":""Henley Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wh_brakspear_sons"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,50,1
+widmer_brothers_brewing-widmer_hefeweizen,0,0,245746565121,"{""name"":""Widmer Hefeweizen"",""abv"":4.9,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""widmer_brothers_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""\""A golden unfiltered wheat beer that is truly cloudy and clearly superb. Ever since Widmer introduced Hefeweizen to America in 1986, ours has been the standard by which all other Hefeweizens are judged.\r\n1998 and 2006 GABF Gold Medal Award Winner\r\n2004 Gold Medal Beer Cup\""\r\n-Widmer Brothers Brewing Company"",""style"":""South German-Style Hefeweizen"",""category"":""German Ale""}",1,19,1
+trailhead_brewing_company,0,0,245119188994,"{""name"":""Trailhead Brewing Company"",""city"":""Saint Charles"",""state"":""Missouri"",""code"":""63301"",""country"":""United States"",""phone"":""1-636-946-2739"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""921 South Riverside Drive""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":38.7745,""lon"":-90.484}}",1,49,1
+woodforde_s_norfolk_ales,0,0,245748662273,"{""name"":""Woodforde's Norfolk Ales"",""city"":""Norwich"",""state"":""Norfolk"",""code"":"""",""country"":""United Kingdom"",""phone"":""44-(01603)-720353"",""website"":"""",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""Woodbastwick""],""geo"":{""accuracy"":""APPROXIMATE"",""lat"":52.6842,""lon"":1.449}}",1,34,1
+walldorff_brew_pub-bistro_blonde,0,0,245748727809,"{""name"":""Bistro Blonde"",""abv"":4.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""walldorff_brew_pub"",""updated"":""2010-07-22 20:00:20"",""description"":""An easy drinking ale that goes well with our food offerings.  Also a great introduction to the world of craft brewing."",""style"":""Golden or Blonde Ale"",""category"":""North American Ale""}",1,35,1
+yazoo_brewing-pale_ale,0,0,245751152640,"{""name"":""Pale Ale"",""abv"":5.8,""ibu"":55.0,""srm"":6.0,""upc"":0,""type"":""beer"",""brewery_id"":""yazoo_brewing"",""updated"":""2011-04-17 12:25:31"",""description"":""A new version of an American classic. Our Yazoo Pale Ale bursts with spicy, citrusy hop aroma and flavor, coming from the newly discovered Amarillo hop. The wonderful hop aroma is balanced nicely with a toasty malt body, ending with a cleansing hop finish. Made with English Pale, Munich, Vienna, and Crystal malts, and generously hopped with Amarillo, Perle, and Cascade hops. Fermented with our English ale yeast."",""style"":""American-Style Strong Pale Ale"",""category"":""North American Ale""}",1,50,1
+yakima_brewing_and_malting_grant_s_ales-imperial_stout,0,0,245746565122,"{""name"":""Imperial Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yakima_brewing_and_malting_grant_s_ales"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,19,1
+troegs_brewing-scratch_beer_31_2010_citra_of_brotherly_love_ipa,0,0,245119188995,"{""name"":""Scratch Beer 31 - 2010 Citra Of Brotherly Love IPA"",""abv"":7.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""troegs_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Scratch 31, the brothers and the brewers decided to revisit one of our favorite sweet spots – IPA – and have some fun with hop flavors. Dubbed ‘Citra of Brotherly Love’ in honor of Philly Beer week, Scratch #31 has generous amounts of Apollo, Cascade and Citra hops. This is our first use of Citra hops, which is known for an intense grapefruit aroma and flavor.\r\n\r\nWhile showcasing the intense Citra flavor we added additional bitterness with Apollo and Chinook hops as well. Scratch #31 went through a bed of Chinook hops in the hopback and was dry-hopped with Cascade and Citra hops."",""style"":""American-Style India Pale Ale"",""category"":""North American Ale""}",1,49,1
+yards_brewing-yards_saison,0,0,245748727808,"{""name"":""Yards Saison"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Saisons were historically brewed to keep the farmhands happy and hydrated during the warm summer months. Crafted using Belgian pilsen malt and candi sugar, this golden Belgian style ale is a refreshing change from your usual beer lineup."",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,34,1
+weinkeller_brewery_berwyn-dublin_stout,0,0,245748793344,"{""name"":""Dublin Stout"",""abv"":6.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weinkeller_brewery_berwyn"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,35,1
+yazoo_brewing-dos_perros,0,0,245746630656,"{""name"":""Dos Perros"",""abv"":3.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yazoo_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Many Mexican beer styles today are descendants of old Austrian styles, from when Austria ruled Mexico in the late 19th century. Our Dos Perros is made with German Munich malt, English Pale malt, and Chocolate malt, and hopped with Perle and Saaz hops. To lighten the body, as many Mexican brewers do, we add a small portion of flaked maize. The result is a wonderfully bready malt aroma, balanced with some maize sweetness and a noble hop finish.\r\n\r\nFood Pairings: The toasty malt flavors go great with barbeque, grilled salmon, carmelized onions, and most hot and spicy foods. Try it with Mexican or Thai dishes.\r\n\r\nOG: 10.4 Plato\r\nFG: 3.3 Plato\r\nIBUs: 21\r\nSRM: 13\r\n3.5% abv"",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,19,1
+twin_ports_brewing-hopfenkopf,0,0,245119254528,"{""name"":""Hopfenkopf"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""twin_ports_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,49,1
+yegua_creek_brewing_dallas-cask_scotch_ale,0,0,245748793345,"{""name"":""Cask Scotch Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yegua_creek_brewing_dallas"",""updated"":""2010-07-22 20:00:20"",""description"":""""}",1,35,1
+zea_rotisserie_and_brewery-category_5_strong_ale,0,0,245746630657,"{""name"":""Category 5 Strong Ale"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""zea_rotisserie_and_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Pale Ale"",""category"":""North American Ale""}",1,19,1
+upland_brewing,0,0,245119254529,"{""name"":""Upland Brewing"",""city"":""Bloomington"",""state"":""Indiana"",""code"":""47404"",""country"":""United States"",""phone"":""1-812-336-2337"",""website"":""http://www.uplandbeer.com"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""Located in downtown Bloomington, just a few blocks from Courthouse Square, we are open (and brewing award-winning beers) every day of the year except Thanksgiving, Christmas Day, and New Year's Day. The Tap Room and Biergarten has six everyday Upland beers on tap with additional Seasonal brews (Oktoberfest, Winter Warmer, Chocolate Stout, Maibock�yea springtime!) throughout the year. (Check the News section opposite for seasonal release dates and related celebrations.) The Tap Room restaurant offers an eclectic menu of great pub grub (signature nachos, rib tips like no others) plus dinner fare that addresses sophisticated palates with cuisines from around the world. (Yes, we're a brew pub, but our wine list is excellent). Better yet, sign on to our Upland Update to learn who's performing. And while you're here be sure to check out the weekly dinner specials from the fertile imaginations of our excellent restaurant crew. Part of a group that's interested in brewing? Arrange for a brewery tour. We are proud of our hand-crafted, award-winning beers and would be delighted to guide you through the many stages involved in the brewing process. In the meantime, take the Virtual Tour for an inside look at how glorious stainless steel can be when directed to perform a noble task! Most of all, everyone here welcomes you to come by and partake of the Upland Experience�where great food, great beer, and great friends come together. Can't get to Bloomington? No problemo. As Indiana's largest microbrewer, you can find Upland beers in better stores, taverns, and restaurants throughout the state of Indiana."",""address"":[""350 West Eleventh Street""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":39.1733,""lon"":-86.5369}}",1,49,1
+york_brewery,0,0,245748858880,"{""name"":""York Brewery"",""city"":""York"",""state"":"""",""code"":""YO1 6JT"",""country"":""England"",""phone"":""01904 621162"",""website"":""http://www.york-brewery.co.uk"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""address"":[""12 Toft Green""],""geo"":{""accuracy"":""RANGE_INTERPOLATED"",""lat"":53.9571,""lon"":-1.0905}}",1,35,1
+till,0,0,89984275906560,"{""click"":""to edit"",""new in 2.0"":""there are no reserved field names""}",1,19,1
+upstream_brewing_old_market-american_wheat,0,0,245119254530,"{""name"":""American Wheat"",""abv"":4.7,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""upstream_brewing_old_market"",""updated"":""2010-07-22 20:00:20"",""description"":""A Silver Medal Winner in the American Hefenweizen category at the 2004 Great American Beer Festival, our American Wheat has a crisp and refreshing flavor."",""style"":""Light American Wheat Ale or Lager"",""category"":""Other Style""}",1,49,1
+valley_brewing_company-valley_brewing_london_tavern_ale,0,0,245119320064,"{""name"":""Valley Brewing London Tavern Ale"",""abv"":4.4,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""valley_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""A classic English Style Mild with a light hop profile. London Tavern Ale is a well balanced beer with caramel flavor and English character. Only traditional English Kent Goldings and Fuggles hops are used."",""style"":""English-Style Pale Mild Ale"",""category"":""British Ale""}",1,49,1
+wernesgruner_brauerei_gmbh,0,0,245750824960,"{""name"":""Wernesgrüner Brauerei GmbH"",""city"":""Steinberg-Wernesgrün, Germany"",""state"":"""",""code"":"""",""country"":""Germany"",""phone"":"""",""website"":""http://www.wernesgruener.de/"",""type"":""brewery"",""updated"":""2010-07-22 20:00:20"",""description"":""The Wernesgrüner Brewery or Wernesgrüner Brauerei GmbH is a brewery in Steinberg-Wernesgrün, Saxony, Germany. The brewery was founded in 1436 when the brothers Schorer acquired the rights to brew and open a tavern. After establishing property for bottling they soon began brewing on what would become the foundations of the Wernesgrüner Pils Legend. It is known as the aforementioned Pils Legend, because it was a bitter specialty during the communist period in Germany. [1] Throughout the company's history it has endured numerous changes of ownership. In 1762 the Günnel family bought the Schorer brewery. In 1774 the Männel family took over the bottling properties. Even though at the end of the 19th century the label now had five independent breweries, the families were still competing with each other. By 1910 the company had established itself throughout Germany and the Netherlands, and was even served on the renowned Hapag-Lloyd ships that ran from Hamburg to America.[1] The company was acquired by the Bitburger Braugruppe GmbH in 2002. The current output is 850,000 hl per year."",""address"":[]}",1,49,1
+weyerbacher_brewing_company-insanity,0,0,245750890496,"{""name"":""Insanity"",""abv"":11.1,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Insanity, just released this past November, 2004, is Weyerbacher's latest creation in the world of cutting edge beers. Insanity is made by aging our perfectly balanced Blithering Idiot Barleywine in  oak bourbon casks. This incredible combination creates a melange of flavors such as malt, dates, oak, vanilla, and bourbon just to name a few.\r\n\r\n  Insanity is 11.1% ABV. It is best enjoyed in a brandy snifter and served at 45-50 degrees F."",""style"":""American-Style Barley Wine Ale"",""category"":""North American Ale""}",1,49,1
+weyerbacher_brewing_company-muse_farmhouse_ale,0,0,245750956032,"{""name"":""Muse Farmhouse Ale"",""abv"":6.2,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""weyerbacher_brewing_company"",""updated"":""2010-07-22 20:00:20"",""description"":""Muse, a Farmhouse Ale,  is brewed \""somewhat\"" in the tradition of the style, but it has Weyerbacher fingerprints all over it! Made with Pale malt, a little carapils, raw wheat and raw oats, this warm weather seasonal is dry and ever so slightly tart on the pallet from the wheat and oats. At 6.2% abv, its a bit higher than your strictly traditional farmhouse, but not out of the realm, really. The wheat and oats makes the mouthfeel silky and light at the same time.  They also bring some cloudiness to the brew, but don't be afraid!  Hopped with Styrian Goldings and finished with Saaz, this beer has a noticable hoppy dryness which makes it a fine thirst quencher, something the original Farmhouse Ales were intended to be, served to workers out in the fields on hot summer days as a restorative.\r\nFermented with Forbidden Fruit yeast, at a very high temperature (78F), the spiciness developed is entirely from this traditional yeast strain, not from any kettle additions. Unfiltered, to enjoy this natural beauty, and imagine yourself out in the flat fields of Belgium! Cheers!"",""style"":""French & Belgian-Style Saison"",""category"":""Belgian and French Ale""}",1,49,1
+whitstable_brewery-whitstable_oyster_stout,0,0,245750956033,"{""name"":""Whitstable Oyster Stout"",""abv"":0.0,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""whitstable_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
+wychwood_brewery-hobgoblin,0,0,245750956034,"{""name"":""Hobgoblin"",""abv"":5.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""wychwood_brewery"",""updated"":""2010-07-22 20:00:20"",""description"":"""",""style"":""Dark American-Belgo-Style Ale"",""category"":""North American Ale""}",1,49,1
+yards_brewing-yards_love_stout,0,0,245751021568,"{""name"":""Yards Love Stout"",""abv"":4.5,""ibu"":0.0,""srm"":0.0,""upc"":0,""type"":""beer"",""brewery_id"":""yards_brewing"",""updated"":""2010-07-22 20:00:20"",""description"":""Straight from the heart of the City of Brotherly Love comes a dark and chocolatey seductive little stout dominated by roasted malt flavor. This is one Philly favorite that won't break your heart and will always love you back."",""style"":""American-Style Stout"",""category"":""North American Ale""}",1,49,1
diff --git a/hyracks/hyracks-dist/pom.xml b/hyracks/hyracks-dist/pom.xml
index 87b0a72..c2cc563 100644
--- a/hyracks/hyracks-dist/pom.xml
+++ b/hyracks/hyracks-dist/pom.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
  ! Licensed to the Apache Software Foundation (ASF) under one
  ! or more contributor license agreements.  See the NOTICE file
@@ -47,21 +46,11 @@
 	<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>
-				</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>
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml b/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
index bacae8e..d289ad1 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml
@@ -56,16 +56,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>appassembler-maven-plugin</artifactId>
         <version>1.3</version>
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
index 202096a..aa386a8 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
@@ -107,15 +107,15 @@
         // string
         // we will use field 2 as primary key to fill a clustered index
         RecordDescriptor recDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, // this field will
+                new UTF8StringSerializerDeserializer(), // this field will
                                                            // not go into B-Tree
-                UTF8StringSerializerDeserializer.INSTANCE, // we will use this
+                new UTF8StringSerializerDeserializer(), // we will use this
                                                            // as payload
                 IntegerSerializerDeserializer.INSTANCE, // we will use this
                                                         // field as key
                 IntegerSerializerDeserializer.INSTANCE, // we will use this as
                                                         // payload
-                UTF8StringSerializerDeserializer.INSTANCE // we will use this as
+                new UTF8StringSerializerDeserializer() // we will use this as
                                                           // payload
                 });
 
@@ -147,7 +147,7 @@
         // tuple
         int[] primaryFieldPermutation = { 2, 1, 3, 4 }; // map field 2 of input
                                                         // tuple to field 0 of
-                                                        // B-Tree tuple, etc.        
+                                                        // B-Tree tuple, etc.
         IFileSplitProvider primarySplitProvider = JobHelper.createFileSplitProvider(splitNCs, options.primaryBTreeName);
 
         IIndexDataflowHelperFactory dataflowHelperFactory = new BTreeDataflowHelperFactory(true);
@@ -206,4 +206,4 @@
 
         return spec;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
index a493aec..eaf9109 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
@@ -105,15 +105,15 @@
         // int, string
         // we will use field-index 2 as primary key to fill a clustered index
         RecordDescriptor recDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, // this field will
+                new UTF8StringSerializerDeserializer(), // this field will
                                                            // not go into B-Tree
-                UTF8StringSerializerDeserializer.INSTANCE, // we will use this
+                new UTF8StringSerializerDeserializer(), // we will use this
                                                            // as payload
                 IntegerSerializerDeserializer.INSTANCE, // we will use this
                                                         // field as key
                 IntegerSerializerDeserializer.INSTANCE, // we will use this as
                                                         // payload
-                UTF8StringSerializerDeserializer.INSTANCE // we will use this as
+                new UTF8StringSerializerDeserializer() // we will use this as
                                                           // payload
                 });
 
@@ -176,4 +176,4 @@
 
         return spec;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
index 48b9942..6b22681 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
@@ -111,8 +111,8 @@
 
         // schema of tuples coming out of primary index
         RecordDescriptor recDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE, });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(), });
 
         // build tuple containing low and high search keys
         ArrayTupleBuilder tb = new ArrayTupleBuilder(comparatorFactories.length * 2); // high
@@ -129,8 +129,8 @@
                                                                     // high key
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
@@ -163,4 +163,4 @@
 
         return spec;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
index e8e2281..9b85b8b 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
@@ -105,10 +105,10 @@
                 IntegerSerializerDeserializer.INSTANCE, // we will use this as
                                                         // payload in secondary
                                                         // index
-                UTF8StringSerializerDeserializer.INSTANCE, // we will use this
+                new UTF8StringSerializerDeserializer(), // we will use this
                                                            // ask key in
                                                            // secondary index
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });
 
         int primaryFieldCount = 4;
         ITypeTraits[] primaryTypeTraits = new ITypeTraits[primaryFieldCount];
@@ -162,4 +162,4 @@
 
         return spec;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
index 1a1559f..94ae0d3 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
@@ -102,7 +102,7 @@
 
         // schema of tuples coming out of secondary index
         RecordDescriptor secondaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
 
         int secondaryFieldCount = 2;
         ITypeTraits[] secondaryTypeTraits = new ITypeTraits[secondaryFieldCount];
@@ -120,8 +120,8 @@
 
         // schema of tuples coming out of primary index
         RecordDescriptor primaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE, });
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(),
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(), });
 
         int primaryFieldCount = 4;
         ITypeTraits[] primaryTypeTraits = new ITypeTraits[primaryFieldCount];
@@ -145,15 +145,15 @@
         DataOutput dos = tb.getDataOutput();
 
         tb.reset();
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("0", dos); // low
+        new UTF8StringSerializerDeserializer().serialize("0", dos); // low
                                                                        // key
         tb.addFieldEndOffset();
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("f", dos); // high
+        new UTF8StringSerializerDeserializer().serialize("f", dos); // high
                                                                        // key
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
@@ -208,4 +208,4 @@
 
         return spec;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml b/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
index 5fbb541..ae1d946 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml
@@ -58,19 +58,10 @@
   		<version>0.2.18-SNAPSHOT</version>
   	</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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-deploy-plugin</artifactId>
       <configuration>
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java
index b0b1d52..5ef6417 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/DataGenOperatorDescriptor.java
@@ -79,8 +79,8 @@
 
             @Override
             public void initialize() throws HyracksDataException {
-                writer.open();
                 try {
+                    writer.open();
                     for (int i = 0; i < numRecords; i++) {
                         tb.reset();
                         for (int j = 0; j < recDesc.getFieldCount(); j++) {
@@ -88,16 +88,17 @@
                         }
 
                         if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
-                            appender.flush(writer, true);
+                            appender.write(writer, true);
                             if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
-                                throw new HyracksDataException("Record size (" + tb.getSize() + ") larger than frame size (" + appender.getBuffer().capacity() + ")");
+                                throw new HyracksDataException("Record size (" + tb.getSize()
+                                        + ") larger than frame size (" + appender.getBuffer().capacity() + ")");
                             }
                         }
                     }
-                    appender.flush(writer, true);
-                } catch (Exception e) {
+                    appender.write(writer, true);
+                } catch (Throwable th) {
                     writer.fail();
-                    throw new HyracksDataException(e);
+                    throw new HyracksDataException(th);
                 } finally {
                     writer.close();
                 }
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/NCApplicationEntryPoint.java b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/NCApplicationEntryPoint.java
index 5a7b494..66ec854 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/NCApplicationEntryPoint.java
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/NCApplicationEntryPoint.java
@@ -37,4 +37,4 @@
     public void stop() throws Exception {
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
index 0f96c19..2e96527 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/RuntimeContext.java
@@ -60,10 +60,10 @@
         IPageReplacementStrategy prs = new ClockPageReplacementStrategy(allocator, 32768, 50);
         bufferCache = new BufferCache(appCtx.getRootContext().getIOManager(), prs, new DelayPageCleanerPolicy(1000),
                 fileMapManager, 100, threadFactory);
-        lcManager = new IndexLifecycleManager();
         ILocalResourceRepositoryFactory localResourceRepositoryFactory = new TransientLocalResourceRepositoryFactory();
         localResourceRepository = localResourceRepositoryFactory.createRepository();
         resourceIdFactory = (new ResourceIdFactoryProvider(localResourceRepository)).createResourceIdFactory();
+        lcManager = new IndexLifecycleManager();
     }
 
     public void close() throws HyracksDataException {
@@ -93,4 +93,4 @@
     public IIndexLifecycleManager getIndexLifecycleManager() {
         return lcManager;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java
index 80ffae4..7996bb0 100644
--- a/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java
+++ b/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java
@@ -53,4 +53,4 @@
     public ResourceIdFactory getResourceIdFactory(IHyracksTaskContext ctx) {
         return RuntimeContext.get(ctx).getResourceIdFactory();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml b/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
index bbf578c..c425c52 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml
@@ -27,19 +27,11 @@
 		<artifactId>hyracks-examples</artifactId>
 		<version>0.2.18-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.7</source>
-					<target>1.7</target>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-deploy-plugin</artifactId>
 				 <configuration>
 					<skip>true</skip>
@@ -119,12 +111,18 @@
 			<artifactId>hyracks-data-std</artifactId>
 			<version>0.2.18-SNAPSHOT</version>
 		</dependency>
-  		 <dependency>
-				<groupId>org.apache.hyracks</groupId>
-				<artifactId>hyracks-client</artifactId>
-				<version>0.2.18-SNAPSHOT</version>
-				<type>jar</type>
-				<scope>compile</scope>
-		  </dependency>
+  	    <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-client</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.e-movimento.tinytools</groupId>
+            <artifactId>privilegedaccessor</artifactId>
+            <version>1.2.2</version>
+            <scope>test</scope>
+        </dependency>
 	</dependencies>
 </project>
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
index 4aeebe7..837a8a4 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
@@ -82,9 +82,9 @@
     protected final int[] primaryBloomFilterKeyFields = new int[primaryKeyFieldCount];
 
     protected final RecordDescriptor primaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
     // to be set by subclasses
     protected String primaryFileName;
@@ -98,7 +98,7 @@
     protected final int[] secondaryBloomFilterKeyFields = new int[secondaryKeyFieldCount];
 
     protected final RecordDescriptor secondaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
     protected String secondaryFileName;
     protected IFileSplitProvider secondarySplitProvider;
@@ -160,11 +160,11 @@
                 "data/tpch0.001/orders-part1.tbl"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -217,11 +217,11 @@
         DataOutput dos = tb.getDataOutput();
 
         tb.reset();
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("0", dos);
+        new UTF8StringSerializerDeserializer().serialize("0", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
@@ -272,11 +272,11 @@
                 "data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexScanOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexScanOperatorTest.java
index c4068a7..d4fb56d 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexScanOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexScanOperatorTest.java
@@ -59,11 +59,11 @@
         DataOutput dos = tb.getDataOutput();
 
         tb.reset();
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("0", dos);
+        new UTF8StringSerializerDeserializer().serialize("0", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexSearchOperatorTest.java
index 5429135..e690423 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreePrimaryIndexSearchOperatorTest.java
@@ -61,14 +61,14 @@
 
         tb.reset();
         // low key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("100", dos);
+        new UTF8StringSerializerDeserializer().serialize("100", dos);
         tb.addFieldEndOffset();
         // high key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("200", dos);
+        new UTF8StringSerializerDeserializer().serialize("200", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexInsertOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexInsertOperatorTest.java
index 97175f2..6ebc177 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexInsertOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexInsertOperatorTest.java
@@ -64,14 +64,14 @@
 
         tb.reset();
         // low key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("1998-07-21", dos);
+        new UTF8StringSerializerDeserializer().serialize("1998-07-21", dos);
         tb.addFieldEndOffset();
         // high key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("2000-10-18", dos);
+        new UTF8StringSerializerDeserializer().serialize("2000-10-18", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexSearchOperatorTest.java
index 11c060b..2bba010 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexSearchOperatorTest.java
@@ -63,14 +63,14 @@
 
         tb.reset();
         // low key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("1998-07-21", dos);
+        new UTF8StringSerializerDeserializer().serialize("1998-07-21", dos);
         tb.addFieldEndOffset();
         // high key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("2000-10-18", dos);
+        new UTF8StringSerializerDeserializer().serialize("2000-10-18", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexUpsertOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexUpsertOperatorTest.java
index 7abd14c..031ef76 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexUpsertOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/BTreeSecondaryIndexUpsertOperatorTest.java
@@ -63,14 +63,14 @@
 
         tb.reset();
         // low key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("1998-07-21", dos);
+        new UTF8StringSerializerDeserializer().serialize("1998-07-21", dos);
         tb.addFieldEndOffset();
         // high key
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("2000-10-18", dos);
+        new UTF8StringSerializerDeserializer().serialize("2000-10-18", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexScanOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexScanOperatorTest.java
index 4308a8b..71e26ae 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexScanOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexScanOperatorTest.java
@@ -35,4 +35,4 @@
     protected IIndexDataflowHelperFactory createDataFlowHelperFactory() {
         return ((LSMBTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexSearchOperatorTest.java
index 1a45cff..ebbf35b 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreePrimaryIndexSearchOperatorTest.java
@@ -34,4 +34,4 @@
     protected IIndexDataflowHelperFactory createDataFlowHelperFactory() {
         return ((LSMBTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexInsertOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexInsertOperatorTest.java
index bcb7307..93937d4 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexInsertOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexInsertOperatorTest.java
@@ -34,4 +34,4 @@
     protected IIndexDataflowHelperFactory createDataFlowHelperFactory() {
         return ((LSMBTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexSearchOperatorTest.java
index 63ad891..90a09a2 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeSecondaryIndexSearchOperatorTest.java
@@ -34,4 +34,4 @@
     protected IIndexDataflowHelperFactory createDataFlowHelperFactory() {
         return ((LSMBTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexInsertOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexInsertOperatorTest.java
index cada578..b2a867e 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexInsertOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexInsertOperatorTest.java
@@ -47,4 +47,4 @@
         return ((LSMRTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory(secondaryValueProviderFactories,
                 rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory, btreeFields);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexSearchOperatorTest.java
index fa0e118..9bc781b 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeSecondaryIndexSearchOperatorTest.java
@@ -46,4 +46,4 @@
         return ((LSMRTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory(secondaryValueProviderFactories,
                 rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory, btreeFields);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexInsertOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexInsertOperatorTest.java
index 281ecac..b02ebc2 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexInsertOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexInsertOperatorTest.java
@@ -46,4 +46,4 @@
         return ((LSMRTreeWithAntiMatterTuplesOperatorTestHelper) testHelper).createDataFlowHelperFactory(
                 secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java
index 6aba049..701e7e0 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java
@@ -33,7 +33,7 @@
     public LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest() {
             this.rTreeType = RTreeType.LSMRTREE_WITH_ANTIMATTER;
         }
-    
+
     protected ITreeIndexOperatorTestHelper createTestHelper() throws HyracksException {
         return new LSMRTreeWithAntiMatterTuplesOperatorTestHelper(TestStorageManagerComponentHolder.getIOManager());
     }
@@ -46,4 +46,4 @@
         return ((LSMRTreeWithAntiMatterTuplesOperatorTestHelper) testHelper).createDataFlowHelperFactory(
                 secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java
index 7100920..d13cc19 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java
@@ -100,9 +100,9 @@
     protected final IBinaryComparatorFactory[] primaryComparatorFactories = new IBinaryComparatorFactory[primaryKeyFieldCount];
 
     protected final RecordDescriptor primaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
             DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
             DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE });
 
@@ -119,7 +119,7 @@
     protected final RecordDescriptor secondaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
             DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
             DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer() });
 
     // This is only used for the LSMRTree. We need a comparator Factories for
     // the BTree component of the LSMRTree.
@@ -220,11 +220,11 @@
                 "data/orders-with-locations-part1.txt"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), DoubleSerializerDeserializer.INSTANCE,
                 DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
                 DoubleSerializerDeserializer.INSTANCE });
 
@@ -283,11 +283,11 @@
         DataOutput dos = tb.getDataOutput();
 
         tb.reset();
-        UTF8StringSerializerDeserializer.INSTANCE.serialize("0", dos);
+        new UTF8StringSerializerDeserializer().serialize("0", dos);
         tb.addFieldEndOffset();
 
-        ISerializerDeserializer[] keyRecDescSers = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers);
 
         ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec,
@@ -331,11 +331,11 @@
                 "data/orders-with-locations-part2.txt"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), DoubleSerializerDeserializer.INSTANCE,
                 DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE,
                 DoubleSerializerDeserializer.INSTANCE });
 
@@ -398,4 +398,4 @@
 
     @After
     public abstract void cleanup() throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java
index a48b19d..df22fe5 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java
@@ -140,4 +140,4 @@
         destroyPrimaryIndex();
         destroySecondaryIndex();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java
index 8638c5e..379c3cb 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java
@@ -122,4 +122,4 @@
         destroyPrimaryIndex();
         destroySecondaryIndex();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java
index a7efdb9..8511443 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java
@@ -136,4 +136,4 @@
         destroyPrimaryIndex();
         destroySecondaryIndex();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java
index 70e4c81..863d8c2 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java
@@ -85,4 +85,4 @@
         destroyPrimaryIndex();
         destroySecondaryIndex();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/comm/SerializationDeserializationTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/comm/SerializationDeserializationTest.java
index 8baf9e0..041ce3d 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/comm/SerializationDeserializationTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/comm/SerializationDeserializationTest.java
@@ -26,8 +26,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.junit.Test;
-
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameReader;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -45,6 +43,7 @@
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
 import org.apache.hyracks.test.support.TestUtils;
+import org.junit.Test;
 
 public class SerializationDeserializationTest {
     private static final Logger LOGGER = Logger.getLogger(SerializationDeserializationTest.class.getName());
@@ -82,6 +81,10 @@
                 @Override
                 public void fail() throws HyracksDataException {
                 }
+
+                @Override
+                public void flush() throws HyracksDataException {
+                }
             });
         }
 
@@ -144,7 +147,7 @@
     @Test
     public void serdeser01() throws Exception {
         RecordDescriptor rDes = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
         LineProcessor processor = new LineProcessor() {
             @Override
             public void process(String line, IDataWriter<Object[]> writer) throws Exception {
@@ -156,4 +159,4 @@
         };
         run(rDes, processor);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AbstractIntegrationTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AbstractIntegrationTest.java
index 44dc231..7a339b7 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AbstractIntegrationTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AbstractIntegrationTest.java
@@ -145,7 +145,6 @@
         hcc.waitForCompletion(jobId);
     }
 
-
     protected List<String> readResults(JobSpecification spec, JobId jobId, ResultSetId resultSetId) throws Exception {
         int nReaders = 1;
 
@@ -190,6 +189,10 @@
             results = readResults(spec, jobId, spec.getResultSetIds().get(i));
             BufferedReader expectedFile = new BufferedReader(new FileReader(expectedFileNames[i]));
 
+            //We're expecting some sort of result.
+            Assert.assertTrue(results != null);
+            Assert.assertTrue(results.size() > 0);
+
             String expectedLine, actualLine;
             int j = 0;
             while ((expectedLine = expectedFile.readLine()) != null) {
@@ -197,6 +200,7 @@
                 Assert.assertEquals(expectedLine, actualLine);
                 j++;
             }
+            //We also expect the same amount of results.
             Assert.assertEquals(j, results.size());
             expectedFile.close();
         }
@@ -212,7 +216,7 @@
         List<String> results;
         for (int i = 0; i < spec.getResultSetIds().size(); i++) {
             results = readResults(spec, jobId, spec.getResultSetIds().get(i));
-            for(String str : results) {
+            for (String str : results) {
                 output.write(str);
             }
         }
@@ -229,4 +233,4 @@
         outputFiles.add(tempFile);
         return tempFile;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AggregationTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AggregationTest.java
index 2457ee9..e3093c4 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AggregationTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/AggregationTest.java
@@ -21,12 +21,11 @@
 import java.io.File;
 import java.io.IOException;
 
-import org.junit.Test;
-
 import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
 import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.dataset.ResultSetId;
@@ -34,6 +33,7 @@
 import org.apache.hyracks.api.job.JobSpecification;
 import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
 import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
+import org.apache.hyracks.data.std.accessors.UTF8StringBinaryHashFunctionFamily;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
@@ -63,28 +63,28 @@
 import org.apache.hyracks.dataflow.std.group.aggregators.MinMaxStringFieldAggregatorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
 import org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.group.hash.HashGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.result.ResultWriterOperatorDescriptor;
 import org.apache.hyracks.tests.util.ResultSerializerFactoryProvider;
+import org.junit.Test;
 
 /**
  *
  */
 public class AggregationTest extends AbstractIntegrationTest {
 
-    final IFileSplitProvider splitProvider = new ConstantFileSplitProvider(new FileSplit[] { new FileSplit(NC2_ID,
-            new FileReference(new File("data/tpch0.001/lineitem.tbl"))) });
+    final IFileSplitProvider splitProvider = new ConstantFileSplitProvider(
+            new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/lineitem.tbl"))) });
 
     final RecordDescriptor desc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
             IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
             IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
             FloatSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
     final ITupleParserFactory tupleParserFactory = new DelimitedDataTupleParserFactory(new IValueParserFactory[] {
             UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
@@ -106,50 +106,6 @@
     }
 
     @Test
-    public void singleKeySumInmemGroupTest() throws Exception {
-        JobSpecification spec = new JobSpecification();
-
-        FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(spec, splitProvider, tupleParserFactory,
-                desc);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
-
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
-
-        int[] keyFields = new int[] { 0 };
-        int tableSize = 8;
-
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }),
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new IntSumFieldAggregatorFactory(3, true),
-                        new FloatSumFieldAggregatorFactory(5, true) }), outputRec, tableSize);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
-        spec.connect(conn1, csvScanner, 0, grouper, 0);
-
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeySumInmemGroupTest");
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn2 = new OneToOneConnectorDescriptor(spec);
-        spec.connect(conn2, grouper, 0, printer, 0);
-
-        spec.addRoot(printer);
-        runTest(spec);
-    }
-
-    @Test
     public void singleKeySumPreClusterGroupTest() throws Exception {
         JobSpecification spec = new JobSpecification();
 
@@ -159,7 +115,7 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 0 };
@@ -168,14 +124,14 @@
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
                         new IntSumFieldAggregatorFactory(1, true), new IntSumFieldAggregatorFactory(3, true),
-                        new FloatSumFieldAggregatorFactory(5, true) }), outputRec);
+                        new FloatSumFieldAggregatorFactory(5, true) }),
+                outputRec);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeySumInmemGroupTest");
@@ -199,32 +155,32 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 0 };
         int frameLimits = 4;
         int tableSize = 8;
+        long fileSize = frameLimits * spec.getFrameSize();
 
-        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, keyFields, frameLimits,
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, frameLimits,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new UTF8StringNormalizedKeyComputerFactory(), new MultiFieldsAggregatorFactory(
-                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
-                                new IntSumFieldAggregatorFactory(3, false),
-                                new FloatSumFieldAggregatorFactory(5, false) }), new MultiFieldsAggregatorFactory(
-                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
-                                new IntSumFieldAggregatorFactory(2, false),
-                                new FloatSumFieldAggregatorFactory(3, false) }), outputRec,
-                new HashSpillableTableFactory(new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }), tableSize), true);
+                new UTF8StringNormalizedKeyComputerFactory(),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(3, false),
+                        new FloatSumFieldAggregatorFactory(5, false) }),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(2, false),
+                        new FloatSumFieldAggregatorFactory(3, false) }),
+                outputRec, outputRec, new HashSpillableTableFactory(
+                        new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeySumExtGroupTest");
@@ -239,50 +195,6 @@
     }
 
     @Test
-    public void singleKeyAvgInmemGroupTest() throws Exception {
-        JobSpecification spec = new JobSpecification();
-
-        FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(spec, splitProvider, tupleParserFactory,
-                desc);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
-
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
-
-        int[] keyFields = new int[] { 0 };
-        int tableSize = 8;
-
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }),
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new CountFieldAggregatorFactory(true),
-                        new AvgFieldGroupAggregatorFactory(1, true) }), outputRec, tableSize);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
-        spec.connect(conn1, csvScanner, 0, grouper, 0);
-
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgInmemGroupTest");
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn2 = new OneToOneConnectorDescriptor(spec);
-        spec.connect(conn2, grouper, 0, printer, 0);
-
-        spec.addRoot(printer);
-        runTest(spec);
-    }
-
-    @Test
     public void singleKeyAvgPreClusterGroupTest() throws Exception {
         JobSpecification spec = new JobSpecification();
 
@@ -292,23 +204,23 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 0 };
 
         PreclusteredGroupOperatorDescriptor grouper = new PreclusteredGroupOperatorDescriptor(spec, keyFields,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new CountFieldAggregatorFactory(true),
-                        new AvgFieldGroupAggregatorFactory(1, true) }), outputRec);
+                new MultiFieldsAggregatorFactory(
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, true),
+                                new CountFieldAggregatorFactory(true), new AvgFieldGroupAggregatorFactory(1, true) }),
+                outputRec);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgInmemGroupTest");
@@ -332,32 +244,32 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 0 };
         int frameLimits = 4;
         int tableSize = 8;
+        long fileSize = frameLimits * spec.getFrameSize();
 
-        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, keyFields, frameLimits,
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, frameLimits,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 new UTF8StringNormalizedKeyComputerFactory(),
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, false), new CountFieldAggregatorFactory(false),
-                        new AvgFieldGroupAggregatorFactory(1, false) }), new MultiFieldsAggregatorFactory(
+                new MultiFieldsAggregatorFactory(
                         new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
-                                new IntSumFieldAggregatorFactory(2, false),
-                                new AvgFieldMergeAggregatorFactory(3, false) }), outputRec,
-                new HashSpillableTableFactory(new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }), tableSize), true);
+                                new CountFieldAggregatorFactory(false), new AvgFieldGroupAggregatorFactory(1, false) }),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(2, false),
+                        new AvgFieldMergeAggregatorFactory(3, false) }),
+                outputRec, outputRec, new HashSpillableTableFactory(
+                        new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgExtGroupTest");
@@ -372,50 +284,6 @@
     }
 
     @Test
-    public void singleKeyMinMaxStringInmemGroupTest() throws Exception {
-        JobSpecification spec = new JobSpecification();
-
-        FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(spec, splitProvider, tupleParserFactory,
-                desc);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
-
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
-
-        int[] keyFields = new int[] { 0 };
-        int tableSize = 8;
-
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }),
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true),
-                        new MinMaxStringFieldAggregatorFactory(15, true, false) }), outputRec, tableSize);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
-        spec.connect(conn1, csvScanner, 0, grouper, 0);
-
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgInmemGroupTest");
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn2 = new OneToOneConnectorDescriptor(spec);
-        spec.connect(conn2, grouper, 0, printer, 0);
-
-        spec.addRoot(printer);
-        runTest(spec);
-    }
-
-    @Test
     public void singleKeyMinMaxStringPreClusterGroupTest() throws Exception {
         JobSpecification spec = new JobSpecification();
 
@@ -424,24 +292,24 @@
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+        RecordDescriptor outputRec = new RecordDescriptor(
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
+                        IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });
 
         int[] keyFields = new int[] { 0 };
 
         PreclusteredGroupOperatorDescriptor grouper = new PreclusteredGroupOperatorDescriptor(spec, keyFields,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true),
-                        new MinMaxStringFieldAggregatorFactory(15, true, false) }), outputRec);
+                new MultiFieldsAggregatorFactory(
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, true),
+                                new MinMaxStringFieldAggregatorFactory(15, true, false) }),
+                outputRec);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgInmemGroupTest");
@@ -464,80 +332,36 @@
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+        RecordDescriptor outputRec = new RecordDescriptor(
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
+                        IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });
 
         int[] keyFields = new int[] { 0 };
         int frameLimits = 4;
         int tableSize = 8;
+        long fileSize = frameLimits * spec.getFrameSize();
 
-        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, keyFields, frameLimits,
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, frameLimits,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new UTF8StringNormalizedKeyComputerFactory(), new MultiFieldsAggregatorFactory(
+                new UTF8StringNormalizedKeyComputerFactory(),
+                new MultiFieldsAggregatorFactory(
                         new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
                                 new MinMaxStringFieldAggregatorFactory(15, true, true) }),
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, false),
-                        new MinMaxStringFieldAggregatorFactory(2, true, true) }), outputRec,
-                new HashSpillableTableFactory(new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }), tableSize), true);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
-        spec.connect(conn1, csvScanner, 0, grouper, 0);
-
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgExtGroupTest");
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn2 = new OneToOneConnectorDescriptor(spec);
-        spec.connect(conn2, grouper, 0, printer, 0);
-
-        spec.addRoot(printer);
-        runTest(spec);
-    }
-
-    @Test
-    public void multiKeySumInmemGroupTest() throws Exception {
-        JobSpecification spec = new JobSpecification();
-
-        FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(spec, splitProvider, tupleParserFactory,
-                desc);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
-
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
-
-        int[] keyFields = new int[] { 8, 0 };
-        int tableSize = 8;
-
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }),
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new IntSumFieldAggregatorFactory(3, true) }),
-                outputRec, tableSize);
+                new MultiFieldsAggregatorFactory(
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
+                                new MinMaxStringFieldAggregatorFactory(2, true, true) }),
+                outputRec, outputRec, new HashSpillableTableFactory(
+                        new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
                 new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
                         PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeySumInmemGroupTest");
+        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "singleKeyAvgExtGroupTest");
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
 
@@ -558,7 +382,7 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 8, 0 };
@@ -573,9 +397,10 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields,
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeySumInmemGroupTest");
@@ -599,32 +424,33 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 8, 0 };
         int frameLimits = 4;
         int tableSize = 8;
+        long fileSize = frameLimits * spec.getFrameSize();
 
-        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, keyFields, frameLimits,
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, frameLimits,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
                         PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new UTF8StringNormalizedKeyComputerFactory(), new MultiFieldsAggregatorFactory(
-                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
-                                new IntSumFieldAggregatorFactory(3, false) }), new MultiFieldsAggregatorFactory(
-                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(2, false),
-                                new IntSumFieldAggregatorFactory(3, false) }), outputRec,
-                new HashSpillableTableFactory(new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] {
-                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }), tableSize), true);
+                new UTF8StringNormalizedKeyComputerFactory(),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(3, false) }),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(2, false), new IntSumFieldAggregatorFactory(3, false) }),
+                outputRec, outputRec, new HashSpillableTableFactory(new IBinaryHashFunctionFamily[] {
+                        UTF8StringBinaryHashFunctionFamily.INSTANCE, UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields,
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeySumExtGroupTest");
@@ -639,52 +465,6 @@
     }
 
     @Test
-    public void multiKeyAvgInmemGroupTest() throws Exception {
-        JobSpecification spec = new JobSpecification();
-
-        FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(spec, splitProvider, tupleParserFactory,
-                desc);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
-
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                FloatSerializerDeserializer.INSTANCE });
-
-        int[] keyFields = new int[] { 8, 0 };
-        int tableSize = 8;
-
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }),
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new CountFieldAggregatorFactory(true),
-                        new AvgFieldGroupAggregatorFactory(1, true) }), outputRec, tableSize);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
-        spec.connect(conn1, csvScanner, 0, grouper, 0);
-
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeyAvgInmemGroupTest");
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn2 = new OneToOneConnectorDescriptor(spec);
-        spec.connect(conn2, grouper, 0, printer, 0);
-
-        spec.addRoot(printer);
-        runTest(spec);
-    }
-
-    @Test
     public void multiKeyAvgPreClusterGroupTest() throws Exception {
         JobSpecification spec = new JobSpecification();
 
@@ -693,26 +473,28 @@
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                FloatSerializerDeserializer.INSTANCE });
+        RecordDescriptor outputRec = new RecordDescriptor(
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
+                        new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                        IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 8, 0 };
 
         PreclusteredGroupOperatorDescriptor grouper = new PreclusteredGroupOperatorDescriptor(spec, keyFields,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
                         PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new CountFieldAggregatorFactory(true),
-                        new AvgFieldGroupAggregatorFactory(1, true) }), outputRec);
+                new MultiFieldsAggregatorFactory(
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, true),
+                                new CountFieldAggregatorFactory(true), new AvgFieldGroupAggregatorFactory(1, true) }),
+                outputRec);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields,
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeyAvgInmemGroupTest");
@@ -735,36 +517,37 @@
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                FloatSerializerDeserializer.INSTANCE });
+        RecordDescriptor outputRec = new RecordDescriptor(
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
+                        new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                        IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 8, 0 };
         int frameLimits = 4;
         int tableSize = 8;
+        long fileSize = frameLimits * spec.getFrameSize();
 
-        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, keyFields, frameLimits,
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, frameLimits,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
                         PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 new UTF8StringNormalizedKeyComputerFactory(),
+                new MultiFieldsAggregatorFactory(
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
+                                new CountFieldAggregatorFactory(false), new AvgFieldGroupAggregatorFactory(1, false) }),
                 new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, false), new CountFieldAggregatorFactory(false),
-                        new AvgFieldGroupAggregatorFactory(1, false) }), new MultiFieldsAggregatorFactory(
-                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(2, false),
-                                new IntSumFieldAggregatorFactory(3, false),
-                                new AvgFieldMergeAggregatorFactory(4, false) }), outputRec,
-                new HashSpillableTableFactory(new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] {
-                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }), tableSize), true);
+                        new IntSumFieldAggregatorFactory(2, false), new IntSumFieldAggregatorFactory(3, false),
+                        new AvgFieldMergeAggregatorFactory(4, false) }),
+                outputRec, outputRec, new HashSpillableTableFactory(new IBinaryHashFunctionFamily[] {
+                        UTF8StringBinaryHashFunctionFamily.INSTANCE, UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields,
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeyAvgExtGroupTest");
@@ -779,51 +562,6 @@
     }
 
     @Test
-    public void multiKeyMinMaxStringInmemGroupTest() throws Exception {
-        JobSpecification spec = new JobSpecification();
-
-        FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(spec, splitProvider, tupleParserFactory,
-                desc);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
-
-        RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
-
-        int[] keyFields = new int[] { 8, 0 };
-        int tableSize = 8;
-
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }),
-                new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true),
-                        new MinMaxStringFieldAggregatorFactory(15, true, false) }), outputRec, tableSize);
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
-        spec.connect(conn1, csvScanner, 0, grouper, 0);
-
-        AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeyMinMaxStringInmemGroupTest");
-
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC2_ID, NC1_ID);
-
-        IConnectorDescriptor conn2 = new OneToOneConnectorDescriptor(spec);
-        spec.connect(conn2, grouper, 0, printer, 0);
-
-        spec.addRoot(printer);
-        runTest(spec);
-    }
-
-    @Test
     public void multiKeyMinMaxStringPreClusterGroupTest() throws Exception {
         JobSpecification spec = new JobSpecification();
 
@@ -833,24 +571,26 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });
 
         int[] keyFields = new int[] { 8, 0 };
 
         PreclusteredGroupOperatorDescriptor grouper = new PreclusteredGroupOperatorDescriptor(spec, keyFields,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
                         PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true),
-                        new MinMaxStringFieldAggregatorFactory(15, true, false) }), outputRec);
+                new MultiFieldsAggregatorFactory(
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, true),
+                                new MinMaxStringFieldAggregatorFactory(15, true, false) }),
+                outputRec);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields,
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeyMinMaxStringPreClusterGroupTest");
@@ -874,33 +614,35 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, csvScanner, NC2_ID);
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() });
 
         int[] keyFields = new int[] { 8, 0 };
         int frameLimits = 4;
         int tableSize = 8;
+        long fileSize = frameLimits * spec.getFrameSize();
 
-        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, keyFields, frameLimits,
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, frameLimits,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY),
                         PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                new UTF8StringNormalizedKeyComputerFactory(), new MultiFieldsAggregatorFactory(
+                new UTF8StringNormalizedKeyComputerFactory(),
+                new MultiFieldsAggregatorFactory(
                         new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(1, false),
                                 new MinMaxStringFieldAggregatorFactory(15, true, true) }),
-                new MultiFieldsAggregatorFactory(new int[] { 0, 1 }, new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(2, false),
-                        new MinMaxStringFieldAggregatorFactory(3, true, true) }), outputRec,
-                new HashSpillableTableFactory(new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] {
-                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }), tableSize), true);
+                new MultiFieldsAggregatorFactory(new int[] { 0, 1 },
+                        new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(2, false),
+                                new MinMaxStringFieldAggregatorFactory(3, true, true) }),
+                outputRec, outputRec, new HashSpillableTableFactory(new IBinaryHashFunctionFamily[] {
+                        UTF8StringBinaryHashFunctionFamily.INSTANCE, UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, NC2_ID, NC1_ID);
 
         IConnectorDescriptor conn1 = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(keyFields, new IBinaryHashFunctionFactory[] {
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(keyFields,
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
         AbstractSingleActivityOperatorDescriptor printer = getPrinter(spec, "multiKeyMinMaxStringExtGroupTest");
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/CountOfCountsTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/CountOfCountsTest.java
index bb8627a..da674a4 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/CountOfCountsTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/CountOfCountsTest.java
@@ -66,7 +66,7 @@
         FileSplit[] splits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File("data/words.txt"))) };
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(splits);
         RecordDescriptor desc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(
                 spec,
@@ -81,7 +81,7 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, sorter, NC1_ID);
 
         RecordDescriptor desc2 = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
         PreclusteredGroupOperatorDescriptor group = new PreclusteredGroupOperatorDescriptor(spec, new int[] { 0 },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 new MultiFieldsAggregatorFactory(
@@ -138,7 +138,7 @@
         FileSplit[] splits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File("data/words.txt"))) };
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(splits);
         RecordDescriptor desc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(
                 spec,
@@ -153,7 +153,7 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, sorter, NC1_ID, NC2_ID, NC1_ID, NC2_ID);
 
         RecordDescriptor desc2 = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
         PreclusteredGroupOperatorDescriptor group = new PreclusteredGroupOperatorDescriptor(spec, new int[] { 0 },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 new MultiFieldsAggregatorFactory(
@@ -211,7 +211,7 @@
         FileSplit[] splits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File("data/words.txt"))) };
         IFileSplitProvider splitProvider = new ConstantFileSplitProvider(splits);
         RecordDescriptor desc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(
                 spec,
@@ -226,7 +226,7 @@
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, sorter, NC1_ID, NC2_ID, NC1_ID, NC2_ID);
 
         RecordDescriptor desc2 = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
         PreclusteredGroupOperatorDescriptor group = new PreclusteredGroupOperatorDescriptor(spec, new int[] { 0 },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 new MultiFieldsAggregatorFactory(
@@ -276,4 +276,4 @@
         spec.addRoot(printer);
         runTest(spec);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/OptimizedSortMergeTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/HeapSortMergeTest.java
similarity index 90%
rename from hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/OptimizedSortMergeTest.java
rename to hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/HeapSortMergeTest.java
index 04194d8..699389b 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/OptimizedSortMergeTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/HeapSortMergeTest.java
@@ -52,7 +52,7 @@
 import org.apache.hyracks.dataflow.std.sort.TopKSorterOperatorDescriptor;
 import org.apache.hyracks.tests.util.ResultSerializerFactoryProvider;
 
-public class OptimizedSortMergeTest extends AbstractIntegrationTest {
+public class HeapSortMergeTest extends AbstractIntegrationTest {
 
     @Test
     public void optimizedSortMergeTest01() throws Exception {
@@ -63,11 +63,11 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -120,11 +120,11 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -168,4 +168,4 @@
         runTest(spec);
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java
index f8fbfc6..ad3c006 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java
@@ -22,12 +22,11 @@
 import java.io.IOException;
 import java.util.BitSet;
 
-import org.junit.Test;
-
 import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
 import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.dataset.ResultSetId;
@@ -35,10 +34,12 @@
 import org.apache.hyracks.api.job.JobSpecification;
 import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
 import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
+import org.apache.hyracks.data.std.accessors.UTF8StringBinaryHashFunctionFamily;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.normalizers.UTF8StringNormalizedKeyComputerFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.FloatParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.IntegerParserFactory;
@@ -56,31 +57,35 @@
 import org.apache.hyracks.dataflow.std.file.FileSplit;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 import org.apache.hyracks.dataflow.std.file.ITupleParserFactory;
+import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
 import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.FloatSumFieldAggregatorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.IntSumFieldAggregatorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
-import org.apache.hyracks.dataflow.std.group.hash.HashGroupOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.result.ResultWriterOperatorDescriptor;
 import org.apache.hyracks.tests.util.ResultSerializerFactoryProvider;
+import org.junit.Test;
 
 public class LocalityAwareConnectorTest extends AbstractMultiNCIntegrationTest {
 
-    final IFileSplitProvider splitProvider = new ConstantFileSplitProvider(new FileSplit[] {
-            new FileSplit("asterix-001", new FileReference(new File("data/tpch0.001/lineitem.tbl"))),
-            new FileSplit("asterix-002", new FileReference(new File("data/tpch0.001/lineitem.tbl"))),
-            new FileSplit("asterix-003", new FileReference(new File("data/tpch0.001/lineitem.tbl"))),
-            new FileSplit("asterix-004", new FileReference(new File("data/tpch0.001/lineitem.tbl"))) });
+    final IFileSplitProvider splitProvider = new ConstantFileSplitProvider(
+            new FileSplit[] { new FileSplit("asterix-001", new FileReference(new File("data/tpch0.001/lineitem.tbl"))),
+                    new FileSplit("asterix-002", new FileReference(new File("data/tpch0.001/lineitem.tbl"))),
+                    new FileSplit("asterix-003", new FileReference(new File("data/tpch0.001/lineitem.tbl"))),
+                    new FileSplit("asterix-004", new FileReference(new File("data/tpch0.001/lineitem.tbl"))) });
+
+    final int fileSize = 800 * 1024 * 4;
 
     final RecordDescriptor desc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
             IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
             IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
             FloatSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
     final ITupleParserFactory tupleParserFactory = new DelimitedDataTupleParserFactory(new IValueParserFactory[] {
             UTF8StringParserFactory.INSTANCE, IntegerParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
@@ -95,7 +100,7 @@
      * same, each of which is the aggregation of two copies of the lineitem.tbl.
      * Note that if the hashing connector is not working correctly, the two files may be different. This
      * also means that even the output files are the same, the hashing may have other problems.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -110,20 +115,24 @@
                 "asterix-003", "asterix-004");
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 0 };
         int tableSize = 8;
 
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }),
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, fileSize / spec.getFrameSize() + 1,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
+                new UTF8StringNormalizedKeyComputerFactory(),
                 new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new IntSumFieldAggregatorFactory(3, true),
-                        new FloatSumFieldAggregatorFactory(5, true) }), outputRec, tableSize);
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(3, false),
+                        new FloatSumFieldAggregatorFactory(5, false) }),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(2, false),
+                        new FloatSumFieldAggregatorFactory(3, false) }),
+                outputRec, outputRec, new HashSpillableTableFactory(
+                        new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, "asterix-005", "asterix-006");
 
@@ -136,8 +145,9 @@
 
         IConnectorDescriptor conn1 = new LocalityAwareMToNPartitioningConnectorDescriptor(spec,
                 new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }), new HashtableLocalityMap(nodemap));
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }),
+                new HashtableLocalityMap(nodemap));
 
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
@@ -155,7 +165,7 @@
     /**
      * Test for locality aware connector, using the global hashing node mapper. This should have
      * the exactly the same result as using {@link MToNPartitioningConnectorDescriptor}.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -170,27 +180,32 @@
                 "asterix-003", "asterix-004");
 
         RecordDescriptor outputRec = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE });
 
         int[] keyFields = new int[] { 0 };
         int tableSize = 8;
 
-        HashGroupOperatorDescriptor grouper = new HashGroupOperatorDescriptor(spec, keyFields,
-                new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }),
+        ExternalGroupOperatorDescriptor grouper = new ExternalGroupOperatorDescriptor(spec, tableSize, fileSize,
+                keyFields, fileSize / spec.getFrameSize() + 1,
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
+                new UTF8StringNormalizedKeyComputerFactory(),
                 new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
-                        new IntSumFieldAggregatorFactory(1, true), new IntSumFieldAggregatorFactory(3, true),
-                        new FloatSumFieldAggregatorFactory(5, true) }), outputRec, tableSize);
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(3, false),
+                        new FloatSumFieldAggregatorFactory(5, false) }),
+                new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                        new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(2, false),
+                        new FloatSumFieldAggregatorFactory(3, false) }),
+                outputRec, outputRec, new HashSpillableTableFactory(
+                        new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, grouper, "asterix-005", "asterix-006");
 
         IConnectorDescriptor conn1 = new LocalityAwareMToNPartitioningConnectorDescriptor(spec,
                 new FieldHashPartitionComputerFactory(keyFields,
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }), new GlobalHashingLocalityMap());
+                        new IBinaryHashFunctionFactory[] {
+                                PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }),
+                new GlobalHashingLocalityMap());
 
         spec.connect(conn1, csvScanner, 0, grouper, 0);
 
@@ -209,7 +224,7 @@
             throws IOException {
 
         ResultSetId rsId = new ResultSetId(1);
-        AbstractSingleActivityOperatorDescriptor printer = new ResultWriterOperatorDescriptor(spec, rsId, true,false,
+        AbstractSingleActivityOperatorDescriptor printer = new ResultWriterOperatorDescriptor(spec, rsId, true, false,
                 ResultSerializerFactoryProvider.INSTANCE.getResultSerializerFactoryProvider());
         spec.addResultSetId(rsId);
 
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/ScanPrintTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/ScanPrintTest.java
index a7612e9..08cc0b8 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/ScanPrintTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/ScanPrintTest.java
@@ -60,7 +60,7 @@
                 new FileSplit(NC1_ID, new FileReference(new File("data/words.txt"))) });
 
         RecordDescriptor desc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor csvScanner = new FileScanOperatorDescriptor(
                 spec,
@@ -91,11 +91,11 @@
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -131,10 +131,10 @@
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
@@ -160,4 +160,4 @@
         spec.addRoot(printer);
         runTest(spec);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SortMergeTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SortMergeTest.java
index 40b1687..a31bef7 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SortMergeTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SortMergeTest.java
@@ -61,11 +61,11 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -109,11 +109,11 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -149,4 +149,4 @@
 
         runTest(spec);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SplitOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SplitOperatorTest.java
index c104ec5..40b4251 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SplitOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/SplitOperatorTest.java
@@ -80,7 +80,7 @@
         DelimitedDataTupleParserFactory stringParser = new DelimitedDataTupleParserFactory(
                 new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE }, '\u0000');
         RecordDescriptor stringRec = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE, });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(), });
 
         FileScanOperatorDescriptor scanOp = new FileScanOperatorDescriptor(spec, new ConstantFileSplitProvider(
                 inputSplits), stringParser, stringRec);
@@ -113,4 +113,4 @@
         }
         runTestAndCompareResults(spec, expectedResultsFileNames);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOptimizedHybridHashJoinTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOptimizedHybridHashJoinTest.java
index 6fdc797..a4c87c8 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOptimizedHybridHashJoinTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOptimizedHybridHashJoinTest.java
@@ -19,6 +19,7 @@
 package org.apache.hyracks.tests.integration;
 
 import java.io.File;
+import java.util.Arrays;
 
 import org.junit.Test;
 
@@ -43,63 +44,73 @@
 import org.apache.hyracks.dataflow.std.file.FileScanOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.file.FileSplit;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
+import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.join.JoinComparatorFactory;
 import org.apache.hyracks.dataflow.std.join.OptimizedHybridHashJoinOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.misc.NullSinkOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.misc.PrinterOperatorDescriptor;
 
 public class TPCHCustomerOptimizedHybridHashJoinTest extends AbstractIntegrationTest {
-    private static final boolean DEBUG = false;
+
+    private static boolean DEBUG = false;
+
+    static RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
+
+    static RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer() });
+
+    static RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer() });
+
+    static IValueParserFactory[] custValueParserFactories = new IValueParserFactory[custDesc.getFieldCount()];
+    static IValueParserFactory[] orderValueParserFactories = new IValueParserFactory[ordersDesc.getFieldCount()];
+
+    static {
+        Arrays.fill(custValueParserFactories, UTF8StringParserFactory.INSTANCE);
+        Arrays.fill(orderValueParserFactories, UTF8StringParserFactory.INSTANCE);
+    }
+
+    private IOperatorDescriptor getPrinter(JobSpecification spec, File file) {
+        IFileSplitProvider outputSplitProvider = new ConstantFileSplitProvider(
+                new FileSplit[] {
+                        new FileSplit(NC1_ID, file.getAbsolutePath()) });
+
+        return DEBUG ? new PlainFileWriterOperatorDescriptor(spec, outputSplitProvider, "|")
+                : new NullSinkOperatorDescriptor(spec);
+    }
 
     @Test
     public void customerOrderCIDHybridHashJoin_Case1() throws Exception {
         JobSpecification spec = new JobSpecification();
-
         FileSplit[] custSplits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File(
                 "data/tpch0.001/customer4.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
-        RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders4.tbl"))) };
 
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
-        RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
-
-        RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
-
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE }, '|'), ordersDesc);
+                new DelimitedDataTupleParserFactory(orderValueParserFactories, '|'), ordersDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID);
 
         FileScanOperatorDescriptor custScanner = new FileScanOperatorDescriptor(spec, custSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE }, '|'), custDesc);
+                new DelimitedDataTupleParserFactory(custValueParserFactories, '|'), custDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, custScanner, NC1_ID);
 
         OptimizedHybridHashJoinOperatorDescriptor join = new OptimizedHybridHashJoinOperatorDescriptor(spec, 15, 243,
@@ -107,13 +118,14 @@
                 new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 custOrderJoinDesc, new JoinComparatorFactory(
-                        PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
-                new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0), null);
+                PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
+                new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0),
+                null);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, join, NC1_ID);
 
-        IOperatorDescriptor printer = DEBUG ? new PrinterOperatorDescriptor(spec)
-                : new NullSinkOperatorDescriptor(spec);
+        File file = File.createTempFile(getClass().getName(), "case1");
+        IOperatorDescriptor printer = getPrinter(spec, file);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC1_ID);
 
         IConnectorDescriptor custJoinConn = new OneToOneConnectorDescriptor(spec);
@@ -127,6 +139,7 @@
 
         spec.addRoot(printer);
         runTest(spec);
+        System.out.println("output to " + file.getAbsolutePath());
     }
 
     @Test
@@ -136,48 +149,18 @@
         FileSplit[] custSplits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File(
                 "data/tpch0.001/customer3.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
-        RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders4.tbl"))) };
 
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
-        RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
-
-        RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE }, '|'), ordersDesc);
+                new DelimitedDataTupleParserFactory(orderValueParserFactories, '|'), ordersDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID);
 
         FileScanOperatorDescriptor custScanner = new FileScanOperatorDescriptor(spec, custSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE }, '|'), custDesc);
+                new DelimitedDataTupleParserFactory(custValueParserFactories, '|'), custDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, custScanner, NC1_ID);
 
         OptimizedHybridHashJoinOperatorDescriptor join = new OptimizedHybridHashJoinOperatorDescriptor(spec, 15, 122,
@@ -185,13 +168,14 @@
                 new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 custOrderJoinDesc, new JoinComparatorFactory(
-                        PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
-                new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0), null);
+                PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
+                new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0),
+                null);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, join, NC1_ID);
 
-        IOperatorDescriptor printer = DEBUG ? new PrinterOperatorDescriptor(spec)
-                : new NullSinkOperatorDescriptor(spec);
+        File file = File.createTempFile(getClass().getName(), "case2");
+        IOperatorDescriptor printer = getPrinter(spec, file);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC1_ID);
 
         IConnectorDescriptor custJoinConn = new OneToOneConnectorDescriptor(spec);
@@ -205,6 +189,7 @@
 
         spec.addRoot(printer);
         runTest(spec);
+        System.out.println("output to " + file.getAbsolutePath());
     }
 
     @Test
@@ -215,48 +200,18 @@
         FileSplit[] custSplits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File(
                 "data/tpch0.001/customer3.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
-        RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders1.tbl"))) };
 
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
-        RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
-
-        RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE }, '|'), ordersDesc);
+                new DelimitedDataTupleParserFactory(orderValueParserFactories, '|'), ordersDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID);
 
         FileScanOperatorDescriptor custScanner = new FileScanOperatorDescriptor(spec, custSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE }, '|'), custDesc);
+                new DelimitedDataTupleParserFactory(custValueParserFactories, '|'), custDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, custScanner, NC1_ID);
 
         OptimizedHybridHashJoinOperatorDescriptor join = new OptimizedHybridHashJoinOperatorDescriptor(spec, 6, 122,
@@ -264,13 +219,14 @@
                 new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                 custOrderJoinDesc, new JoinComparatorFactory(
-                        PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
-                new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0), null);
+                PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
+                new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0),
+                null);
 
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, join, NC1_ID);
 
-        IOperatorDescriptor printer = DEBUG ? new PrinterOperatorDescriptor(spec)
-                : new NullSinkOperatorDescriptor(spec);
+        File file = File.createTempFile(getClass().getName(), "case3");
+        IOperatorDescriptor printer = getPrinter(spec, file);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, printer, NC1_ID);
 
         IConnectorDescriptor custJoinConn = new OneToOneConnectorDescriptor(spec);
@@ -284,6 +240,7 @@
 
         spec.addRoot(printer);
         runTest(spec);
+        System.out.println("output to " + file.getAbsolutePath());
     }
 
 }
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderHashJoinTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderHashJoinTest.java
index a9cf4ad..8232a62 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderHashJoinTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderHashJoinTest.java
@@ -78,31 +78,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -157,31 +157,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -240,31 +240,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -292,7 +292,7 @@
                 new int[] { 0 },
                 new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                custOrderJoinDesc, null);
+                custOrderJoinDesc, null, false, null);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, join, NC1_ID);
 
         ResultSetId rsId = new ResultSetId(1);
@@ -323,31 +323,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -407,31 +407,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -495,31 +495,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC2_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -584,32 +584,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -671,32 +671,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -762,32 +762,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -815,7 +815,7 @@
                 new int[] { 0 },
                 new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) },
                 new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                custOrderJoinDesc, null);
+                custOrderJoinDesc, null, false, null);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, join, NC1_ID, NC2_ID);
 
         ResultSetId rsId = new ResultSetId(1);
@@ -853,32 +853,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -940,32 +940,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -1029,4 +1029,4 @@
         spec.addRoot(printer);
         runTest(spec);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderNestedLoopJoinTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderNestedLoopJoinTest.java
index 039d936..c28e496 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderNestedLoopJoinTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/TPCHCustomerOrderNestedLoopJoinTest.java
@@ -132,31 +132,31 @@
                 "data/tpch0.001/customer.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] { new FileSplit(NC1_ID, new FileReference(new File(
                 "data/tpch0.001/orders.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -208,32 +208,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -285,32 +285,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -362,32 +362,32 @@
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/customer-part2.tbl"))) };
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(custSplits);
         RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
         FileSplit[] ordersSplits = new FileSplit[] {
                 new FileSplit(NC1_ID, new FileReference(new File("data/tpch0.001/orders-part1.tbl"))),
                 new FileSplit(NC2_ID, new FileReference(new File("data/tpch0.001/orders-part2.tbl"))) };
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(ordersSplits);
         RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
                 new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
@@ -435,4 +435,4 @@
         runTest(spec);
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/UnionTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/UnionTest.java
index 57bfad0..12e04f0 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/UnionTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/UnionTest.java
@@ -52,7 +52,7 @@
                 new FileSplit(NC1_ID, new FileReference(new File("data/words.txt"))) });
 
         RecordDescriptor desc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor csvScanner01 = new FileScanOperatorDescriptor(
                 spec,
@@ -85,4 +85,4 @@
         spec.addRoot(printer);
         runTest(spec);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/VSizeFrameSortMergeTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/VSizeFrameSortMergeTest.java
index d019f16..039497c 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/VSizeFrameSortMergeTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/VSizeFrameSortMergeTest.java
@@ -58,11 +58,11 @@
             new FileSplit(NC2_ID, new FileReference(new File(INPUTS[1]))) };
     IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits);
     RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer() });
 
     @Test
     public void sortNormalMergeTest() throws Exception {
@@ -87,7 +87,6 @@
                         UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
                         UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE }, '|'), ordersDesc);
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID, NC2_ID);
-        //                PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID );
 
         spec.setFrameSize(frameSize);
         ExternalSortOperatorDescriptor sorter = new ExternalSortOperatorDescriptor(spec, frameLimit, new int[] { 1, 0 },
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/rewriting/ErrorReportingTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/rewriting/ErrorReportingTest.java
new file mode 100644
index 0000000..6b08c3e
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/rewriting/ErrorReportingTest.java
@@ -0,0 +1,206 @@
+/*
+ * 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.hyracks.tests.rewriting;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.ActivityId;
+import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
+import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
+import org.apache.hyracks.tests.integration.AbstractIntegrationTest;
+import org.junit.Test;
+
+import junit.framework.Assert;
+
+public class ErrorReportingTest extends AbstractIntegrationTest {
+
+    static final String EXPECTED_ERROR_MESSAGE = "expected failure";
+
+    @Test
+    public void testInitialize() throws Exception {
+        JobSpecification spec = new JobSpecification();
+
+        TestSourceOperatorDescriptor ets1 = new TestSourceOperatorDescriptor(spec);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ets1, NC1_ID);
+
+        TestSourceOperatorDescriptor ets2 = new TestSourceOperatorDescriptor(spec);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ets2, NC1_ID);
+
+        TestSourceOperatorDescriptor ets3 = new TestSourceOperatorDescriptor(spec);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ets3, NC1_ID);
+
+        ExceptionRaisingOperatorDescriptor tc = new ExceptionRaisingOperatorDescriptor(spec, 3);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, tc, NC1_ID);
+
+        spec.connect(new OneToOneConnectorDescriptor(spec), ets1, 0, tc, 0);
+        spec.connect(new OneToOneConnectorDescriptor(spec), ets2, 0, tc, 1);
+        spec.connect(new OneToOneConnectorDescriptor(spec), ets3, 0, tc, 2);
+        spec.addRoot(tc);
+
+        try {
+            runTest(spec);
+        } catch (Exception e) {
+            Throwable t = getRootCause(e);
+            Assert.assertTrue(t.getMessage().equals(EXPECTED_ERROR_MESSAGE));
+        }
+    }
+
+    private Throwable getRootCause(Throwable t) {
+        Throwable cause = t.getCause();
+        if (cause == null) {
+            return t;
+        }
+        return getRootCause(cause);
+    }
+}
+
+class TestSourceOperatorDescriptor extends AbstractSingleActivityOperatorDescriptor {
+    private static final long serialVersionUID = 1L;
+
+    public TestSourceOperatorDescriptor(JobSpecification spec) {
+        super(spec, 0, 1);
+    }
+
+    @Override
+    public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
+            IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
+        return new AbstractUnaryOutputSourceOperatorNodePushable() {
+            private ByteBuffer frame = ctx.allocateFrame();
+
+            @Override
+            public void initialize() throws HyracksDataException {
+                try {
+                    writer.open();
+                    writer.nextFrame(frame);
+                } catch (Exception e) {
+                    writer.fail();
+                    throw new HyracksDataException(e);
+                } finally {
+                    writer.close();
+                }
+            }
+        };
+    }
+
+}
+
+class ExceptionRaisingOperatorDescriptor extends AbstractOperatorDescriptor {
+    private static final long serialVersionUID = 1L;
+
+    public ExceptionRaisingOperatorDescriptor(IOperatorDescriptorRegistry spec, int inputArity) {
+        super(spec, inputArity, 0);
+    }
+
+    @Override
+    public void contributeActivities(IActivityGraphBuilder builder) {
+        ExceptionRaisingActivityNode tca = new ExceptionRaisingActivityNode(new ActivityId(getOperatorId(), 0));
+        builder.addActivity(this, tca);
+        for (int i = 0; i < inputArity; ++i) {
+            builder.addSourceEdge(i, tca, i);
+        }
+    }
+
+    private class ExceptionRaisingActivityNode extends AbstractActivityNode {
+        private static final long serialVersionUID = 1L;
+
+        public ExceptionRaisingActivityNode(ActivityId id) {
+            super(id);
+        }
+
+        @Override
+        public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
+                IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
+                        throws HyracksDataException {
+            return new IOperatorNodePushable() {
+
+                @Override
+                public void initialize() throws HyracksDataException {
+
+                }
+
+                @Override
+                public void deinitialize() throws HyracksDataException {
+
+                }
+
+                @Override
+                public int getInputArity() {
+                    return inputArity;
+                }
+
+                @Override
+                public void setOutputFrameWriter(int index, IFrameWriter writer, RecordDescriptor recordDesc)
+                        throws HyracksDataException {
+                    throw new IllegalStateException();
+                }
+
+                @Override
+                public IFrameWriter getInputFrameWriter(final int index) {
+                    return new IFrameWriter() {
+                        @Override
+                        public void open() throws HyracksDataException {
+
+                        }
+
+                        @Override
+                        public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+                            if (index == inputArity - 1) {
+                                throw new HyracksDataException(ErrorReportingTest.EXPECTED_ERROR_MESSAGE);
+                            }
+                        }
+
+                        @Override
+                        public void fail() throws HyracksDataException {
+
+                        }
+
+                        @Override
+                        public void close() throws HyracksDataException {
+
+                        }
+
+                        @Override
+                        public void flush() throws HyracksDataException {
+                        }
+                    };
+                }
+
+                @Override
+                public String getDisplayName() {
+                    return "Exception-Raising-Activity";
+                }
+
+            };
+        }
+    }
+
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/rewriting/SuperActivityRewritingTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/rewriting/SuperActivityRewritingTest.java
new file mode 100644
index 0000000..bba18b3
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/rewriting/SuperActivityRewritingTest.java
@@ -0,0 +1,192 @@
+/*
+ * 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.hyracks.tests.rewriting;
+
+import java.nio.ByteBuffer;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.ActivityId;
+import org.apache.hyracks.api.dataflow.IActivityGraphBuilder;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.dataflow.std.base.AbstractActivityNode;
+import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
+import org.apache.hyracks.tests.integration.AbstractIntegrationTest;
+import org.junit.Test;
+
+public class SuperActivityRewritingTest extends AbstractIntegrationTest {
+
+    @Test
+    public void testScanUnion() throws Exception {
+        JobSpecification spec = new JobSpecification();
+
+        DummySourceOperatorDescriptor ets1 = new DummySourceOperatorDescriptor(spec);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ets1, NC1_ID);
+
+        DummySourceOperatorDescriptor ets2 = new DummySourceOperatorDescriptor(spec);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ets2, NC1_ID);
+
+        DummySourceOperatorDescriptor ets3 = new DummySourceOperatorDescriptor(spec);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ets3, NC1_ID);
+
+        ThreadCountingOperatorDescriptor tc = new ThreadCountingOperatorDescriptor(spec, 3);
+        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, tc, NC1_ID);
+
+        spec.connect(new OneToOneConnectorDescriptor(spec), ets1, 0, tc, 0);
+        spec.connect(new OneToOneConnectorDescriptor(spec), ets2, 0, tc, 1);
+        spec.connect(new OneToOneConnectorDescriptor(spec), ets3, 0, tc, 2);
+        spec.addRoot(tc);
+        runTest(spec);
+    }
+
+}
+
+class DummySourceOperatorDescriptor extends AbstractSingleActivityOperatorDescriptor {
+    private static final long serialVersionUID = 1L;
+
+    public DummySourceOperatorDescriptor(JobSpecification spec) {
+        super(spec, 0, 1);
+    }
+
+    @Override
+    public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
+            IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
+        return new AbstractUnaryOutputSourceOperatorNodePushable() {
+
+            @Override
+            public void initialize() throws HyracksDataException {
+                try {
+                    writer.open();
+                } catch (Throwable th) {
+                    writer.fail();
+                    throw new HyracksDataException(th);
+                } finally {
+                    writer.close();
+                }
+            }
+        };
+    }
+
+}
+
+class ThreadCountingOperatorDescriptor extends AbstractOperatorDescriptor {
+    private static final long serialVersionUID = 1L;
+
+    public ThreadCountingOperatorDescriptor(IOperatorDescriptorRegistry spec, int inputArity) {
+        super(spec, inputArity, 0);
+    }
+
+    @Override
+    public void contributeActivities(IActivityGraphBuilder builder) {
+        ThreadCountingActivityNode tca = new ThreadCountingActivityNode(new ActivityId(getOperatorId(), 0));
+        builder.addActivity(this, tca);
+        for (int i = 0; i < inputArity; ++i) {
+            builder.addSourceEdge(i, tca, i);
+        }
+    }
+
+    private class ThreadCountingActivityNode extends AbstractActivityNode {
+        private static final long serialVersionUID = 1L;
+
+        public ThreadCountingActivityNode(ActivityId id) {
+            super(id);
+        }
+
+        @Override
+        public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
+                IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions)
+                        throws HyracksDataException {
+            return new IOperatorNodePushable() {
+                private Set<Long> threads = new HashSet<Long>();
+
+                @Override
+                public void initialize() throws HyracksDataException {
+
+                }
+
+                @Override
+                public void deinitialize() throws HyracksDataException {
+                    if (threads.size() != inputArity) {
+                        throw new HyracksDataException("The number of worker threads is not as expected");
+                    }
+                }
+
+                @Override
+                public int getInputArity() {
+                    return inputArity;
+                }
+
+                @Override
+                public void setOutputFrameWriter(int index, IFrameWriter writer, RecordDescriptor recordDesc)
+                        throws HyracksDataException {
+                    throw new IllegalStateException();
+                }
+
+                @Override
+                public IFrameWriter getInputFrameWriter(int index) {
+                    return new IFrameWriter() {
+                        @Override
+                        public void open() throws HyracksDataException {
+                            synchronized (threads) {
+                                threads.add(Thread.currentThread().getId());
+                            }
+                        }
+
+                        @Override
+                        public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+
+                        }
+
+                        @Override
+                        public void fail() throws HyracksDataException {
+
+                        }
+
+                        @Override
+                        public void close() throws HyracksDataException {
+
+                        }
+
+                        @Override
+                        public void flush() throws HyracksDataException {
+                        }
+                    };
+                }
+
+                @Override
+                public String getDisplayName() {
+                    return "Thread-Counting-Activity";
+                }
+
+            };
+        }
+    }
+
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractExternalGroupbyTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractExternalGroupbyTest.java
new file mode 100644
index 0000000..b8ec790
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractExternalGroupbyTest.java
@@ -0,0 +1,243 @@
+/*
+ * 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.hyracks.tests.unit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.DataInputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
+import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.normalizers.UTF8StringNormalizedKeyComputerFactory;
+import org.apache.hyracks.dataflow.std.group.IAggregatorDescriptorFactory;
+import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.AvgFieldGroupAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.AvgFieldMergeAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.CountFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.IntSumFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
+import org.apache.hyracks.test.support.TestUtils;
+
+public abstract class AbstractExternalGroupbyTest {
+
+    ISerializerDeserializer[] inFields = new ISerializerDeserializer[] {
+            IntegerSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(),
+    };
+
+    ISerializerDeserializer[] aggrFields = new ISerializerDeserializer[] {
+            new UTF8StringSerializerDeserializer(),  // key
+            IntegerSerializerDeserializer.INSTANCE,     // sum
+            IntegerSerializerDeserializer.INSTANCE,     // count
+            FloatSerializerDeserializer.INSTANCE,       // avg
+    };
+
+    RecordDescriptor inRecordDesc = new RecordDescriptor(inFields);
+
+    RecordDescriptor outputRec = new RecordDescriptor(aggrFields);
+
+    IBinaryComparatorFactory[] comparatorFactories = new IBinaryComparatorFactory[] {
+            PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) };
+
+    INormalizedKeyComputerFactory normalizedKeyComputerFactory = new UTF8StringNormalizedKeyComputerFactory();
+
+    IAggregatorDescriptorFactory partialAggrInPlace = new MultiFieldsAggregatorFactory(
+            new IFieldAggregateDescriptorFactory[] {
+                    new IntSumFieldAggregatorFactory(0, false),
+                    new CountFieldAggregatorFactory(false),
+                    new AvgFieldGroupAggregatorFactory(0, false) });
+
+    IAggregatorDescriptorFactory finalAggrInPlace = new MultiFieldsAggregatorFactory(
+            new IFieldAggregateDescriptorFactory[] {
+                    new IntSumFieldAggregatorFactory(1, false),
+                    new IntSumFieldAggregatorFactory(2, false),
+                    new AvgFieldMergeAggregatorFactory(3, false) });
+
+    IAggregatorDescriptorFactory partialAggrInState = new MultiFieldsAggregatorFactory(
+            new IFieldAggregateDescriptorFactory[] {
+                    new IntSumFieldAggregatorFactory(0, true),
+                    new CountFieldAggregatorFactory(true),
+                    new AvgFieldGroupAggregatorFactory(0, true) });
+
+    IAggregatorDescriptorFactory finalAggrInState = new MultiFieldsAggregatorFactory(
+            new IFieldAggregateDescriptorFactory[] {
+                    new IntSumFieldAggregatorFactory(1, true),
+                    new IntSumFieldAggregatorFactory(2, true),
+                    new AvgFieldMergeAggregatorFactory(3, true) });
+
+    int[] keyFields = new int[] { 1 };
+    int[] keyFieldsAfterPartial = new int[] { 0 };
+
+    class ResultValidateWriter implements IFrameWriter {
+
+        final Map<Integer, String> keyValueMap;
+        FrameTupleAccessor resultAccessor = new FrameTupleAccessor(outputRec);
+
+        class Result {
+            Result(int i) {
+                sum = i;
+                count = 1;
+            }
+
+            int sum;
+            int count;
+        }
+
+        private Map<String, Result> answer;
+
+        public ResultValidateWriter(Map<Integer, String> keyValueMap) {
+            this.keyValueMap = keyValueMap;
+            answer = new HashMap<>();
+        }
+
+        @Override
+        public void open() throws HyracksDataException {
+            for (Map.Entry<Integer, String> keyValue : keyValueMap.entrySet()) {
+                Result result = answer.get(keyValue.getValue());
+                if (result == null) {
+                    answer.put(keyValue.getValue(), new Result(keyValue.getKey()));
+                } else {
+                    result.sum += keyValue.getKey();
+                    result.count++;
+                }
+            }
+        }
+
+        @Override
+        public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+            resultAccessor.reset(buffer);
+            ByteBufferInputStream bbis = new ByteBufferInputStream();
+            DataInputStream di = new DataInputStream(bbis);
+
+            Object[] outRecord = new Object[outputRec.getFieldCount()];
+
+            for (int tid = 0; tid < resultAccessor.getTupleCount(); tid++) {
+                for (int fid = 0; fid < outputRec.getFieldCount(); fid++) {
+                    bbis.setByteBuffer(resultAccessor.getBuffer(),
+                            resultAccessor.getAbsoluteFieldStartOffset(tid, fid));
+                    outRecord[fid] = outputRec.getFields()[fid].deserialize(di);
+                }
+                Result result = answer.remove((String) outRecord[0]);
+                assertNotNull(result);
+                assertEquals(result.sum, (int) outRecord[1]);
+                assertEquals(result.count, (int) outRecord[2]);
+            }
+        }
+
+        @Override
+        public void fail() throws HyracksDataException {
+            Assert.fail();
+        }
+
+        @Override
+        public void close() throws HyracksDataException {
+            assertEquals(0, answer.size());
+        }
+    }
+
+    @Test
+    public void testBuildAndMergeNormalFrameInMem() throws HyracksDataException {
+        int tableSize = 1001;
+        int numFrames = 3;
+        int frameSize = 256;
+        int minDataSize = frameSize;
+        int minRecordSize = 20;
+        int maxRecordSize = 50;
+        testBuildAndMerge(tableSize, numFrames, frameSize, minDataSize, minRecordSize, maxRecordSize, null);
+    }
+
+    @Test
+    public void testBuildAndMergeNormalFrameSpill() throws HyracksDataException {
+        int tableSize = 1001;
+        int numFrames = 3;
+        int frameSize = 256;
+        int minDataSize = frameSize * 4;
+        int minRecordSize = 20;
+        int maxRecordSize = 50;
+        testBuildAndMerge(tableSize, numFrames, frameSize, minDataSize, minRecordSize, maxRecordSize, null);
+    }
+
+    @Test
+    public void testBuildAndMergeBigObj() throws HyracksDataException {
+        int tableSize = 1001;
+        int numFrames = 4;
+        int frameSize = 256;
+        int minDataSize = frameSize * 5;
+        int minRecordSize = 20;
+        int maxRecordSize = 50;
+        HashMap<Integer, String> bigRecords = AbstractRunGeneratorTest.generateBigObject(frameSize, 2);
+        testBuildAndMerge(tableSize, numFrames, frameSize, minDataSize, minRecordSize, maxRecordSize,
+                bigRecords);
+
+    }
+
+    protected abstract void initial(IHyracksTaskContext ctx, int tableSize, int numFrames) throws HyracksDataException;
+
+    protected abstract IFrameWriter getBuilder();
+
+    protected abstract IOperatorNodePushable getMerger();
+
+    private void testBuildAndMerge(int tableSize, int numFrames, int frameSize, int minDataSize,
+            int minRecordSize, int maxRecordSize,
+            Map<Integer, String> specialData)
+            throws HyracksDataException {
+
+        IHyracksTaskContext ctx = TestUtils.create(frameSize);
+        initial(ctx, tableSize, numFrames);
+        ArrayList<IFrame> input = new ArrayList<>();
+        Map<Integer, String> keyValueMap = new HashMap<>();
+        AbstractRunGeneratorTest
+                .prepareData(ctx, input, minDataSize, minRecordSize, maxRecordSize, specialData, keyValueMap);
+
+        ResultValidateWriter writer = new ResultValidateWriter(keyValueMap);
+
+        getBuilder().open();
+        for (IFrame frame : input) {
+            getBuilder().nextFrame(frame.getBuffer());
+        }
+        getBuilder().close();
+
+        getMerger().setOutputFrameWriter(0, writer, outputRec);
+        getMerger().initialize();
+    }
+
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractRunGeneratorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractRunGeneratorTest.java
index f51e061..673c6fa 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractRunGeneratorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/AbstractRunGeneratorTest.java
@@ -28,8 +28,6 @@
 import java.util.Map;
 import java.util.Random;
 
-import org.junit.Test;
-
 import org.apache.hyracks.api.comm.FrameHelper;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
@@ -43,21 +41,21 @@
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
 import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.std.sort.AbstractSortRunGenerator;
-import org.apache.hyracks.dataflow.std.sort.RunAndMaxFrameSizePair;
 import org.apache.hyracks.dataflow.std.sort.util.GroupFrameAccessor;
 import org.apache.hyracks.dataflow.std.sort.util.GroupVSizeFrame;
 import org.apache.hyracks.test.support.TestUtils;
+import org.junit.Test;
 
 public abstract class AbstractRunGeneratorTest {
     static TestUtils testUtils = new TestUtils();
-    static ISerializerDeserializer[] SerDers = new ISerializerDeserializer[] {
-            IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
+    static ISerializerDeserializer[] SerDers = new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer() };
     static RecordDescriptor RecordDesc = new RecordDescriptor(SerDers);
     static Random GRandom = new Random(System.currentTimeMillis());
     static int[] SortFields = new int[] { 0, 1 };
@@ -65,23 +63,23 @@
             PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
             PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) };
 
-    static void assertMaxFrameSizesAreAllEqualsTo(List<RunAndMaxFrameSizePair> maxSize, int pageSize) {
+    static void assertMaxFrameSizesAreAllEqualsTo(List<GeneratedRunFileReader> maxSize, int pageSize) {
         for (int i = 0; i < maxSize.size(); i++) {
-            assertTrue(maxSize.get(i).maxFrameSize == pageSize);
+            assertTrue(maxSize.get(i).getMaxFrameSize() == pageSize);
         }
     }
 
     abstract AbstractSortRunGenerator getSortRunGenerator(IHyracksTaskContext ctx, int frameLimit, int numOfInputRecord)
             throws HyracksDataException;
 
-    protected List<RunAndMaxFrameSizePair> testSortRecords(int pageSize, int frameLimit, int numRuns, int minRecordSize,
+    protected List<GeneratedRunFileReader> testSortRecords(int pageSize, int frameLimit, int numRuns, int minRecordSize,
             int maxRecordSize, HashMap<Integer, String> specialData) throws HyracksDataException {
         IHyracksTaskContext ctx = testUtils.create(pageSize);
 
         HashMap<Integer, String> keyValuePair = new HashMap<>();
         List<IFrame> frameList = new ArrayList<>();
-        prepareData(ctx, frameList, pageSize * frameLimit * numRuns, minRecordSize, maxRecordSize,
-                specialData, keyValuePair);
+        prepareData(ctx, frameList, pageSize * frameLimit * numRuns, minRecordSize, maxRecordSize, specialData,
+                keyValuePair);
         AbstractSortRunGenerator runGenerator = getSortRunGenerator(ctx, frameLimit, keyValuePair.size());
         runGenerator.open();
         for (IFrame frame : frameList) {
@@ -92,18 +90,12 @@
         return runGenerator.getRuns();
     }
 
-    static void matchResult(IHyracksTaskContext ctx, List<RunAndMaxFrameSizePair> runs,
+    static void matchResult(IHyracksTaskContext ctx, List<GeneratedRunFileReader> runs,
             Map<Integer, String> keyValuePair) throws HyracksDataException {
-        IFrame frame = new VSizeFrame(ctx);
-        FrameTupleAccessor fta = new FrameTupleAccessor(RecordDesc);
-
-        HashMap<Integer, String> copyMap = new HashMap<>(keyValuePair);
-        assertReadSorted(runs, fta, frame, copyMap);
-
         HashMap<Integer, String> copyMap2 = new HashMap<>(keyValuePair);
         int maxFrameSizes = 0;
-        for (RunAndMaxFrameSizePair run : runs) {
-            maxFrameSizes = Math.max(maxFrameSizes, run.maxFrameSize);
+        for (GeneratedRunFileReader run : runs) {
+            maxFrameSizes = Math.max(maxFrameSizes, run.getMaxFrameSize());
         }
         GroupVSizeFrame gframe = new GroupVSizeFrame(ctx, maxFrameSizes);
         GroupFrameAccessor gfta = new GroupFrameAccessor(ctx.getInitialFrameSize(), RecordDesc);
@@ -133,25 +125,25 @@
         return preKey;
     }
 
-    static void assertReadSorted(List<RunAndMaxFrameSizePair> runs, IFrameTupleAccessor fta, IFrame frame,
+    static void assertReadSorted(List<GeneratedRunFileReader> runs, IFrameTupleAccessor fta, IFrame frame,
             Map<Integer, String> keyValuePair) throws HyracksDataException {
 
         assertTrue(runs.size() > 0);
-        for (RunAndMaxFrameSizePair run : runs) {
-            run.run.open();
+        for (GeneratedRunFileReader run : runs) {
+            run.open();
             int preKey = Integer.MIN_VALUE;
-            while (run.run.nextFrame(frame)) {
+            while (run.nextFrame(frame)) {
                 fta.reset(frame.getBuffer());
                 preKey = assertFTADataIsSorted(fta, keyValuePair, preKey);
             }
-            run.run.close();
+            run.close();
         }
         assertTrue(keyValuePair.isEmpty());
     }
 
     static void prepareData(IHyracksTaskContext ctx, List<IFrame> frameList, int minDataSize, int minRecordSize,
             int maxRecordSize, Map<Integer, String> specialData, Map<Integer, String> keyValuePair)
-            throws HyracksDataException {
+                    throws HyracksDataException {
 
         ArrayTupleBuilder tb = new ArrayTupleBuilder(RecordDesc.getFieldCount());
         FrameTupleAppender appender = new FrameTupleAppender();
@@ -161,10 +153,10 @@
             for (Map.Entry<Integer, String> entry : specialData.entrySet()) {
                 tb.reset();
                 tb.addField(IntegerSerializerDeserializer.INSTANCE, entry.getKey());
-                tb.addField(UTF8StringSerializerDeserializer.INSTANCE, entry.getValue());
+                tb.addField(new UTF8StringSerializerDeserializer(), entry.getValue());
 
-                VSizeFrame frame = new VSizeFrame(ctx, FrameHelper
-                        .calcAlignedFrameSizeToStore(tb.getFieldEndOffsets().length, tb.getSize(), ctx.getInitialFrameSize()));
+                VSizeFrame frame = new VSizeFrame(ctx, FrameHelper.calcAlignedFrameSizeToStore(
+                        tb.getFieldEndOffsets().length, tb.getSize(), ctx.getInitialFrameSize()));
                 appender.reset(frame, true);
                 assertTrue(appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize()));
                 frameList.add(frame);
@@ -181,14 +173,13 @@
             if (!keyValuePair.containsKey(key)) {
                 String value = generateRandomRecord(minRecordSize, maxRecordSize);
                 tb.addField(IntegerSerializerDeserializer.INSTANCE, key);
-                tb.addField(UTF8StringSerializerDeserializer.INSTANCE, value);
+                tb.addField(new UTF8StringSerializerDeserializer(), value);
 
                 if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
                     frameList.add(frame);
                     datasize += frame.getFrameSize();
-                    frame = new VSizeFrame(ctx, FrameHelper
-                            .calcAlignedFrameSizeToStore(tb.getFieldEndOffsets().length, tb.getSize(),
-                                    ctx.getInitialFrameSize()));
+                    frame = new VSizeFrame(ctx, FrameHelper.calcAlignedFrameSizeToStore(tb.getFieldEndOffsets().length,
+                            tb.getSize(), ctx.getInitialFrameSize()));
                     appender.reset(frame, true);
                     assertTrue(appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize()));
                 }
@@ -202,8 +193,7 @@
 
     }
 
-    static String generateRandomRecord(int minRecordSize, int maxRecordSize)
-            throws HyracksDataException {
+    static String generateRandomRecord(int minRecordSize, int maxRecordSize) throws HyracksDataException {
         int size = GRandom.nextInt(maxRecordSize - minRecordSize + 1) + minRecordSize;
         return generateRandomFixSizedString(size);
 
@@ -233,7 +223,7 @@
         int numRuns = 2;
         int minRecordSize = pageSize / 8;
         int maxRecordSize = pageSize / 8;
-        List<RunAndMaxFrameSizePair> maxSize = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize,
+        List<GeneratedRunFileReader> maxSize = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize,
                 maxRecordSize, null);
         assertMaxFrameSizesAreAllEqualsTo(maxSize, pageSize);
     }
@@ -245,7 +235,7 @@
         int numRuns = 2;
         int minRecordSize = pageSize;
         int maxRecordSize = (int) (pageSize * 1.8);
-        List<RunAndMaxFrameSizePair> size = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize, maxRecordSize,
+        List<GeneratedRunFileReader> size = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize, maxRecordSize,
                 null);
         assertMaxFrameSizesAreAllEqualsTo(size, pageSize * 2);
     }
@@ -258,12 +248,12 @@
         int minRecordSize = 20;
         int maxRecordSize = pageSize / 2;
         HashMap<Integer, String> specialPair = generateBigObject(pageSize, frameLimit - 1);
-        List<RunAndMaxFrameSizePair> size = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize, maxRecordSize,
+        List<GeneratedRunFileReader> size = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize, maxRecordSize,
                 specialPair);
 
         int max = 0;
-        for (RunAndMaxFrameSizePair run : size) {
-            max = Math.max(max, run.maxFrameSize);
+        for (GeneratedRunFileReader run : size) {
+            max = Math.max(max, run.getMaxFrameSize());
         }
         assertTrue(max == pageSize * (frameLimit - 1));
     }
@@ -276,7 +266,7 @@
         HashMap<Integer, String> specialPair = generateBigObject(pageSize, frameLimit);
         int minRecordSize = 10;
         int maxRecordSize = pageSize / 2;
-        List<RunAndMaxFrameSizePair> size = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize, maxRecordSize,
+        List<GeneratedRunFileReader> size = testSortRecords(pageSize, frameLimit, numRuns, minRecordSize, maxRecordSize,
                 specialPair);
 
     }
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/ExternalHashGroupbyTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/ExternalHashGroupbyTest.java
new file mode 100644
index 0000000..f1a4231
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/ExternalHashGroupbyTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.hyracks.tests.unit;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
+import org.apache.hyracks.data.std.accessors.UTF8StringBinaryHashFunctionFamily;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
+import org.apache.hyracks.dataflow.std.group.ISpillableTableFactory;
+import org.apache.hyracks.dataflow.std.group.external.ExternalGroupBuildOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.group.external.ExternalGroupWriteOperatorNodePushable;
+
+public class ExternalHashGroupbyTest extends AbstractExternalGroupbyTest {
+    ExternalGroupBuildOperatorNodePushable buildOperator;
+    ExternalGroupWriteOperatorNodePushable mergeOperator;
+
+    @Override
+    protected void initial(IHyracksTaskContext ctx, int tableSize, int numFrames) {
+        ISpillableTableFactory tableFactory = new HashSpillableTableFactory(
+                new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE });
+        buildOperator = new ExternalGroupBuildOperatorNodePushable(ctx, this.hashCode(), tableSize,
+                numFrames * ctx.getInitialFrameSize(), keyFields, numFrames, comparatorFactories,
+                normalizedKeyComputerFactory, partialAggrInPlace, inRecordDesc, outputRec, tableFactory);
+        mergeOperator = new ExternalGroupWriteOperatorNodePushable(ctx, this.hashCode(), tableFactory, outputRec,
+                outputRec, numFrames, keyFieldsAfterPartial, normalizedKeyComputerFactory, comparatorFactories,
+                finalAggrInPlace);
+    }
+
+    @Override
+    protected IFrameWriter getBuilder() {
+        return buildOperator;
+    }
+
+    @Override
+    protected AbstractUnaryOutputSourceOperatorNodePushable getMerger() {
+        return mergeOperator;
+    }
+
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/IntersectOperatorDescriptorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/IntersectOperatorDescriptorTest.java
new file mode 100644
index 0000000..0c49588
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/IntersectOperatorDescriptorTest.java
@@ -0,0 +1,222 @@
+/*
+ * 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.hyracks.tests.unit;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.OperatorDescriptorId;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputerFactory;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.exceptions.HyracksException;
+import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
+import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+import org.apache.hyracks.dataflow.std.intersect.IntersectOperatorDescriptor;
+import org.apache.hyracks.tests.util.InputFrameGenerator;
+import org.apache.hyracks.tests.util.MultiThreadTaskEmulator;
+import org.apache.hyracks.tests.util.OutputFrameVerifier;
+import org.apache.hyracks.test.support.TestUtils;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IntersectOperatorDescriptorTest {
+
+    IOperatorDescriptorRegistry mockRegistry = when(
+            mock(IOperatorDescriptorRegistry.class).createOperatorDescriptorId(any()))
+            .thenReturn(new OperatorDescriptorId(1)).getMock();
+    MultiThreadTaskEmulator multiThreadTaskEmulator = new MultiThreadTaskEmulator();
+    InputFrameGenerator frameGenerator = new InputFrameGenerator(256);
+    IHyracksTaskContext ctx = TestUtils.create(256);
+
+    int nInputs;
+    int nProjectFields;
+    int[][] compareFields;
+    RecordDescriptor[] inputRecordDescriptor;
+    INormalizedKeyComputerFactory normalizedKeyFactory;
+    IBinaryComparatorFactory[] comparatorFactory;
+    RecordDescriptor outRecordDescriptor;
+
+    protected void initializeParameters() {
+        compareFields = new int[nInputs][];
+
+        inputRecordDescriptor = new RecordDescriptor[nInputs];
+
+        normalizedKeyFactory = null;
+        comparatorFactory = new IBinaryComparatorFactory[] {
+                PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
+                PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY)
+        };
+
+        for (int i = 0; i < nInputs; i++) {
+            compareFields[i] = new int[nProjectFields];
+            for (int f = 0; f < nProjectFields; f++) {
+                compareFields[i][f] = f;
+            }
+        }
+        for (int i = 0; i < nInputs; i++) {
+            inputRecordDescriptor[i] = new RecordDescriptor(new ISerializerDeserializer[] {
+                    IntegerSerializerDeserializer.INSTANCE,
+                    IntegerSerializerDeserializer.INSTANCE,
+                    IntegerSerializerDeserializer.INSTANCE
+            });
+        }
+
+        outRecordDescriptor = new RecordDescriptor(new ISerializerDeserializer[] {
+                IntegerSerializerDeserializer.INSTANCE,
+                IntegerSerializerDeserializer.INSTANCE
+        });
+    }
+
+    @Before
+    public void setUpInput() {
+        nInputs = 3;
+        nProjectFields = 2;
+        initializeParameters();
+    }
+
+    @Test
+    public void testNormalOperatorInitialization() throws HyracksException {
+
+        IntersectOperatorDescriptor operatorDescriptor = new IntersectOperatorDescriptor(mockRegistry, nInputs,
+                compareFields, normalizedKeyFactory, comparatorFactory, outRecordDescriptor);
+
+        assertEquals(nInputs, operatorDescriptor.getInputArity());
+    }
+
+    @Test
+    public void testCommonIntersect() throws Exception {
+        List<Object[]> answer = new ArrayList<>();
+        List<IFrame>[] inputFrames = new ArrayList[nInputs];
+        prepareCommonDataFrame(inputFrames, answer);
+        executeAndVerifyResult(inputFrames, answer);
+    }
+
+    @Test
+    public void testNullOutputIntersect() throws Exception {
+        List<Object[]> answer = new ArrayList<>();
+        List<IFrame>[] inputFrames = new ArrayList[nInputs];
+        prepareNullResultDataFrame(inputFrames, answer);
+        executeAndVerifyResult(inputFrames, answer);
+    }
+
+    @Test
+    public void testOneInputIsVeryShortIntersect() throws Exception {
+        List<Object[]> answer = new ArrayList<>();
+        List<IFrame>[] inputFrames = new ArrayList[nInputs];
+        prepareOneInputIsVeryShortDataFrame(inputFrames, answer);
+        executeAndVerifyResult(inputFrames, answer);
+    }
+
+    @Test
+    public void testAllSameInputIntersect() throws Exception {
+        List<Object[]> answer = new ArrayList<>();
+        List<IFrame>[] inputFrames = new ArrayList[nInputs];
+        prepareAllSameInputDataFrame(inputFrames, answer);
+        executeAndVerifyResult(inputFrames, answer);
+    }
+
+    @Test
+    public void testOnlyOneInputIntersect() throws Exception {
+        nInputs = 1;
+        initializeParameters();
+        List<Object[]> answer = new ArrayList<>();
+        List<IFrame>[] inputFrames = new ArrayList[nInputs];
+        prepareAllSameInputDataFrame(inputFrames, answer);
+        executeAndVerifyResult(inputFrames, answer);
+    }
+
+    private void executeAndVerifyResult(List<IFrame>[] inputFrames, List<Object[]> answer) throws Exception {
+        IntersectOperatorDescriptor.IntersectOperatorNodePushable pushable =
+                new IntersectOperatorDescriptor.IntersectOperatorNodePushable(ctx, nInputs, inputRecordDescriptor,
+                        compareFields, null, comparatorFactory);
+        assertEquals(nInputs, pushable.getInputArity());
+
+        IFrameWriter[] writers = new IFrameWriter[nInputs];
+        for (int i = 0; i < nInputs; i++) {
+            writers[i] = pushable.getInputFrameWriter(i);
+        }
+        IFrameWriter resultVerifier = new OutputFrameVerifier(outRecordDescriptor, answer);
+        pushable.setOutputFrameWriter(0, resultVerifier, outRecordDescriptor);
+        multiThreadTaskEmulator.runInParallel(writers, inputFrames);
+    }
+
+    protected void prepareCommonDataFrame(List<IFrame>[] inputFrames, List<Object[]> answer)
+            throws HyracksDataException {
+        for (int i = 0; i < nInputs; i++) {
+            List<Object[]> inputObjects = new ArrayList<>();
+            generateRecordStream(inputObjects, inputRecordDescriptor[i], i + 1, (i + 1) * 100, 1);
+            inputFrames[i] = frameGenerator.generateDataFrame(inputRecordDescriptor[i], inputObjects);
+        }
+        generateRecordStream(answer, outRecordDescriptor, nInputs, 100, 1);
+    }
+
+    protected void prepareNullResultDataFrame(List<IFrame>[] inputFrames, List<Object[]> answer)
+            throws HyracksDataException {
+        for (int i = 0; i < nInputs; i++) {
+            List<Object[]> inputObjects = new ArrayList<>();
+            generateRecordStream(inputObjects, inputRecordDescriptor[i], (i + 1) * 100, (i + 2) * 100, 1);
+            inputFrames[i] = frameGenerator.generateDataFrame(inputRecordDescriptor[i], inputObjects);
+        }
+    }
+
+    protected void prepareOneInputIsVeryShortDataFrame(List<IFrame>[] inputFrames, List<Object[]> answer)
+            throws HyracksDataException {
+        for (int i = 0; i < nInputs; i++) {
+            List<Object[]> inputObjects = new ArrayList<>();
+            generateRecordStream(inputObjects, inputRecordDescriptor[i], i, i * 100 + 1, 1);
+            inputFrames[i] = frameGenerator.generateDataFrame(inputRecordDescriptor[i], inputObjects);
+        }
+    }
+
+    protected void prepareAllSameInputDataFrame(List<IFrame>[] inputFrames, List<Object[]> answer)
+            throws HyracksDataException {
+        for (int i = 0; i < nInputs; i++) {
+            List<Object[]> inputObjects = new ArrayList<>();
+            generateRecordStream(inputObjects, inputRecordDescriptor[i], 0, 100, 1);
+            inputFrames[i] = frameGenerator.generateDataFrame(inputRecordDescriptor[i], inputObjects);
+        }
+        generateRecordStream(answer, outRecordDescriptor, 0, 100, 1);
+    }
+
+    private void generateRecordStream(List<Object[]> inputs, RecordDescriptor recordDesc,
+            int start, int end, int step) {
+        for (int i = start; i < end; i += step) {
+            Object[] obj = new Object[recordDesc.getFieldCount()];
+            for (int f = 0; f < recordDesc.getFieldCount(); f++) {
+                obj[f] = i;
+            }
+            inputs.add(obj);
+        }
+    }
+
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/RunMergingFrameReaderTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/RunMergingFrameReaderTest.java
index cb85755..567b7df 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/RunMergingFrameReaderTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/RunMergingFrameReaderTest.java
@@ -19,14 +19,14 @@
 
 package org.apache.hyracks.tests.unit;
 
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.ComparatorFactories;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.GRandom;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.RecordDesc;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.SortFields;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.generateRandomRecord;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.matchResult;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.prepareData;
-import static org.apache.hyracks.tests.unit.ExternalSortRunGeneratorTest.testUtils;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.ComparatorFactories;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.GRandom;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.RecordDesc;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.SortFields;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.generateRandomRecord;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.matchResult;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.prepareData;
+import static org.apache.hyracks.tests.unit.AbstractRunGeneratorTest.testUtils;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
@@ -40,7 +40,7 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.junit.Test;
+import junit.extensions.PA;
 
 import org.apache.hyracks.api.comm.FrameHelper;
 import org.apache.hyracks.api.comm.IFrame;
@@ -55,17 +55,16 @@
 import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
 import org.apache.hyracks.dataflow.std.sort.Algorithm;
 import org.apache.hyracks.dataflow.std.sort.ExternalSortRunGenerator;
-import org.apache.hyracks.dataflow.std.sort.RunAndMaxFrameSizePair;
 import org.apache.hyracks.dataflow.std.sort.RunMergingFrameReader;
 import org.apache.hyracks.dataflow.std.sort.util.GroupVSizeFrame;
+import org.junit.Test;
 
 public class RunMergingFrameReaderTest {
-    static IBinaryComparator[] Comparators = new IBinaryComparator[] {
-            ComparatorFactories[0].createBinaryComparator(),
-            ComparatorFactories[1].createBinaryComparator(),
-    };
+    static IBinaryComparator[] Comparators = new IBinaryComparator[] { ComparatorFactories[0].createBinaryComparator(),
+            ComparatorFactories[1].createBinaryComparator(), };
 
     static class TestFrameReader implements IFrameReader {
 
@@ -109,7 +108,7 @@
             while (true) {
                 tb.reset();
                 tb.addField(IntegerSerializerDeserializer.INSTANCE, lastEntry.getKey());
-                tb.addField(UTF8StringSerializerDeserializer.INSTANCE, lastEntry.getValue());
+                tb.addField(new UTF8StringSerializerDeserializer(), lastEntry.getValue());
                 if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
                     break;
                 } else {
@@ -148,7 +147,7 @@
             for (Map.Entry<Integer, String> entry : specialData.entrySet()) {
                 tb.reset();
                 tb.addField(IntegerSerializerDeserializer.INSTANCE, entry.getKey());
-                tb.addField(UTF8StringSerializerDeserializer.INSTANCE, entry.getValue());
+                tb.addField(new UTF8StringSerializerDeserializer(), entry.getValue());
                 int size = tb.getSize() + tb.getFieldEndOffsets().length * 4;
                 datasize += size;
                 if (size > maxtuple) {
@@ -164,7 +163,7 @@
             int key = GRandom.nextInt(datasize + 1);
             if (!result.containsKey(key)) {
                 tb.addField(IntegerSerializerDeserializer.INSTANCE, key);
-                tb.addField(UTF8StringSerializerDeserializer.INSTANCE, value);
+                tb.addField(new UTF8StringSerializerDeserializer(), value);
                 int size = tb.getSize() + tb.getFieldEndOffsets().length * 4;
                 datasize += size;
                 if (size > maxtuple) {
@@ -191,8 +190,8 @@
         List<Map<Integer, String>> keyValueMapList = new ArrayList<>(numRuns);
         List<TestFrameReader> readerList = new ArrayList<>(numRuns);
         List<IFrame> frameList = new ArrayList<>(numRuns);
-        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun,
-                minRecordSize, maxRecordSize, readerList, frameList, keyValueMapList);
+        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun, minRecordSize, maxRecordSize, readerList,
+                frameList, keyValueMapList);
 
         RunMergingFrameReader reader = new RunMergingFrameReader(ctx, readerList, frameList, SortFields, Comparators,
                 null, RecordDesc);
@@ -212,8 +211,8 @@
         List<Map<Integer, String>> keyValueMapList = new ArrayList<>(numRuns);
         List<TestFrameReader> readerList = new ArrayList<>(numRuns);
         List<IFrame> frameList = new ArrayList<>(numRuns);
-        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun,
-                minRecordSize, maxRecordSize, readerList, frameList, keyValueMapList);
+        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun, minRecordSize, maxRecordSize, readerList,
+                frameList, keyValueMapList);
 
         RunMergingFrameReader reader = new RunMergingFrameReader(ctx, readerList, frameList, SortFields, Comparators,
                 null, RecordDesc);
@@ -234,12 +233,11 @@
             List<Map<Integer, String>> keyValueMapList = new ArrayList<>(numRuns);
             List<TestFrameReader> readerList = new ArrayList<>(numRuns);
             List<IFrame> frameList = new ArrayList<>(numRuns);
-            prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun,
-                    minRecordSize, maxRecordSize, readerList, frameList, keyValueMapList);
+            prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun, minRecordSize, maxRecordSize, readerList,
+                    frameList, keyValueMapList);
 
             RunMergingFrameReader reader = new RunMergingFrameReader(ctx, readerList, frameList, SortFields,
-                    Comparators,
-                    null, RecordDesc, topK);
+                    Comparators, null, RecordDesc, topK);
             int totoalCount = testMergeSucceedInner(ctx, reader, keyValueMapList);
             int newCount = 0;
             for (Map<Integer, String> x : keyValueMapList) {
@@ -285,25 +283,23 @@
         List<Map<Integer, String>> keyValueMap = new ArrayList<>();
         List<TestFrameReader> readerList = new ArrayList<>();
         List<IFrame> frameList = new ArrayList<>();
-        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun,
-                minRecordSize, maxRecordSize, readerList, frameList, keyValueMap);
+        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun, minRecordSize, maxRecordSize, readerList,
+                frameList, keyValueMap);
 
         minRecordSize = pageSize;
         maxRecordSize = pageSize;
         numFramesPerRun = 4;
-        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun,
-                minRecordSize, maxRecordSize, readerList, frameList, keyValueMap);
+        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun, minRecordSize, maxRecordSize, readerList,
+                frameList, keyValueMap);
 
         minRecordSize = pageSize * 2;
         maxRecordSize = pageSize * 2;
         numFramesPerRun = 6;
-        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun,
-                minRecordSize, maxRecordSize, readerList, frameList, keyValueMap);
+        prepareRandomInputRunList(ctx, pageSize, numRuns, numFramesPerRun, minRecordSize, maxRecordSize, readerList,
+                frameList, keyValueMap);
 
-        RunMergingFrameReader reader = new RunMergingFrameReader(ctx, readerList, frameList, SortFields,
-                Comparators,
-                null,
-                RecordDesc);
+        RunMergingFrameReader reader = new RunMergingFrameReader(ctx, readerList, frameList, SortFields, Comparators,
+                null, RecordDesc);
         testMergeSucceed(ctx, reader, keyValueMap);
     }
 
@@ -316,15 +312,14 @@
         int maxRecordSize = pageSize / 2;
 
         IHyracksTaskContext ctx = testUtils.create(pageSize);
-        ExternalSortRunGenerator runGenerator = new ExternalSortRunGenerator(ctx, SortFields,
-                null, ComparatorFactories, RecordDesc, Algorithm.MERGE_SORT,
-                numFramesPerRun);
+        ExternalSortRunGenerator runGenerator = new ExternalSortRunGenerator(ctx, SortFields, null, ComparatorFactories,
+                RecordDesc, Algorithm.MERGE_SORT, numFramesPerRun);
 
         runGenerator.open();
         Map<Integer, String> keyValuePair = new HashMap<>();
         List<IFrame> frameList = new ArrayList<>();
-        prepareData(ctx, frameList, pageSize * numFramesPerRun * numRuns, minRecordSize, maxRecordSize,
-                null, keyValuePair);
+        prepareData(ctx, frameList, pageSize * numFramesPerRun * numRuns, minRecordSize, maxRecordSize, null,
+                keyValuePair);
         for (IFrame frame : frameList) {
             runGenerator.nextFrame(frame.getBuffer());
         }
@@ -333,21 +328,26 @@
         minRecordSize = pageSize;
         maxRecordSize = pageSize;
         frameList.clear();
-        prepareData(ctx, frameList, pageSize * numFramesPerRun * numRuns, minRecordSize, maxRecordSize,
-                null, keyValuePair);
+        prepareData(ctx, frameList, pageSize * numFramesPerRun * numRuns, minRecordSize, maxRecordSize, null,
+                keyValuePair);
         for (IFrame frame : frameList) {
             runGenerator.nextFrame(frame.getBuffer());
         }
-
         runGenerator.close();
         List<IFrame> inFrame = new ArrayList<>(runGenerator.getRuns().size());
-        for (RunAndMaxFrameSizePair max : runGenerator.getRuns()) {
-            inFrame.add(new GroupVSizeFrame(ctx, max.maxFrameSize));
+        for (GeneratedRunFileReader max : runGenerator.getRuns()) {
+            inFrame.add(new GroupVSizeFrame(ctx, max.getMaxFrameSize()));
+        }
+
+        // Let each run file reader not delete the run file when it is read and closed.
+        for (GeneratedRunFileReader run : runGenerator.getRuns()) {
+            PA.setValue(run, "deleteAfterClose", false);
         }
         matchResult(ctx, runGenerator.getRuns(), keyValuePair);
+
         List<IFrameReader> runs = new ArrayList<>();
-        for (RunAndMaxFrameSizePair run : runGenerator.getRuns()) {
-            runs.add(run.run);
+        for (GeneratedRunFileReader run : runGenerator.getRuns()) {
+            runs.add(run);
         }
         RunMergingFrameReader reader = new RunMergingFrameReader(ctx, runs, inFrame, SortFields, Comparators, null,
                 RecordDesc);
@@ -399,10 +399,9 @@
         }
     }
 
-    static void prepareRandomInputRunList(IHyracksTaskContext ctx, int pageSize, int numRuns,
-            int numFramesPerRun, int minRecordSize, int maxRecordSize,
-            List<TestFrameReader> readerList, List<IFrame> frameList, List<Map<Integer, String>> keyValueMap)
-            throws HyracksDataException {
+    static void prepareRandomInputRunList(IHyracksTaskContext ctx, int pageSize, int numRuns, int numFramesPerRun,
+            int minRecordSize, int maxRecordSize, List<TestFrameReader> readerList, List<IFrame> frameList,
+            List<Map<Integer, String>> keyValueMap) throws HyracksDataException {
         for (int i = 0; i < numRuns; i++) {
             readerList.add(new TestFrameReader(pageSize, numFramesPerRun, minRecordSize, maxRecordSize));
             frameList.add(new VSizeFrame(ctx, readerList.get(readerList.size() - 1).maxFrameSize));
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/SortGroupbyTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/SortGroupbyTest.java
new file mode 100644
index 0000000..bcf661f
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/SortGroupbyTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.hyracks.tests.unit;
+
+import java.util.List;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.INormalizedKeyComputer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.io.GeneratedRunFileReader;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputSourceOperatorNodePushable;
+import org.apache.hyracks.dataflow.std.group.sort.ExternalSortGroupByRunGenerator;
+import org.apache.hyracks.dataflow.std.group.sort.ExternalSortGroupByRunMerger;
+import org.apache.hyracks.dataflow.std.sort.AbstractExternalSortRunMerger;
+import org.apache.hyracks.dataflow.std.sort.Algorithm;
+import org.apache.hyracks.dataflow.std.sort.ISorter;
+
+public class SortGroupbyTest extends AbstractExternalGroupbyTest {
+    ExternalSortGroupByRunGenerator builder;
+
+    IOperatorNodePushable mergerOperator;
+
+    @Override
+    protected void initial(final IHyracksTaskContext ctx, int tableSize, final int numFrames)
+            throws HyracksDataException {
+        builder = new ExternalSortGroupByRunGenerator(ctx, keyFields, inRecordDesc, numFrames, keyFields,
+                normalizedKeyComputerFactory, comparatorFactories, partialAggrInState, outputRec, Algorithm.QUICK_SORT);
+
+        mergerOperator = new AbstractUnaryOutputSourceOperatorNodePushable() {
+            @Override
+            public void initialize() throws HyracksDataException {
+                List<GeneratedRunFileReader> runs = builder.getRuns();
+                ISorter sorter = builder.getSorter();
+                IBinaryComparator[] comparators = new IBinaryComparator[comparatorFactories.length];
+                for (int i = 0; i < comparatorFactories.length; ++i) {
+                    comparators[i] = comparatorFactories[i].createBinaryComparator();
+                }
+                INormalizedKeyComputer nmkComputer = normalizedKeyComputerFactory == null ? null
+                        : normalizedKeyComputerFactory.createNormalizedKeyComputer();
+                AbstractExternalSortRunMerger merger = new ExternalSortGroupByRunMerger(ctx, sorter, runs, keyFields,
+                        inRecordDesc, outputRec, outputRec, numFrames, writer, keyFields, nmkComputer, comparators,
+                        partialAggrInState, finalAggrInState, true);
+                merger.process();
+            }
+        };
+    }
+
+    @Override
+    protected IFrameWriter getBuilder() {
+        return builder;
+    }
+
+    @Override
+    protected IOperatorNodePushable getMerger() {
+        return mergerOperator;
+    }
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/TopKRunGeneratorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/TopKRunGeneratorTest.java
index 43e7649..f621bf9 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/TopKRunGeneratorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/unit/TopKRunGeneratorTest.java
@@ -34,8 +34,6 @@
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.junit.Test;
-
 import org.apache.hyracks.api.comm.FixedSizeFrame;
 import org.apache.hyracks.api.comm.IFrame;
 import org.apache.hyracks.api.comm.IFrameWriter;
@@ -45,8 +43,9 @@
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
 import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
 import org.apache.hyracks.dataflow.std.sort.AbstractSortRunGenerator;
-import org.apache.hyracks.dataflow.std.sort.HybridTopKSortRunGenerator;
 import org.apache.hyracks.dataflow.std.sort.HeapSortRunGenerator;
+import org.apache.hyracks.dataflow.std.sort.HybridTopKSortRunGenerator;
+import org.junit.Test;
 
 public class TopKRunGeneratorTest {
 
@@ -90,14 +89,18 @@
         public void close() throws HyracksDataException {
             assertTrue(answer.isEmpty());
         }
+
+        @Override
+        public void flush() throws HyracksDataException {
+        }
     }
 
     @Test
     public void testReverseOrderedDataShouldNotGenerateAnyRuns() throws HyracksDataException {
         int topK = 1;
         IHyracksTaskContext ctx = AbstractRunGeneratorTest.testUtils.create(PAGE_SIZE);
-        HeapSortRunGenerator sorter = new HeapSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK,
-                SortFields, null, ComparatorFactories, RecordDesc);
+        HeapSortRunGenerator sorter = new HeapSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK, SortFields, null,
+                ComparatorFactories, RecordDesc);
 
         testInMemoryOnly(ctx, topK, ORDER.REVERSE, sorter);
     }
@@ -106,8 +109,8 @@
     public void testAlreadySortedDataShouldNotGenerateAnyRuns() throws HyracksDataException {
         int topK = SORT_FRAME_LIMIT;
         IHyracksTaskContext ctx = AbstractRunGeneratorTest.testUtils.create(PAGE_SIZE);
-        HeapSortRunGenerator sorter = new HeapSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK,
-                SortFields, null, ComparatorFactories, RecordDesc);
+        HeapSortRunGenerator sorter = new HeapSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK, SortFields, null,
+                ComparatorFactories, RecordDesc);
 
         testInMemoryOnly(ctx, topK, ORDER.INORDER, sorter);
     }
@@ -116,8 +119,8 @@
     public void testHybridTopKShouldNotGenerateAnyRuns() throws HyracksDataException {
         int topK = 1;
         IHyracksTaskContext ctx = AbstractRunGeneratorTest.testUtils.create(PAGE_SIZE);
-        AbstractSortRunGenerator sorter = new HybridTopKSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK,
-                SortFields, null, ComparatorFactories, RecordDesc);
+        AbstractSortRunGenerator sorter = new HybridTopKSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK, SortFields, null,
+                ComparatorFactories, RecordDesc);
 
         testInMemoryOnly(ctx, topK, ORDER.REVERSE, sorter);
     }
@@ -126,8 +129,8 @@
     public void testHybridTopKShouldSwitchToFrameSorterWhenFlushed() {
         int topK = 1;
         IHyracksTaskContext ctx = AbstractRunGeneratorTest.testUtils.create(PAGE_SIZE);
-        AbstractSortRunGenerator sorter = new HybridTopKSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK,
-                SortFields, null, ComparatorFactories, RecordDesc);
+        AbstractSortRunGenerator sorter = new HybridTopKSortRunGenerator(ctx, SORT_FRAME_LIMIT, topK, SortFields, null,
+                ComparatorFactories, RecordDesc);
 
     }
 
@@ -148,8 +151,8 @@
         int minRecordSize = 16;
         int maxRecordSize = 64;
 
-        AbstractRunGeneratorTest
-                .prepareData(ctx, frameList, minDataSize, minRecordSize, maxRecordSize, null, keyValuePair);
+        AbstractRunGeneratorTest.prepareData(ctx, frameList, minDataSize, minRecordSize, maxRecordSize, null,
+                keyValuePair);
 
         assert topK > 0;
 
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/InputFrameGenerator.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/InputFrameGenerator.java
new file mode 100644
index 0000000..d37bfd9
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/InputFrameGenerator.java
@@ -0,0 +1,69 @@
+/*
+ * 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.hyracks.tests.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.VSizeFrame;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.control.nc.resources.memory.FrameManager;
+import org.apache.hyracks.dataflow.common.comm.io.FrameFixedFieldAppender;
+
+public class InputFrameGenerator {
+
+    protected final FrameManager manager;
+
+    public InputFrameGenerator(int initialFrameSize) {
+        manager = new FrameManager(initialFrameSize);
+    }
+
+    public List<IFrame> generateDataFrame(RecordDescriptor recordDescriptor, List<Object[]> listOfObject)
+            throws HyracksDataException {
+        List<IFrame> listFrame = new ArrayList<>();
+        VSizeFrame frame = new VSizeFrame(manager);
+        FrameFixedFieldAppender appender = new FrameFixedFieldAppender(recordDescriptor.getFieldCount());
+        appender.reset(frame, true);
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(manager.getInitialFrameSize());
+        DataOutputStream ds = new DataOutputStream(baos);
+        for (Object[] objs : listOfObject) {
+            for (int i = 0; i < recordDescriptor.getFieldCount(); i++) {
+                baos.reset();
+                recordDescriptor.getFields()[i].serialize(objs[i], ds);
+                if (!appender.appendField(baos.toByteArray(), 0, baos.size())) {
+                    listFrame.add(frame);
+                    frame = new VSizeFrame(manager);
+                    appender.resetWithLeftOverData(frame);
+                    if (!appender.appendField(baos.toByteArray(), 0, baos.size())) {
+                        throw new HyracksDataException("Should never happen!");
+                    }
+                }
+            }
+        }
+        listFrame.add(frame);
+        return listFrame;
+    }
+
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/MultiThreadTaskEmulator.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/MultiThreadTaskEmulator.java
new file mode 100644
index 0000000..022d3a2
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/MultiThreadTaskEmulator.java
@@ -0,0 +1,87 @@
+/*
+ * 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.hyracks.tests.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Semaphore;
+
+import org.apache.hyracks.api.comm.IFrame;
+import org.apache.hyracks.api.comm.IFrameWriter;
+
+public class MultiThreadTaskEmulator {
+
+    private ExecutorService executor;
+
+    public MultiThreadTaskEmulator() {
+        this.executor = Executors.newCachedThreadPool((r) -> {
+            Thread t = new Thread(r);
+            t.setDaemon(true);
+            return t;
+        });
+    }
+
+    public void runInParallel(final IFrameWriter[] writers, final List<IFrame>[] inputFrames) throws Exception {
+        final Semaphore sem = new Semaphore(writers.length - 1);
+        List<Exception> exceptions = Collections.synchronizedList(new ArrayList<>());
+        for (int i = 1; i < writers.length; i++) {
+            sem.acquire();
+            final IFrameWriter writer = writers[i];
+            final List<IFrame> inputFrame = inputFrames[i];
+            executor.execute(() -> {
+                executeOneWriter(writer, inputFrame, exceptions);
+                sem.release();
+            });
+        }
+
+        final IFrameWriter writer = writers[0];
+        final List<IFrame> inputFrame = inputFrames[0];
+        executeOneWriter(writer, inputFrame, exceptions);
+        sem.acquire(writers.length - 1);
+
+        for (int i = 0; i < exceptions.size(); i++) {
+            exceptions.get(i).printStackTrace();
+            if (i == exceptions.size() - 1) {
+                throw exceptions.get(i);
+            }
+        }
+    }
+
+    private void executeOneWriter(IFrameWriter writer, List<IFrame> inputFrame, List<Exception> exceptions) {
+        try {
+            try {
+                writer.open();
+                for (IFrame frame : inputFrame) {
+                    writer.nextFrame(frame.getBuffer());
+                }
+            } catch (Exception ex) {
+                writer.fail();
+                throw ex;
+            } finally {
+                writer.close();
+            }
+        } catch (Exception e) {
+            exceptions.add(e);
+        }
+    }
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/OutputFrameVerifier.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/OutputFrameVerifier.java
new file mode 100644
index 0000000..77b6913
--- /dev/null
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/util/OutputFrameVerifier.java
@@ -0,0 +1,95 @@
+/*
+ * 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.hyracks.tests.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.nio.ByteBuffer;
+import java.util.List;
+
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+
+public class OutputFrameVerifier implements IFrameWriter {
+
+    private final RecordDescriptor inputRecordDescriptor;
+    private final List<Object[]> answerList;
+    private final FrameTupleAccessor frameAccessor;
+    private int offset;
+    private boolean failed;
+
+    public OutputFrameVerifier(RecordDescriptor inputRecordDescriptor, List<Object[]> answerList) {
+        this.inputRecordDescriptor = inputRecordDescriptor;
+        this.frameAccessor = new FrameTupleAccessor(inputRecordDescriptor);
+        this.answerList = answerList;
+    }
+
+    @Override
+    public void open() throws HyracksDataException {
+        this.offset = 0;
+        this.failed = false;
+    }
+
+    @Override
+    public void nextFrame(ByteBuffer buffer) throws HyracksDataException {
+        frameAccessor.reset(buffer);
+        for (int tid = 0; tid < frameAccessor.getTupleCount(); tid++) {
+            Object[] objects = new Object[inputRecordDescriptor.getFieldCount()];
+            for (int fid = 0; fid < inputRecordDescriptor.getFieldCount(); fid++) {
+                ByteArrayInputStream bais = new ByteArrayInputStream(frameAccessor.getBuffer().array(),
+                        frameAccessor.getAbsoluteFieldStartOffset(tid, fid),
+                        frameAccessor.getFieldLength(tid, fid));
+                DataInputStream dis = new DataInputStream(bais);
+                objects[fid] = inputRecordDescriptor.getFields()[fid].deserialize(dis);
+            }
+            if (offset >= answerList.size()) {
+                throw new HyracksDataException(
+                        "The number of given results is more than expected size:" + answerList.size());
+            }
+            Object[] expected = answerList.get(offset);
+            for (int i = 0; i < expected.length; i++) {
+                if (!expected[i].equals(objects[i])) {
+                    throw new HyracksDataException(
+                            "The result object: " + objects[i] + " is different from the expected one:" + expected[i]);
+                }
+            }
+            offset++;
+        }
+    }
+
+    @Override
+    public void fail() throws HyracksDataException {
+        this.failed = true;
+    }
+
+    @Override
+    public void close() throws HyracksDataException {
+        if (offset < answerList.size()) {
+            throw new HyracksDataException(
+                    "The number of given results:" + offset + " is less than expected size:" + answerList.size());
+        }
+    }
+
+    public boolean isFailed() {
+        return failed;
+    }
+}
diff --git a/hyracks/hyracks-examples/hyracks-shutdown-test/pom.xml b/hyracks/hyracks-examples/hyracks-shutdown-test/pom.xml
index ab7e69c..62fde55 100644
--- a/hyracks/hyracks-examples/hyracks-shutdown-test/pom.xml
+++ b/hyracks/hyracks-examples/hyracks-shutdown-test/pom.xml
@@ -131,15 +131,6 @@
       </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>
-        </configuration>
-      </plugin>
-      <plugin>
-      <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-failsafe-plugin</artifactId>
       <version>2.8.1</version>
       <executions>
@@ -163,7 +154,6 @@
   </build>
   <dependencies>
     <dependency>
-      <!-- Dependency management inherited from top-level hyracks -->
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
diff --git a/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java b/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java
index c07a8a6..97f5a64 100644
--- a/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java
+++ b/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java
@@ -45,9 +45,9 @@
         ServerSocket s = null;
         try {
             c = new ServerSocket(1098);
-            //we should be able to bind to this 
+            //we should be able to bind to this
             s = new ServerSocket(1099);
-            //and we should be able to bind to this too 
+            //and we should be able to bind to this too
         } catch (Exception e) {
             LOGGER.severe(e.getMessage());
             throw e;
diff --git a/hyracks/hyracks-examples/text-example/textclient/pom.xml b/hyracks/hyracks-examples/text-example/textclient/pom.xml
index 71e7e7d..f7b796e 100644
--- a/hyracks/hyracks-examples/text-example/textclient/pom.xml
+++ b/hyracks/hyracks-examples/text-example/textclient/pom.xml
@@ -50,16 +50,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>appassembler-maven-plugin</artifactId>
         <version>1.3</version>
@@ -81,24 +71,7 @@
               <goal>assemble</goal>
             </goals>
           </execution>
-          <execution>
-          	<id>groupclient</id>
-            <configuration>
-              <programs>
-                <program>
-                  <mainClass>org.apache.hyracks.examples.text.client.ExternalGroupClient</mainClass>
-                  <name>groupclient</name>
-                </program>
-              </programs>
-              <repositoryLayout>flat</repositoryLayout>
-              <repositoryName>lib</repositoryName>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>assemble</goal>
-            </goals>
-          </execution>
-        </executions>
+       </executions>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/ExternalGroupClient.java b/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/ExternalGroupClient.java
deleted file mode 100644
index 3f9b0e9..0000000
--- a/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/ExternalGroupClient.java
+++ /dev/null
@@ -1,325 +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.hyracks.examples.text.client;
-
-import java.io.File;
-
-import org.kohsuke.args4j.CmdLineParser;
-import org.kohsuke.args4j.Option;
-
-import org.apache.hyracks.api.client.HyracksConnection;
-import org.apache.hyracks.api.client.IHyracksClientConnection;
-import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
-import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
-import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.api.job.JobId;
-import org.apache.hyracks.api.job.JobSpecification;
-import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
-import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.normalizers.IntegerNormalizedKeyComputerFactory;
-import org.apache.hyracks.dataflow.common.data.parsers.FloatParserFactory;
-import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
-import org.apache.hyracks.dataflow.common.data.parsers.IntegerParserFactory;
-import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
-import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
-import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
-import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
-import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider;
-import org.apache.hyracks.dataflow.std.file.DelimitedDataTupleParserFactory;
-import org.apache.hyracks.dataflow.std.file.FileScanOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.file.FileSplit;
-import org.apache.hyracks.dataflow.std.file.FrameFileWriterOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
-import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
-import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory;
-import org.apache.hyracks.dataflow.std.group.aggregators.CountFieldAggregatorFactory;
-import org.apache.hyracks.dataflow.std.group.aggregators.IntSumFieldAggregatorFactory;
-import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
-import org.apache.hyracks.dataflow.std.group.hash.HashGroupOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
-
-/**
- * The application client for the performance tests of the external hash group
- * operator.
- */
-public class ExternalGroupClient {
-    private static class Options {
-        @Option(name = "-host", usage = "Hyracks Cluster Controller Host name", required = true)
-        public String host;
-
-        @Option(name = "-port", usage = "Hyracks Cluster Controller Port (default: 1098)")
-        public int port = 1098;
-
-        @Option(name = "-infile-splits", usage = "Comma separated list of file-splits for the input. A file-split is <node-name>:<path>", required = true)
-        public String inFileSplits;
-
-        @Option(name = "-outfile-splits", usage = "Comma separated list of file-splits for the output", required = true)
-        public String outFileSplits;
-
-        @Option(name = "-hashtable-size", usage = "Hash table size (default: 8191)", required = false)
-        public int htSize = 8191;
-
-        @Option(name = "-frame-size", usage = "Frame size (default: 32768)", required = false)
-        public int frameSize = 32768;
-
-        @Option(name = "-sortbuffer-size", usage = "Sort buffer size in frames (default: 512)", required = false)
-        public int sbSize = 512;
-
-        @Option(name = "-sort-output", usage = "Whether to sort the output (default: true)", required = false)
-        public boolean sortOutput = false;
-
-        @Option(name = "-out-plain", usage = "Whether to output plain text (default: true)", required = false)
-        public boolean outPlain = true;
-
-        @Option(name = "-algo", usage = "The algorithm to be used", required = true)
-        public int algo;
-    }
-
-    /**
-     * @param args
-     */
-    public static void main(String[] args) throws Exception {
-        Options options = new Options();
-        CmdLineParser parser = new CmdLineParser(options);
-        parser.parseArgument(args);
-
-        IHyracksClientConnection hcc = new HyracksConnection(options.host, options.port);
-
-        JobSpecification job;
-
-        for (int i = 0; i < 6; i++) {
-            long start = System.currentTimeMillis();
-            job = createJob(parseFileSplits(options.inFileSplits), parseFileSplits(options.outFileSplits, i),
-                    options.htSize, options.sbSize, options.frameSize, options.sortOutput, options.algo,
-                    options.outPlain);
-
-            System.out.print(i + "\t" + (System.currentTimeMillis() - start));
-            start = System.currentTimeMillis();
-            JobId jobId = hcc.startJob(job);
-            hcc.waitForCompletion(jobId);
-            System.out.println("\t" + (System.currentTimeMillis() - start));
-        }
-    }
-
-    private static FileSplit[] parseFileSplits(String fileSplits) {
-        String[] splits = fileSplits.split(",");
-        FileSplit[] fSplits = new FileSplit[splits.length];
-        for (int i = 0; i < splits.length; ++i) {
-            String s = splits[i].trim();
-            int idx = s.indexOf(':');
-            if (idx < 0) {
-                throw new IllegalArgumentException("File split " + s + " not well formed");
-            }
-            fSplits[i] = new FileSplit(s.substring(0, idx), new FileReference(new File(s.substring(idx + 1))));
-        }
-        return fSplits;
-    }
-
-    private static FileSplit[] parseFileSplits(String fileSplits, int count) {
-        String[] splits = fileSplits.split(",");
-        FileSplit[] fSplits = new FileSplit[splits.length];
-        for (int i = 0; i < splits.length; ++i) {
-            String s = splits[i].trim();
-            int idx = s.indexOf(':');
-            if (idx < 0) {
-                throw new IllegalArgumentException("File split " + s + " not well formed");
-            }
-            fSplits[i] = new FileSplit(s.substring(0, idx), new FileReference(new File(s.substring(idx + 1) + "_"
-                    + count)));
-        }
-        return fSplits;
-    }
-
-    private static JobSpecification createJob(FileSplit[] inSplits, FileSplit[] outSplits, int htSize, int sbSize,
-            int frameSize, boolean sortOutput, int alg, boolean outPlain) {
-        JobSpecification spec = new JobSpecification(frameSize);
-        IFileSplitProvider splitsProvider = new ConstantFileSplitProvider(inSplits);
-
-        RecordDescriptor inDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                FloatSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
-
-        FileScanOperatorDescriptor fileScanner = new FileScanOperatorDescriptor(spec, splitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { IntegerParserFactory.INSTANCE,
-                        IntegerParserFactory.INSTANCE, IntegerParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
-                        IntegerParserFactory.INSTANCE, FloatParserFactory.INSTANCE, FloatParserFactory.INSTANCE,
-                        FloatParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, }, '|'), inDesc);
-
-        createPartitionConstraint(spec, fileScanner, inSplits);
-
-        // Output: each unique string with an integer count
-        RecordDescriptor outDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                IntegerSerializerDeserializer.INSTANCE,
-                // IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE });
-
-        // Specify the grouping key, which will be the string extracted during
-        // the scan.
-        int[] keys = new int[] { 0,
-        // 1
-        };
-
-        AbstractOperatorDescriptor grouper;
-
-        switch (alg) {
-            case 0: // new external hash graph
-                grouper = new org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor(spec,
-                        keys, frameSize, new IBinaryComparatorFactory[] {
-                        // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
-                        new IntegerNormalizedKeyComputerFactory(), new MultiFieldsAggregatorFactory(
-                                new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(false) }),
-                        new MultiFieldsAggregatorFactory(
-                                new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(keys.length,
-                                        false) }), outDesc, new HashSpillableTableFactory(
-                                new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
-                                // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                                PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }), htSize), false);
-
-                createPartitionConstraint(spec, grouper, outSplits);
-
-                // Connect scanner with the grouper
-                IConnectorDescriptor scanGroupConnDef2 = new MToNPartitioningConnectorDescriptor(spec,
-                        new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
-                        // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }));
-                spec.connect(scanGroupConnDef2, fileScanner, 0, grouper, 0);
-
-                break;
-            case 1: // External-sort + new-precluster
-                ExternalSortOperatorDescriptor sorter2 = new ExternalSortOperatorDescriptor(spec, frameSize, keys,
-                        new IBinaryComparatorFactory[] {
-                        // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) }, inDesc);
-                createPartitionConstraint(spec, sorter2, inSplits);
-
-                // Connect scan operator with the sorter
-                IConnectorDescriptor scanSortConn2 = new MToNPartitioningConnectorDescriptor(spec,
-                        new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
-                        // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }));
-                spec.connect(scanSortConn2, fileScanner, 0, sorter2, 0);
-
-                grouper = new org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupOperatorDescriptor(
-                        spec, keys, new IBinaryComparatorFactory[] {
-                        // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
-                        new MultiFieldsAggregatorFactory(
-                                new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(true) }),
-                        outDesc);
-
-                createPartitionConstraint(spec, grouper, outSplits);
-
-                // Connect sorter with the pre-cluster
-                OneToOneConnectorDescriptor sortGroupConn2 = new OneToOneConnectorDescriptor(spec);
-                spec.connect(sortGroupConn2, sorter2, 0, grouper, 0);
-                break;
-            case 2: // Inmem
-                grouper = new HashGroupOperatorDescriptor(spec, keys, new FieldHashPartitionComputerFactory(keys,
-                        new IBinaryHashFunctionFactory[] {
-                        // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }),
-                        new IBinaryComparatorFactory[] {
-                        // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
-                        new MultiFieldsAggregatorFactory(
-                                new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(true) }),
-                        outDesc, htSize);
-
-                createPartitionConstraint(spec, grouper, outSplits);
-
-                // Connect scanner with the grouper
-                IConnectorDescriptor scanConn2 = new MToNPartitioningConnectorDescriptor(spec,
-                        new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
-                        // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }));
-                spec.connect(scanConn2, fileScanner, 0, grouper, 0);
-                break;
-            default:
-                grouper = new org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor(spec,
-                        keys, frameSize, new IBinaryComparatorFactory[] {
-                        // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
-                        new IntegerNormalizedKeyComputerFactory(), new MultiFieldsAggregatorFactory(
-                                new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(false) }),
-                        new MultiFieldsAggregatorFactory(
-                                new IFieldAggregateDescriptorFactory[] { new IntSumFieldAggregatorFactory(keys.length,
-                                        false) }), outDesc, new HashSpillableTableFactory(
-                                new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
-                                // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                                PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }), htSize), false);
-
-                createPartitionConstraint(spec, grouper, outSplits);
-
-                // Connect scanner with the grouper
-                IConnectorDescriptor scanGroupConnDef = new MToNPartitioningConnectorDescriptor(spec,
-                        new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
-                        // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
-                        PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }));
-                spec.connect(scanGroupConnDef, fileScanner, 0, grouper, 0);
-        }
-
-        IFileSplitProvider outSplitProvider = new ConstantFileSplitProvider(outSplits);
-
-        AbstractSingleActivityOperatorDescriptor writer;
-
-        if (outPlain)
-            writer = new PlainFileWriterOperatorDescriptor(spec, outSplitProvider, "|");
-        else
-            writer = new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
-
-        createPartitionConstraint(spec, writer, outSplits);
-
-        IConnectorDescriptor groupOutConn = new OneToOneConnectorDescriptor(spec);
-        spec.connect(groupOutConn, grouper, 0, writer, 0);
-
-        spec.addRoot(writer);
-        return spec;
-    }
-
-    private static void createPartitionConstraint(JobSpecification spec, IOperatorDescriptor op, FileSplit[] splits) {
-        String[] parts = new String[splits.length];
-        for (int i = 0; i < splits.length; ++i) {
-            parts[i] = splits[i].getNodeName();
-        }
-        PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, op, parts);
-    }
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java b/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java
index a3e1ee0..22a571f 100644
--- a/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java
+++ b/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java
@@ -21,9 +21,6 @@
 import java.io.File;
 import java.util.EnumSet;
 
-import org.kohsuke.args4j.CmdLineParser;
-import org.kohsuke.args4j.Option;
-
 import org.apache.hyracks.api.client.HyracksConnection;
 import org.apache.hyracks.api.client.IHyracksClientConnection;
 import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
@@ -31,6 +28,7 @@
 import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.io.FileReference;
@@ -39,6 +37,7 @@
 import org.apache.hyracks.api.job.JobSpecification;
 import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
 import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
+import org.apache.hyracks.data.std.accessors.UTF8StringBinaryHashFunctionFamily;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
@@ -52,14 +51,19 @@
 import org.apache.hyracks.dataflow.std.file.FrameFileWriterOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
 import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.CountFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.FloatSumFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.IntSumFieldAggregatorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
-import org.apache.hyracks.dataflow.std.group.hash.HashGroupOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.group.preclustered.PreclusteredGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.sort.InMemorySortOperatorDescriptor;
 import org.apache.hyracks.examples.text.WordTupleParserFactory;
+import org.kohsuke.args4j.CmdLineParser;
+import org.kohsuke.args4j.Option;
 
 public class WordCountMain {
     private static class Options {
@@ -84,16 +88,18 @@
         @Option(name = "-hashtable-size", usage = "Hash table size (default: 8191)", required = false)
         public int htSize = 8191;
 
-        @Option(name = "-sortbuffer-size", usage = "Sort buffer size in frames (default: 32768)", required = false)
-        public int sbSize = 32768;
+        @Option(name = "-frame-limit", usage = "Memory limit in frames (default:4)", required = false)
+        public int memFrameLimit = 10;
 
         @Option(name = "-runtime-profiling", usage = "Indicates if runtime profiling should be enabled. (default: false)")
         public boolean runtimeProfiling = false;
-        
+
         @Option(name = "-frame-size", usage = "Hyracks frame size (default: 32768)", required = false)
         public int frameSize = 32768;
     }
 
+    private static long fileSize = 0;
+
     public static void main(String[] args) throws Exception {
         Options options = new Options();
         CmdLineParser parser = new CmdLineParser(options);
@@ -102,7 +108,7 @@
         IHyracksClientConnection hcc = new HyracksConnection(options.host, options.port);
 
         JobSpecification job = createJob(parseFileSplits(options.inFileSplits), parseFileSplits(options.outFileSplits),
-                options.algo, options.htSize, options.sbSize, options.format, options.frameSize);
+                options.algo, options.htSize, options.memFrameLimit, options.format, options.frameSize);
 
         long start = System.currentTimeMillis();
         JobId jobId = hcc.startJob(job,
@@ -121,63 +127,64 @@
             if (idx < 0) {
                 throw new IllegalArgumentException("File split " + s + " not well formed");
             }
-            fSplits[i] = new FileSplit(s.substring(0, idx), new FileReference(new File(s.substring(idx + 1))));
+            File file = new File(s.substring(idx + 1));
+            fSplits[i] = new FileSplit(s.substring(0, idx), new FileReference(file));
+            fileSize += file.length();
         }
         return fSplits;
     }
 
     private static JobSpecification createJob(FileSplit[] inSplits, FileSplit[] outSplits, String algo, int htSize,
-            int sbSize, String format, int frameSize) {
+            int frameLimit, String format, int frameSize) {
         JobSpecification spec = new JobSpecification(frameSize);
 
         IFileSplitProvider splitsProvider = new ConstantFileSplitProvider(inSplits);
         RecordDescriptor wordDesc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         FileScanOperatorDescriptor wordScanner = new FileScanOperatorDescriptor(spec, splitsProvider,
                 new WordTupleParserFactory(), wordDesc);
         createPartitionConstraint(spec, wordScanner, inSplits);
 
         RecordDescriptor groupResultDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
 
         IOperatorDescriptor gBy;
         int[] keys = new int[] { 0 };
         if ("hash".equalsIgnoreCase(algo)) {
-            gBy = new HashGroupOperatorDescriptor(
-                    spec,
-                    keys,
-                    new FieldHashPartitionComputerFactory(keys,
-                            new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                    .of(UTF8StringPointable.FACTORY) }),
+            gBy = new ExternalGroupOperatorDescriptor(spec, htSize, fileSize, keys, frameLimit,
                     new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                    new MultiFieldsAggregatorFactory(
-                            new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(true) }),
-                    groupResultDesc, htSize);
+                    new UTF8StringNormalizedKeyComputerFactory(),
+                    new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                            new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(3, false),
+                            new FloatSumFieldAggregatorFactory(5, false) }),
+                    new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                            new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(2, false),
+                            new FloatSumFieldAggregatorFactory(3, false) }),
+                    groupResultDesc, groupResultDesc, new HashSpillableTableFactory(
+                            new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
+
             createPartitionConstraint(spec, gBy, outSplits);
             IConnectorDescriptor scanGroupConn = new MToNPartitioningConnectorDescriptor(spec,
-                    new FieldHashPartitionComputerFactory(keys,
-                            new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                    .of(UTF8StringPointable.FACTORY) }));
+                    new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
+                            PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
             spec.connect(scanGroupConn, wordScanner, 0, gBy, 0);
         } else {
-            IBinaryComparatorFactory[] cfs = new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory
-                    .of(UTF8StringPointable.FACTORY) };
-            IOperatorDescriptor sorter = "memsort".equalsIgnoreCase(algo) ? new InMemorySortOperatorDescriptor(spec,
-                    keys, new UTF8StringNormalizedKeyComputerFactory(), cfs, wordDesc)
-                    : new ExternalSortOperatorDescriptor(spec, sbSize, keys,
+            IBinaryComparatorFactory[] cfs = new IBinaryComparatorFactory[] {
+                    PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) };
+            IOperatorDescriptor sorter = "memsort".equalsIgnoreCase(algo)
+                    ? new InMemorySortOperatorDescriptor(spec, keys, new UTF8StringNormalizedKeyComputerFactory(), cfs,
+                            wordDesc)
+                    : new ExternalSortOperatorDescriptor(spec, frameLimit, keys,
                             new UTF8StringNormalizedKeyComputerFactory(), cfs, wordDesc);
             createPartitionConstraint(spec, sorter, outSplits);
 
             IConnectorDescriptor scanSortConn = new MToNPartitioningConnectorDescriptor(spec,
-                    new FieldHashPartitionComputerFactory(keys,
-                            new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                    .of(UTF8StringPointable.FACTORY) }));
+                    new FieldHashPartitionComputerFactory(keys, new IBinaryHashFunctionFactory[] {
+                            PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
             spec.connect(scanSortConn, wordScanner, 0, sorter, 0);
 
-            gBy = new PreclusteredGroupOperatorDescriptor(
-                    spec,
-                    keys,
+            gBy = new PreclusteredGroupOperatorDescriptor(spec, keys,
                     new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                     new MultiFieldsAggregatorFactory(
                             new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(true) }),
@@ -188,8 +195,9 @@
         }
 
         IFileSplitProvider outSplitProvider = new ConstantFileSplitProvider(outSplits);
-        IOperatorDescriptor writer = "text".equalsIgnoreCase(format) ? new PlainFileWriterOperatorDescriptor(spec,
-                outSplitProvider, ",") : new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
+        IOperatorDescriptor writer = "text".equalsIgnoreCase(format)
+                ? new PlainFileWriterOperatorDescriptor(spec, outSplitProvider, ",")
+                : new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
         createPartitionConstraint(spec, writer, outSplits);
 
         IConnectorDescriptor gbyPrinterConn = new OneToOneConnectorDescriptor(spec);
@@ -206,4 +214,4 @@
         }
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, op, parts);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/text-example/texthelper/pom.xml b/hyracks/hyracks-examples/text-example/texthelper/pom.xml
index c542c56..a3cab26 100644
--- a/hyracks/hyracks-examples/text-example/texthelper/pom.xml
+++ b/hyracks/hyracks-examples/text-example/texthelper/pom.xml
@@ -54,16 +54,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-deploy-plugin</artifactId>
           <configuration>
diff --git a/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java b/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java
index f0efb5e..4558cf9 100644
--- a/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java
+++ b/hyracks/hyracks-examples/text-example/texthelper/src/main/java/org/apache/hyracks/examples/text/WordTupleParserFactory.java
@@ -59,7 +59,7 @@
                         FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0,
                                 tb.getSize());
                     }
-                    appender.flush(writer, true);
+                    appender.write(writer, true);
                 } catch (IOException e) {
                     throw new HyracksDataException(e);
                 }
diff --git a/hyracks/hyracks-examples/text-example/textserver/pom.xml b/hyracks/hyracks-examples/text-example/textserver/pom.xml
index b8c4a4a..e55b99f 100644
--- a/hyracks/hyracks-examples/text-example/textserver/pom.xml
+++ b/hyracks/hyracks-examples/text-example/textserver/pom.xml
@@ -130,15 +130,6 @@
       </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>
-        </configuration>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.maven.plugins</groupId>
       	<artifactId>maven-failsafe-plugin</artifactId>
       	<version>2.8.1</version>
       	<executions>
@@ -162,7 +153,6 @@
   </build>
   <dependencies>
     <dependency>
-      <!-- Dependency management inherited from top-level hyracks -->
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml b/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
index f524551..7dbcf24 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml
@@ -27,66 +27,89 @@
     <version>0.2.18-SNAPSHOT</version>
   </parent>
 
-
-  <properties>
-      <root.dir>${basedir}/../../../../..</root.dir>
-  </properties>
-
-  <dependencies>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<scope>compile</scope>
-  	</dependency>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-data-std</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  	</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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>appassembler-maven-plugin</artifactId>
-        <version>1.3</version>
-        <executions>
-          <execution>
-            <configuration>
-              <programs>
-                <program>
-                  <mainClass>org.apache.hyracks.examples.tpch.client.Sort</mainClass>
-                  <name>tpchclient</name>
-                </program>
-              </programs>
-              <repositoryLayout>flat</repositoryLayout>
-              <repositoryName>lib</repositoryName>
-            </configuration>
-            <phase>package</phase>
-            <goals>
-              <goal>assemble</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-deploy-plugin</artifactId>
-      <configuration>
-          <skip>true</skip>
-      </configuration>
-    </plugin>
-    </plugins>
-  </build>
+    <properties>
+        <root.dir>${basedir}/../../../../..</root.dir>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-dataflow-std</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-data-std</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>appassembler-maven-plugin</artifactId>
+                <version>1.3</version>
+                <executions>
+                    <execution>
+                        <id>sort</id>
+                        <configuration>
+                            <programs>
+                                <program>
+                                    <mainClass>org.apache.hyracks.examples.tpch.client.Sort</mainClass>
+                                    <name>sort</name>
+                                </program>
+                            </programs>
+                            <repositoryLayout>flat</repositoryLayout>
+                            <repositoryName>lib</repositoryName>
+                        </configuration>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>assemble</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>group</id>
+                        <configuration>
+                            <programs>
+                                <program>
+                                    <mainClass>org.apache.hyracks.examples.tpch.client.Groupby</mainClass>
+                                    <name>group</name>
+                                </program>
+                            </programs>
+                            <repositoryLayout>flat</repositoryLayout>
+                            <repositoryName>lib</repositoryName>
+                        </configuration>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>assemble</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>join</id>
+                        <configuration>
+                            <programs>
+                                <program>
+                                    <mainClass>org.apache.hyracks.examples.tpch.client.Join</mainClass>
+                                    <name>join</name>
+                                </program>
+                            </programs>
+                            <repositoryLayout>flat</repositoryLayout>
+                            <repositoryName>lib</repositoryName>
+                        </configuration>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>assemble</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Common.java b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Common.java
index 28b62a7..15d7f66 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Common.java
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Common.java
@@ -27,41 +27,69 @@
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.parsers.FloatParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
+import org.apache.hyracks.dataflow.common.data.parsers.IntegerParserFactory;
 import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
 import org.apache.hyracks.dataflow.std.file.FileSplit;
 
 public class Common {
     static RecordDescriptor custDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
 
     static RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer() });
     static RecordDescriptor custOrderJoinDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-            UTF8StringSerializerDeserializer.INSTANCE });
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer() });
 
+    static RecordDescriptor lineitemDesc = new RecordDescriptor(new ISerializerDeserializer[] {
+            IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+            IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
+            IntegerSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
+            FloatSerializerDeserializer.INSTANCE, FloatSerializerDeserializer.INSTANCE,
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+            new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() });
+
+    static IValueParserFactory[] lineitemParserFactories = new IValueParserFactory[] {
+            IntegerParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
+            IntegerParserFactory.INSTANCE, IntegerParserFactory.INSTANCE,
+            IntegerParserFactory.INSTANCE, FloatParserFactory.INSTANCE,
+            FloatParserFactory.INSTANCE, FloatParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, };
+
+    static IValueParserFactory[] custParserFactories = new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE };
     static IValueParserFactory[] orderParserFactories = new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE };
-
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
+            UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE };
 
     static FileSplit[] parseFileSplits(String fileSplits) {
         String[] splits = fileSplits.split(",");
@@ -77,6 +105,21 @@
         return fSplits;
     }
 
+    static FileSplit[] parseFileSplits(String fileSplits, int count) {
+        String[] splits = fileSplits.split(",");
+        FileSplit[] fSplits = new FileSplit[splits.length];
+        for (int i = 0; i < splits.length; ++i) {
+            String s = splits[i].trim();
+            int idx = s.indexOf(':');
+            if (idx < 0) {
+                throw new IllegalArgumentException("File split " + s + " not well formed");
+            }
+            fSplits[i] = new FileSplit(s.substring(0, idx), new FileReference(new File(s.substring(idx + 1) + "_"
+                    + count)));
+        }
+        return fSplits;
+    }
+
     static void createPartitionConstraint(JobSpecification spec, IOperatorDescriptor op, FileSplit[] splits) {
         String[] parts = new String[splits.length];
         for (int i = 0; i < splits.length; ++i) {
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Groupby.java b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Groupby.java
new file mode 100644
index 0000000..2ef5835
--- /dev/null
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Groupby.java
@@ -0,0 +1,207 @@
+/*
+ * 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.hyracks.examples.tpch.client;
+
+import static org.apache.hyracks.examples.tpch.client.Common.createPartitionConstraint;
+import static org.apache.hyracks.examples.tpch.client.Common.lineitemDesc;
+import static org.apache.hyracks.examples.tpch.client.Common.lineitemParserFactories;
+import static org.apache.hyracks.examples.tpch.client.Common.parseFileSplits;
+
+import org.apache.hyracks.api.client.HyracksConnection;
+import org.apache.hyracks.api.client.IHyracksClientConnection;
+import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.job.JobId;
+import org.apache.hyracks.api.job.JobSpecification;
+import org.apache.hyracks.data.std.accessors.MurmurHash3BinaryHashFunctionFamily;
+import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
+import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.normalizers.IntegerNormalizedKeyComputerFactory;
+import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
+import org.apache.hyracks.dataflow.std.base.AbstractOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
+import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
+import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider;
+import org.apache.hyracks.dataflow.std.file.DelimitedDataTupleParserFactory;
+import org.apache.hyracks.dataflow.std.file.FileScanOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.file.FileSplit;
+import org.apache.hyracks.dataflow.std.file.FrameFileWriterOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
+import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
+import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.CountFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.IntSumFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.sort.SortGroupByOperatorDescriptor;
+import org.kohsuke.args4j.CmdLineParser;
+import org.kohsuke.args4j.Option;
+
+/**
+ * The application client for the performance tests of the groupby
+ * operator.
+ */
+public class Groupby {
+    private static class Options {
+        @Option(name = "-host", usage = "Hyracks Cluster Controller Host name", required = true)
+        public String host;
+
+        @Option(name = "-port", usage = "Hyracks Cluster Controller Port (default: 1098)")
+        public int port = 1098;
+
+        @Option(name = "-infile-splits", usage = "Comma separated list of file-splits for the input. A file-split is <node-name>:<path>", required = true)
+        public String inFileSplits;
+
+        @Option(name = "-outfile-splits", usage = "Comma separated list of file-splits for the output", required = true)
+        public String outFileSplits;
+
+        @Option(name = "-input-tuples", usage = "Hash table size ", required = true)
+        public int htSize;
+
+        @Option(name = "-input-size", usage = "Physical file size in bytes ", required = true)
+        public long fileSize;
+
+        @Option(name = "-frame-size", usage = "Frame size (default: 32768)", required = false)
+        public int frameSize = 32768;
+
+        @Option(name = "-frame-limit", usage = "memory limit for sorting (default: 4)", required = false)
+        public int frameLimit = 4;
+
+        @Option(name = "-out-plain", usage = "Whether to output plain text (default: true)", required = false)
+        public boolean outPlain = true;
+
+        @Option(name = "-algo", usage = "The algorithm to be used: hash|sort", required = true)
+        public String algo = "hash";
+    }
+
+    public static void main(String[] args) throws Exception {
+        Options options = new Options();
+        CmdLineParser parser = new CmdLineParser(options);
+        if (args.length == 0) {
+            parser.printUsage(System.err);
+            return;
+        }
+        parser.parseArgument(args);
+
+        IHyracksClientConnection hcc = new HyracksConnection(options.host, options.port);
+
+        JobSpecification job;
+
+        long start = System.currentTimeMillis();
+        job = createJob(parseFileSplits(options.inFileSplits), parseFileSplits(options.outFileSplits), options.htSize,
+                options.fileSize, options.frameLimit, options.frameSize, options.algo, options.outPlain);
+        if (job != null) {
+            System.out.print("CreateJobTime:" + (System.currentTimeMillis() - start));
+            start = System.currentTimeMillis();
+            JobId jobId = hcc.startJob(job);
+            hcc.waitForCompletion(jobId);
+            System.out.println("JobExecuteTime:" + (System.currentTimeMillis() - start));
+        }
+    }
+
+    private static JobSpecification createJob(FileSplit[] inSplits, FileSplit[] outSplits, int htSize, long fileSize,
+            int frameLimit, int frameSize, String alg, boolean outPlain) {
+        JobSpecification spec = new JobSpecification(frameSize);
+        IFileSplitProvider splitsProvider = new ConstantFileSplitProvider(inSplits);
+
+        FileScanOperatorDescriptor fileScanner = new FileScanOperatorDescriptor(spec, splitsProvider,
+                new DelimitedDataTupleParserFactory(lineitemParserFactories, '|'), lineitemDesc);
+
+        createPartitionConstraint(spec, fileScanner, inSplits);
+
+        // Output: each unique string with an integer count
+        RecordDescriptor outDesc = new RecordDescriptor(
+                new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE,
+                        // IntegerSerializerDeserializer.INSTANCE,
+                        IntegerSerializerDeserializer.INSTANCE });
+
+        // Specify the grouping key, which will be the string extracted during
+        // the scan.
+        int[] keys = new int[] { 0,
+                // 1
+        };
+
+        AbstractOperatorDescriptor grouper;
+
+        if (alg.equalsIgnoreCase("hash")) {// external hash graph
+            grouper = new ExternalGroupOperatorDescriptor(spec, htSize, fileSize, keys, frameLimit,
+                    new IBinaryComparatorFactory[] {
+                            // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
+                            PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
+                    new IntegerNormalizedKeyComputerFactory(),
+                    new MultiFieldsAggregatorFactory(
+                            new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(false) }),
+                    new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                            new IntSumFieldAggregatorFactory(keys.length, false) }),
+                    outDesc, outDesc, new HashSpillableTableFactory(
+                            new IBinaryHashFunctionFamily[] { MurmurHash3BinaryHashFunctionFamily.INSTANCE }));
+
+            createPartitionConstraint(spec, grouper, outSplits);
+        } else if (alg.equalsIgnoreCase("sort")) {
+            grouper = new SortGroupByOperatorDescriptor(spec, frameLimit, keys, keys,
+                    new IntegerNormalizedKeyComputerFactory(),
+                    new IBinaryComparatorFactory[] {
+                            // PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY),
+                            PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY) },
+                    new MultiFieldsAggregatorFactory(
+                            new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(true) }),
+                    new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                            new IntSumFieldAggregatorFactory(keys.length, true) }),
+                    outDesc, outDesc, false);
+
+            createPartitionConstraint(spec, grouper, outSplits);
+        } else {
+            System.err.println("unknow groupby alg:" + alg);
+            return null;
+        }
+        // Connect scanner with the grouper
+        IConnectorDescriptor scanGroupConnDef2 = new MToNPartitioningConnectorDescriptor(spec,
+                new FieldHashPartitionComputerFactory(keys,
+                        new IBinaryHashFunctionFactory[] {
+                                // PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY),
+                                PointableBinaryHashFunctionFactory.of(IntegerPointable.FACTORY) }));
+        spec.connect(scanGroupConnDef2, fileScanner, 0, grouper, 0);
+
+        IFileSplitProvider outSplitProvider = new ConstantFileSplitProvider(outSplits);
+
+        AbstractSingleActivityOperatorDescriptor writer;
+
+        if (outPlain)
+            writer = new PlainFileWriterOperatorDescriptor(spec, outSplitProvider, "|");
+        else
+            writer = new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
+
+        createPartitionConstraint(spec, writer, outSplits);
+
+        IConnectorDescriptor groupOutConn = new OneToOneConnectorDescriptor(spec);
+        spec.connect(groupOutConn, grouper, 0, writer, 0);
+
+        spec.addRoot(writer);
+        return spec;
+    }
+
+}
\ No newline at end of file
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Join.java b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Join.java
index dadb935..507e1c7 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Join.java
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Join.java
@@ -18,26 +18,22 @@
  */
 package org.apache.hyracks.examples.tpch.client;
 
-import static org.apache.hyracks.examples.tpch.client.Common.*;
+import static org.apache.hyracks.examples.tpch.client.Common.createPartitionConstraint;
+import static org.apache.hyracks.examples.tpch.client.Common.custParserFactories;
+import static org.apache.hyracks.examples.tpch.client.Common.orderParserFactories;
+import static org.apache.hyracks.examples.tpch.client.Common.parseFileSplits;
 
 import java.util.EnumSet;
 
-import org.kohsuke.args4j.CmdLineParser;
-import org.kohsuke.args4j.Option;
-
 import org.apache.hyracks.api.client.HyracksConnection;
 import org.apache.hyracks.api.client.IHyracksClientConnection;
-import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 import org.apache.hyracks.api.constraints.PartitionConstraintHelper;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IConnectorDescriptor;
 import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFactory;
+import org.apache.hyracks.api.dataflow.value.IBinaryHashFunctionFamily;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.ITuplePairComparator;
-import org.apache.hyracks.api.dataflow.value.ITuplePairComparatorFactory;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.JobFlag;
@@ -45,11 +41,11 @@
 import org.apache.hyracks.api.job.JobSpecification;
 import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
 import org.apache.hyracks.data.std.accessors.PointableBinaryHashFunctionFactory;
+import org.apache.hyracks.data.std.accessors.UTF8StringBinaryHashFunctionFamily;
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.parsers.IValueParserFactory;
-import org.apache.hyracks.dataflow.common.data.parsers.UTF8StringParserFactory;
+import org.apache.hyracks.dataflow.common.data.normalizers.UTF8StringNormalizedKeyComputerFactory;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
 import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
@@ -57,16 +53,21 @@
 import org.apache.hyracks.dataflow.std.file.DelimitedDataTupleParserFactory;
 import org.apache.hyracks.dataflow.std.file.FileScanOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.file.FileSplit;
-import org.apache.hyracks.dataflow.std.file.FrameFileWriterOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
+import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.HashSpillableTableFactory;
 import org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory;
-import org.apache.hyracks.dataflow.std.group.aggregators.CountFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.FloatSumFieldAggregatorFactory;
+import org.apache.hyracks.dataflow.std.group.aggregators.IntSumFieldAggregatorFactory;
 import org.apache.hyracks.dataflow.std.group.aggregators.MultiFieldsAggregatorFactory;
-import org.apache.hyracks.dataflow.std.group.hash.HashGroupOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.group.external.ExternalGroupOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.join.GraceHashJoinOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.join.HybridHashJoinOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.join.InMemoryHashJoinOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.join.JoinComparatorFactory;
 import org.apache.hyracks.dataflow.std.join.NestedLoopJoinOperatorDescriptor;
+import org.apache.hyracks.dataflow.std.join.OptimizedHybridHashJoinOperatorDescriptor;
+import org.kohsuke.args4j.CmdLineParser;
+import org.kohsuke.args4j.Option;
 
 public class Join {
     private static class Options {
@@ -91,23 +92,23 @@
         @Option(name = "-profile", usage = "Enable/Disable profiling. (default: enabled)")
         public boolean profile = true;
 
-        @Option(name = "-table-size", usage = "Table size for in-memory hash join", required = false)
+        @Option(name = "-table-size", usage = "Table size for in-memory hash join. (default: 8191)", required = false)
         public int tableSize = 8191;
 
-        @Option(name = "-algo", usage = "Join types", required = true)
+        @Option(name = "-algo", usage = "Join types:InMem|NestedLoop|Hybrid|Grace", required = true)
         public String algo;
 
         // For grace/hybrid hash join only
         @Option(name = "-mem-size", usage = "Memory size for hash join", required = true)
         public int memSize;
 
-        @Option(name = "-input-size", usage = "Input size of the grace/hybrid hash join", required = false)
-        public int graceInputSize = 10;
+        @Option(name = "-input-size", usage = "Input size of the hybrid hash join", required = false)
+        public int graceInputSize = 100000;
 
-        @Option(name = "-records-per-frame", usage = "Records per frame for grace/hybrid hash join", required = false)
+        @Option(name = "-records-per-frame", usage = "Records per frame for hybrid hash join", required = false)
         public int graceRecordsPerFrame = 200;
 
-        @Option(name = "-grace-factor", usage = "Factor of the grace/hybrid hash join", required = false)
+        @Option(name = "-grace-factor", usage = "Factor of the grace/hybrid hash join, (default:1.2)", required = false)
         public double graceFactor = 1.2;
 
         // Whether group-by is processed after the join
@@ -121,6 +122,10 @@
     public static void main(String[] args) throws Exception {
         Options options = new Options();
         CmdLineParser parser = new CmdLineParser(options);
+        if (args.length == 0) {
+            parser.printUsage(System.err);
+            return;
+        }
         parser.parseArgument(args);
 
         IHyracksClientConnection hcc = new HyracksConnection(options.host, options.port);
@@ -129,6 +134,9 @@
                 parseFileSplits(options.inFileOrderSplits), parseFileSplits(options.outFileSplits),
                 options.numJoinPartitions, options.algo, options.graceInputSize, options.graceRecordsPerFrame,
                 options.graceFactor, options.memSize, options.tableSize, options.hasGroupBy, options.frameSize);
+        if (job == null) {
+            return;
+        }
 
         long start = System.currentTimeMillis();
         JobId jobId = hcc.startJob(job,
@@ -141,87 +149,76 @@
     private static JobSpecification createJob(FileSplit[] customerSplits, FileSplit[] orderSplits,
             FileSplit[] resultSplits, int numJoinPartitions, String algo, int graceInputSize, int graceRecordsPerFrame,
             double graceFactor, int memSize, int tableSize, boolean hasGroupBy, int frameSize)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         JobSpecification spec = new JobSpecification(frameSize);
 
         IFileSplitProvider custSplitsProvider = new ConstantFileSplitProvider(customerSplits);
+        long custFileSize = 0;
+        for (int i = 0; i < customerSplits.length; i++) {
+            custFileSize += customerSplits[i].getLocalFile().getFile().length();
+        }
 
         IFileSplitProvider ordersSplitsProvider = new ConstantFileSplitProvider(orderSplits);
+        long orderFileSize = 0;
+        for (int i = 0; i < orderSplits.length; i++) {
+            orderFileSize += orderSplits[i].getLocalFile().getFile().length();
+        }
 
         FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE }, '|'), Common.ordersDesc);
+                new DelimitedDataTupleParserFactory(orderParserFactories, '|'), Common.ordersDesc);
         createPartitionConstraint(spec, ordScanner, orderSplits);
 
         FileScanOperatorDescriptor custScanner = new FileScanOperatorDescriptor(spec, custSplitsProvider,
-                new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE,
-                        UTF8StringParserFactory.INSTANCE }, '|'), Common.custDesc);
+                new DelimitedDataTupleParserFactory(custParserFactories, '|'), Common.custDesc);
         createPartitionConstraint(spec, custScanner, customerSplits);
 
         IOperatorDescriptor join;
 
         if ("nestedloop".equalsIgnoreCase(algo)) {
-            join = new NestedLoopJoinOperatorDescriptor(spec, new JoinComparatorFactory(
-                    PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1), Common.custOrderJoinDesc,
-                    memSize, false, null);
+            join = new NestedLoopJoinOperatorDescriptor(spec,
+                    new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
+                    Common.custOrderJoinDesc, memSize, false, null);
 
-        } else if ("gracehash".equalsIgnoreCase(algo)) {
-            join = new GraceHashJoinOperatorDescriptor(
-                    spec,
-                    memSize,
-                    graceInputSize,
-                    graceRecordsPerFrame,
-                    graceFactor,
-                    new int[] { 0 },
-                    new int[] { 1 },
-                    new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                            .of(UTF8StringPointable.FACTORY) },
+        } else if ("inmem".equalsIgnoreCase(algo)) {
+            join = new InMemoryHashJoinOperatorDescriptor(spec, new int[] { 0 }, new int[] { 1 },
+                    new IBinaryHashFunctionFactory[] {
+                            PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) },
                     new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                    Common.custOrderJoinDesc, null);
+                    Common.custOrderJoinDesc, tableSize, null);
 
-        } else if ("hybridhash".equalsIgnoreCase(algo)) {
-            join = new HybridHashJoinOperatorDescriptor(
-                    spec,
-                    memSize,
-                    graceInputSize,
-                    graceRecordsPerFrame,
-                    graceFactor,
-                    new int[] { 0 },
-                    new int[] { 1 },
-                    new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                            .of(UTF8StringPointable.FACTORY) },
+        } else if ("hybrid".equalsIgnoreCase(algo)) {
+            join = new OptimizedHybridHashJoinOperatorDescriptor(spec, memSize, graceInputSize, graceFactor,
+                    new int[] { 0 }, new int[] { 1 },
+                    new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE },
+                    new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
+                    Common.custOrderJoinDesc,
+                    new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 0, 1),
+                    new JoinComparatorFactory(PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY), 1, 0),
+                    null);
+
+        } else if ("grace".equalsIgnoreCase(algo)) {
+            join = new GraceHashJoinOperatorDescriptor(spec, memSize, graceInputSize, graceRecordsPerFrame, graceFactor,
+                    new int[] { 0 }, new int[] { 1 },
+                    new IBinaryHashFunctionFactory[] {
+                            PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) },
                     new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
                     Common.custOrderJoinDesc, null);
 
         } else {
-            join = new InMemoryHashJoinOperatorDescriptor(
-                    spec,
-                    new int[] { 0 },
-                    new int[] { 1 },
-                    new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                            .of(UTF8StringPointable.FACTORY) },
-                    new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                    Common.custOrderJoinDesc, 6000000, null);
+            System.err.println("unknown algorithm:" + algo);
+            return null;
         }
 
         PartitionConstraintHelper.addPartitionCountConstraint(spec, join, numJoinPartitions);
 
         IConnectorDescriptor ordJoinConn = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(new int[] { 1 },
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(new int[] { 1 }, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(ordJoinConn, ordScanner, 0, join, 1);
 
         IConnectorDescriptor custJoinConn = new MToNPartitioningConnectorDescriptor(spec,
-                new FieldHashPartitionComputerFactory(new int[] { 0 },
-                        new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                .of(UTF8StringPointable.FACTORY) }));
+                new FieldHashPartitionComputerFactory(new int[] { 0 }, new IBinaryHashFunctionFactory[] {
+                        PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
         spec.connect(custJoinConn, custScanner, 0, join, 0);
 
         IOperatorDescriptor endingOp = join;
@@ -229,31 +226,35 @@
         if (hasGroupBy) {
 
             RecordDescriptor groupResultDesc = new RecordDescriptor(new ISerializerDeserializer[] {
-                    UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE });
+                    new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE });
 
-            HashGroupOperatorDescriptor gby = new HashGroupOperatorDescriptor(
-                    spec,
-                    new int[] { 6 },
-                    new FieldHashPartitionComputerFactory(new int[] { 6 },
-                            new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                    .of(UTF8StringPointable.FACTORY) }),
+            ExternalGroupOperatorDescriptor gby = new ExternalGroupOperatorDescriptor(spec, tableSize,
+                    custFileSize + orderFileSize, new int[] { 6 }, memSize,
                     new IBinaryComparatorFactory[] { PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY) },
-                    new MultiFieldsAggregatorFactory(
-                            new IFieldAggregateDescriptorFactory[] { new CountFieldAggregatorFactory(true) }),
-                    groupResultDesc, 16);
+                    new UTF8StringNormalizedKeyComputerFactory(),
+                    new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                            new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(3, false),
+                            new FloatSumFieldAggregatorFactory(5, false) }),
+                    new MultiFieldsAggregatorFactory(new IFieldAggregateDescriptorFactory[] {
+                            new IntSumFieldAggregatorFactory(1, false), new IntSumFieldAggregatorFactory(2, false),
+                            new FloatSumFieldAggregatorFactory(3, false) }),
+                    groupResultDesc, groupResultDesc, new HashSpillableTableFactory(
+                            new IBinaryHashFunctionFamily[] { UTF8StringBinaryHashFunctionFamily.INSTANCE }));
+
             createPartitionConstraint(spec, gby, resultSplits);
 
             IConnectorDescriptor joinGroupConn = new MToNPartitioningConnectorDescriptor(spec,
-                    new FieldHashPartitionComputerFactory(new int[] { 6 },
-                            new IBinaryHashFunctionFactory[] { PointableBinaryHashFunctionFactory
-                                    .of(UTF8StringPointable.FACTORY) }));
+                    new FieldHashPartitionComputerFactory(new int[] { 6 }, new IBinaryHashFunctionFactory[] {
+                            PointableBinaryHashFunctionFactory.of(UTF8StringPointable.FACTORY) }));
             spec.connect(joinGroupConn, join, 0, gby, 0);
 
             endingOp = gby;
         }
 
         IFileSplitProvider outSplitProvider = new ConstantFileSplitProvider(resultSplits);
-        FrameFileWriterOperatorDescriptor writer = new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
+        //FrameFileWriterOperatorDescriptor writer = new FrameFileWriterOperatorDescriptor(spec, outSplitProvider);
+        IOperatorDescriptor writer = new PlainFileWriterOperatorDescriptor(spec, outSplitProvider, "|");
+
         createPartitionConstraint(spec, writer, resultSplits);
 
         IConnectorDescriptor endingPrinterConn = new OneToOneConnectorDescriptor(spec);
@@ -262,63 +263,4 @@
         spec.addRoot(writer);
         return spec;
     }
-
-
-
-    static class JoinComparatorFactory implements ITuplePairComparatorFactory {
-        private static final long serialVersionUID = 1L;
-
-        private final IBinaryComparatorFactory bFactory;
-        private final int pos0;
-        private final int pos1;
-
-        public JoinComparatorFactory(IBinaryComparatorFactory bFactory, int pos0, int pos1) {
-            this.bFactory = bFactory;
-            this.pos0 = pos0;
-            this.pos1 = pos1;
-        }
-
-        @Override
-        public ITuplePairComparator createTuplePairComparator(IHyracksTaskContext ctx) {
-            return new JoinComparator(bFactory.createBinaryComparator(), pos0, pos1);
-        }
-    }
-
-    static class JoinComparator implements ITuplePairComparator {
-
-        private final IBinaryComparator bComparator;
-        private final int field0;
-        private final int field1;
-
-        public JoinComparator(IBinaryComparator bComparator, int field0, int field1) {
-            this.bComparator = bComparator;
-            this.field0 = field0;
-            this.field1 = field1;
-        }
-
-        @Override
-        public int compare(IFrameTupleAccessor accessor0, int tIndex0, IFrameTupleAccessor accessor1, int tIndex1)
-                throws HyracksDataException {
-            int tStart0 = accessor0.getTupleStartOffset(tIndex0);
-            int fStartOffset0 = accessor0.getFieldSlotsLength() + tStart0;
-
-            int tStart1 = accessor1.getTupleStartOffset(tIndex1);
-            int fStartOffset1 = accessor1.getFieldSlotsLength() + tStart1;
-
-            int fStart0 = accessor0.getFieldStartOffset(tIndex0, field0);
-            int fEnd0 = accessor0.getFieldEndOffset(tIndex0, field0);
-            int fLen0 = fEnd0 - fStart0;
-
-            int fStart1 = accessor1.getFieldStartOffset(tIndex1, field1);
-            int fEnd1 = accessor1.getFieldEndOffset(tIndex1, field1);
-            int fLen1 = fEnd1 - fStart1;
-
-            int c = bComparator.compare(accessor0.getBuffer().array(), fStart0 + fStartOffset0, fLen0, accessor1
-                    .getBuffer().array(), fStart1 + fStartOffset1, fLen1);
-            if (c != 0) {
-                return c;
-            }
-            return 0;
-        }
-    }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Sort.java b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Sort.java
index f2dd519..28e6dd9 100644
--- a/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Sort.java
+++ b/hyracks/hyracks-examples/tpch-example/tpchclient/src/main/java/org/apache/hyracks/examples/tpch/client/Sort.java
@@ -42,6 +42,7 @@
 import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.dataflow.common.data.normalizers.UTF8StringNormalizedKeyComputerFactory;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
+import org.apache.hyracks.dataflow.std.buffermanager.EnumFreeSlotPolicy;
 import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningMergingConnectorDescriptor;
 import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
 import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider;
@@ -54,7 +55,6 @@
 import org.apache.hyracks.dataflow.std.sort.Algorithm;
 import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
 import org.apache.hyracks.dataflow.std.sort.TopKSorterOperatorDescriptor;
-import org.apache.hyracks.dataflow.std.sort.buffermanager.EnumFreeSlotPolicy;
 
 public class Sort {
     private static class Options {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/pom.xml
index 0dae3be..4804393 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-1.x/pom.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0"?>
 <!--
  ! Licensed to the Apache Software Foundation (ASF) under one
  ! or more contributor license agreements.  See the NOTICE file
@@ -30,20 +29,6 @@
 	<properties>
 			<root.dir>${basedir}/../../..</root.dir>
 	</properties>
-	<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>
-					<fork>true</fork>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
 
 	<profiles>
 		<profile>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/pom.xml
index 3b6d945..9d93aac 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-2.x/pom.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0"?>
 <!--
  ! Licensed to the Apache Software Foundation (ASF) under one
  ! or more contributor license agreements.  See the NOTICE file
@@ -30,20 +29,6 @@
 	<properties>
 			<root.dir>${basedir}/../../..</root.dir>
 	</properties>
-	<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>
-					<fork>true</fork>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
 
 	<profiles>
 		<profile>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml b/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
index 263d42a..cbda6f5 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/pom.xml
@@ -33,16 +33,6 @@
 	<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>
-					<fork>true</fork>
-				</configuration>
-			</plugin>
-			<plugin>
 				<artifactId>maven-clean-plugin</artifactId>
 				<version>2.5</version>
 				<configuration>
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java
index 49ee478..0e2e8df 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java
@@ -24,7 +24,7 @@
 
 /**
  * Users need to implement this interface to use the HDFSReadOperatorDescriptor.
- * 
+ *
  * @param <K>
  *            the key type
  * @param <V>
@@ -34,7 +34,7 @@
 
     /**
      * Initialize the key value parser.
-     * 
+     *
      * @param writer
      *            The hyracks writer for outputting data.
      * @throws HyracksDataException
@@ -53,7 +53,7 @@
     /**
      * Flush the residual tuples in the internal buffer to the writer.
      * This method is called in the close() of HDFSReadOperatorDescriptor.
-     * 
+     *
      * @param writer
      *            The hyracks writer for outputting data.
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java
index c0175a4..1cde639 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java
@@ -26,7 +26,7 @@
 
 /**
  * Users need to implement this interface to use the HDFSReadOperatorDescriptor.
- * 
+ *
  * @param <K>
  *            the key type
  * @param <V>
@@ -36,7 +36,7 @@
 
     /**
      * This method creates a key-value parser.
-     * 
+     *
      * @param ctx
      *            the IHyracksTaskContext
      * @return a key-value parser instance.
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java
index c617dff..9010378 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java
@@ -25,7 +25,7 @@
 
 /**
  * NC collections
- * 
+ *
  * @author yingyib
  */
 public interface INcCollectionBuilder {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java
index d153eef..f950750 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java
@@ -31,7 +31,7 @@
 
     /**
      * Initialize the the tuple writer.
-     * 
+     *
      * @param output
      *            The channel for output data.
      * @throws HyracksDataException
@@ -40,7 +40,7 @@
 
     /**
      * Write the tuple to the DataOutput.
-     * 
+     *
      * @param output
      *            the DataOutput channel
      * @param tuple
@@ -51,7 +51,7 @@
 
     /**
      * Close the writer.
-     * 
+     *
      * @param output
      *            The channel for output data.
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/ConfFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/ConfFactory.java
index ad6b0c9..3840167 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/ConfFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/ConfFactory.java
@@ -25,10 +25,8 @@
 import java.io.Serializable;
 
 import org.apache.hadoop.mapred.JobConf;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
-@SuppressWarnings("deprecation")
 public class ConfFactory implements Serializable {
     private static final long serialVersionUID = 1L;
     private byte[] confBytes;
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
index 0d06655..7b80157 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
@@ -26,7 +26,6 @@
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.RecordReader;
 import org.apache.hadoop.mapred.Reporter;
-
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
 import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
@@ -44,7 +43,7 @@
  * To use this operator, a user need to provide an IKeyValueParserFactory implementation which convert
  * key-value pairs into tuples.
  */
-@SuppressWarnings({ "deprecation", "rawtypes" })
+@SuppressWarnings({ "rawtypes" })
 public class HDFSReadOperatorDescriptor extends AbstractSingleActivityOperatorDescriptor {
 
     private static final long serialVersionUID = 1L;
@@ -56,7 +55,7 @@
 
     /**
      * The constructor of HDFSReadOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param rd
@@ -91,7 +90,7 @@
     @Override
     public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
             IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         final InputSplit[] inputSplits = splitsFactory.getSplits();
 
         return new AbstractUnaryOutputSourceOperatorNodePushable() {
@@ -102,46 +101,50 @@
             public void initialize() throws HyracksDataException {
                 ClassLoader ctxCL = Thread.currentThread().getContextClassLoader();
                 try {
+                    writer.open();
                     Thread.currentThread().setContextClassLoader(ctx.getJobletContext().getClassLoader());
                     JobConf conf = confFactory.getConf();
                     conf.setClassLoader(ctx.getJobletContext().getClassLoader());
                     IKeyValueParser parser = tupleParserFactory.createKeyValueParser(ctx);
-                    writer.open();
-                    parser.open(writer);
-                    InputFormat inputFormat = conf.getInputFormat();
-                    for (int i = 0; i < inputSplits.length; i++) {
-                        /**
-                         * read all the partitions scheduled to the current node
-                         */
-                        if (scheduledLocations[i].equals(nodeName)) {
+                    try {
+                        parser.open(writer);
+                        InputFormat inputFormat = conf.getInputFormat();
+                        for (int i = 0; i < inputSplits.length; i++) {
                             /**
-                             * pick an unread split to read
-                             * synchronize among simultaneous partitions in the same machine
+                             * read all the partitions scheduled to the current node
                              */
-                            synchronized (executed) {
-                                if (executed[i] == false) {
-                                    executed[i] = true;
-                                } else {
-                                    continue;
+                            if (scheduledLocations[i].equals(nodeName)) {
+                                /**
+                                 * pick an unread split to read
+                                 * synchronize among simultaneous partitions in the same machine
+                                 */
+                                synchronized (executed) {
+                                    if (executed[i] == false) {
+                                        executed[i] = true;
+                                    } else {
+                                        continue;
+                                    }
+                                }
+
+                                /**
+                                 * read the split
+                                 */
+                                RecordReader reader = inputFormat.getRecordReader(inputSplits[i], conf, Reporter.NULL);
+                                Object key = reader.createKey();
+                                Object value = reader.createValue();
+                                while (reader.next(key, value) == true) {
+                                    parser.parse(key, value, writer, inputSplits[i].toString());
                                 }
                             }
-
-                            /**
-                             * read the split
-                             */
-                            RecordReader reader = inputFormat.getRecordReader(inputSplits[i], conf, Reporter.NULL);
-                            Object key = reader.createKey();
-                            Object value = reader.createValue();
-                            while (reader.next(key, value) == true) {
-                                parser.parse(key, value, writer, inputSplits[i].toString());
-                            }
                         }
+                    } finally {
+                        parser.close(writer);
                     }
-                    parser.close(writer);
-                    writer.close();
-                } catch (Exception e) {
-                    throw new HyracksDataException(e);
+                } catch (Throwable th) {
+                    writer.fail();
+                    throw new HyracksDataException(th);
                 } finally {
+                    writer.close();
                     Thread.currentThread().setContextClassLoader(ctxCL);
                 }
             }
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
index 7f9ae8d..e7a3111 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
@@ -55,7 +55,7 @@
 
     /**
      * The constructor of HDFSWriteOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param conf
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
index 645adef..927eb54 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
@@ -29,10 +29,9 @@
 
 import org.apache.hadoop.mapred.FileSplit;
 import org.apache.hadoop.mapred.InputSplit;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
-@SuppressWarnings({ "deprecation", "rawtypes" })
+@SuppressWarnings({ "rawtypes" })
 public class InputSplitsFactory implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -54,7 +53,7 @@
 
     /**
      * Convert splits to bytes.
-     * 
+     *
      * @param splits
      *            input splits
      * @return bytes which serialize the splits
@@ -77,7 +76,7 @@
 
     /**
      * Covert bytes to splits.
-     * 
+     *
      * @param bytes
      * @return
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryHashFunctionFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryHashFunctionFactory.java
index 133bbea..047bbec 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryHashFunctionFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryHashFunctionFactory.java
@@ -44,4 +44,4 @@
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextKeyValueParserFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextKeyValueParserFactory.java
index 3e0bb14..f6bf66c 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextKeyValueParserFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/TextKeyValueParserFactory.java
@@ -60,7 +60,7 @@
 
             @Override
             public void close(IFrameWriter writer) throws HyracksDataException {
-                appender.flush(writer, false);
+                appender.write(writer, false);
             }
 
         };
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
index fa6ed72..2d1c87a 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
@@ -34,7 +34,6 @@
 
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.mapred.InputSplit;
-
 import org.apache.hyracks.api.client.HyracksConnection;
 import org.apache.hyracks.api.client.IHyracksClientConnection;
 import org.apache.hyracks.api.client.NodeControllerInfo;
@@ -48,7 +47,6 @@
  * The scheduler conduct data-local scheduling for data reading on HDFS. This
  * class works for Hadoop old API.
  */
-@SuppressWarnings("deprecation")
 public class Scheduler {
     private static final Logger LOGGER = Logger.getLogger(Scheduler.class.getName());
 
@@ -71,10 +69,11 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
+
     public Scheduler(String ipAddress, int port) throws HyracksException {
         try {
             IHyracksClientConnection hcc = new HyracksConnection(ipAddress, port);
@@ -90,7 +89,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
@@ -107,7 +106,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -120,14 +119,15 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @param topology
      *            the hyracks cluster toplogy
      * @throws HyracksException
      */
-    public Scheduler(Map<String, NodeControllerInfo> ncNameToNcInfos, ClusterTopology topology) throws HyracksException {
+    public Scheduler(Map<String, NodeControllerInfo> ncNameToNcInfos, ClusterTopology topology)
+            throws HyracksException {
         this(ncNameToNcInfos);
         this.ncCollectionBuilder = topology == null ? new IPProximityNcCollectionBuilder()
                 : new RackAwareNcCollectionBuilder(topology);
@@ -135,7 +135,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -151,7 +151,7 @@
      * Set location constraints for a file scan operator with a list of file
      * splits. It guarantees the maximum slots a machine can is at most one more
      * than the minimum slots a machine can get.
-     * 
+     *
      * @throws HyracksDataException
      */
     public String[] getLocationConstraints(InputSplit[] splits) throws HyracksException {
@@ -215,7 +215,7 @@
 
     /**
      * Schedule non-local slots to each machine
-     * 
+     *
      * @param splits
      *            The HDFS file splits.
      * @param workloads
@@ -257,7 +257,7 @@
 
     /**
      * Schedule data-local slots to each machine.
-     * 
+     *
      * @param splits
      *            The HDFS file splits.
      * @param workloads
@@ -274,8 +274,8 @@
      * @throws UnknownHostException
      */
     private void scheduleLocalSlots(InputSplit[] splits, int[] workloads, String[] locations, int slots, Random random,
-            boolean[] scheduled, final Map<String, IntWritable> locationToNumSplits) throws IOException,
-            UnknownHostException {
+            boolean[] scheduled, final Map<String, IntWritable> locationToNumSplits)
+                    throws IOException, UnknownHostException {
         /** scheduling candidates will be ordered inversely according to their popularity */
         PriorityQueue<String> scheduleCadndiates = new PriorityQueue<String>(3, new Comparator<String>() {
 
@@ -344,7 +344,7 @@
 
     /**
      * Scan the splits once and build a popularity map
-     * 
+     *
      * @param splits
      *            the split array
      * @param locationToNumOfSplits
@@ -368,7 +368,7 @@
 
     /**
      * Load the IP-address-to-NC map from the NCNameToNCInfoMap
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
index fe7eb4b..ef95ee8 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
@@ -53,7 +53,7 @@
 
     /**
      * Convert splits to bytes.
-     * 
+     *
      * @param splits
      *            input splits
      * @return bytes which serialize the splits
@@ -77,7 +77,7 @@
 
     /**
      * Covert bytes to splits.
-     * 
+     *
      * @param bytes
      * @return
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
index 28c6cfe..7424b7d 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
@@ -30,7 +30,6 @@
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.lib.input.FileSplit;
 import org.apache.hadoop.util.ReflectionUtils;
-
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
 import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
@@ -61,7 +60,7 @@
 
     /**
      * The constructor of HDFSReadOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param rd
@@ -104,7 +103,7 @@
     @Override
     public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx,
             IRecordDescriptorProvider recordDescProvider, final int partition, final int nPartitions)
-            throws HyracksDataException {
+                    throws HyracksDataException {
         final List<FileSplit> inputSplits = splitsFactory.getSplits();
 
         return new AbstractUnaryOutputSourceOperatorNodePushable() {
@@ -116,11 +115,11 @@
             public void initialize() throws HyracksDataException {
                 ClassLoader ctxCL = Thread.currentThread().getContextClassLoader();
                 try {
+                    writer.open();
                     Thread.currentThread().setContextClassLoader(ctx.getJobletContext().getClassLoader());
                     Job job = confFactory.getConf();
                     job.getConfiguration().setClassLoader(ctx.getJobletContext().getClassLoader());
                     IKeyValueParser parser = tupleParserFactory.createKeyValueParser(ctx);
-                    writer.open();
                     InputFormat inputFormat = ReflectionUtils.newInstance(job.getInputFormatClass(),
                             job.getConfiguration());
                     int size = inputSplits.size();
@@ -155,10 +154,11 @@
                         }
                     }
                     parser.close(writer);
-                    writer.close();
-                } catch (Exception e) {
-                    throw new HyracksDataException(e);
+                } catch (Throwable th) {
+                    writer.fail();
+                    throw new HyracksDataException(th);
                 } finally {
+                    writer.close();
                     Thread.currentThread().setContextClassLoader(ctxCL);
                 }
             }
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
index f17b3bc..c27e4ec 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
@@ -54,7 +54,7 @@
 
     /**
      * The constructor of HDFSWriteOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param conf
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
index d9333d5..97960bc 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
@@ -41,7 +41,7 @@
 
     /**
      * The constructor of the scheduler
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
@@ -51,7 +51,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -62,7 +62,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @param topology
@@ -75,7 +75,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -87,7 +87,7 @@
 
     /**
      * Set location constraints for a file scan operator with a list of file splits
-     * 
+     *
      * @throws HyracksDataException
      */
     public String[] getLocationConstraints(List<InputSplit> splits) throws HyracksException {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java
index e36dd06..c5ca25e 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java
@@ -99,7 +99,7 @@
 
     /**
      * Start the HDFS cluster and setup the data files
-     * 
+     *
      * @throws IOException
      */
     private void startHDFS() throws IOException {
@@ -127,7 +127,7 @@
 
     /**
      * Test a job with only HDFS read and writes.
-     * 
+     *
      * @throws Exception
      */
     public void testHDFSReadWriteOperators() throws Exception {
@@ -141,7 +141,7 @@
         String[] readSchedule = scheduler.getLocationConstraints(splits);
         JobSpecification jobSpec = new JobSpecification();
         RecordDescriptor recordDesc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         String[] locations = new String[] { HyracksUtils.NC1_ID, HyracksUtils.NC1_ID, HyracksUtils.NC2_ID,
                 HyracksUtils.NC2_ID };
@@ -174,7 +174,7 @@
 
     /**
      * Check if the results are correct
-     * 
+     *
      * @return true if correct
      * @throws Exception
      */
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java
index 1374178..373fe21 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java
@@ -56,7 +56,7 @@
 
     /**
      * Test the scheduler for the case when the Hyracks cluster is the HDFS cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSimple() throws Exception {
@@ -94,7 +94,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerLargerHDFS() throws Exception {
@@ -141,7 +141,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFS() throws Exception {
@@ -187,7 +187,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFSOdd() throws Exception {
@@ -235,7 +235,7 @@
 
     /**
      * Test boundary cases where splits array is empty or null
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulercBoundary() throws Exception {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java
index a703e57..fb6f32e 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java
@@ -104,7 +104,7 @@
 
     /**
      * Start the HDFS cluster and setup the data files
-     * 
+     *
      * @throws IOException
      */
     private void startHDFS() throws IOException {
@@ -132,7 +132,7 @@
 
     /**
      * Test a job with only HDFS read and writes.
-     * 
+     *
      * @throws Exception
      */
     @SuppressWarnings({ "rawtypes", "unchecked" })
@@ -148,7 +148,7 @@
         String[] readSchedule = scheduler.getLocationConstraints(splits);
         JobSpecification jobSpec = new JobSpecification();
         RecordDescriptor recordDesc = new RecordDescriptor(
-                new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+                new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
         String[] locations = new String[] { HyracksUtils.NC1_ID, HyracksUtils.NC1_ID, HyracksUtils.NC2_ID,
                 HyracksUtils.NC2_ID };
@@ -181,7 +181,7 @@
 
     /**
      * Check if the results are correct
-     * 
+     *
      * @return true if correct
      * @throws Exception
      */
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java
index 7f42a89..6eabb71 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java
@@ -43,7 +43,7 @@
 
     /**
      * Test the scheduler for the case when the Hyracks cluster is the HDFS cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSimple() throws Exception {
@@ -75,7 +75,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerLargerHDFS() throws Exception {
@@ -114,7 +114,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFS() throws Exception {
@@ -153,7 +153,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFSOdd() throws Exception {
diff --git a/hyracks/hyracks-hdfs/pom.xml b/hyracks/hyracks-hdfs/pom.xml
index 2da502f..8010ec6 100644
--- a/hyracks/hyracks-hdfs/pom.xml
+++ b/hyracks/hyracks-hdfs/pom.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
  ! Licensed to the Apache Software Foundation (ASF) under one
  ! or more contributor license agreements.  See the NOTICE file
diff --git a/hyracks/hyracks-ipc/pom.xml b/hyracks/hyracks-ipc/pom.xml
index 30f4d14..7472c9d 100644
--- a/hyracks/hyracks-ipc/pom.xml
+++ b/hyracks/hyracks-ipc/pom.xml
@@ -37,26 +37,12 @@
   </licenses>
 
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <properties>
       <root.dir>${basedir}/../..</root.dir>
   </properties>
   <dependencies>
     <dependency>
-      <!-- Dependency management inherited from top-level hyracks -->
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
index 43451a7..d66f233 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
@@ -30,6 +30,6 @@
     public void setAttachment(Object attachment);
 
     public Object getAttachment();
-    
+
     public boolean isConnected();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCI.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCI.java
index e1df0da..bfc46df 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCI.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCI.java
@@ -20,4 +20,4 @@
 
 public interface IIPCI {
     public void deliverIncomingMessage(IIPCHandle handle, long mid, long rmid, Object payload, Exception exception);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPCPerformanceCounters.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPCPerformanceCounters.java
index 2539354..e3d6318 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPCPerformanceCounters.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPCPerformanceCounters.java
@@ -67,4 +67,4 @@
     public void addMessageBytesReceived(long delta) {
         nMessageBytesReceived.addAndGet(delta);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java
index 5ee2f96..1d2c754 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IPayloadSerializerDeserializer.java
@@ -28,4 +28,4 @@
     public byte[] serializeObject(Object object) throws Exception;
 
     public byte[] serializeException(Exception object) throws Exception;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IResponseCallback.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IResponseCallback.java
index 54039e9..4328fc3 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IResponseCallback.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IResponseCallback.java
@@ -20,4 +20,4 @@
 
 public interface IResponseCallback {
     public void callback(IIPCHandle handle, Object response, Exception exception);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/RPCInterface.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/RPCInterface.java
index 7c7217d..aebe2f5 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/RPCInterface.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/RPCInterface.java
@@ -99,4 +99,4 @@
         }
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/exceptions/IPCException.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/exceptions/IPCException.java
index 1ac2ae8..61e036d 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/exceptions/IPCException.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/exceptions/IPCException.java
@@ -36,4 +36,4 @@
     public IPCException(Throwable cause) {
         super(cause);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HandleState.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HandleState.java
index b03e107..912c267 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HandleState.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/HandleState.java
@@ -25,4 +25,4 @@
     CONNECTED,
     CONNECT_FAILED,
     CLOSED,
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCConnectionManager.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCConnectionManager.java
index dd3d2f9..b03b7e0 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCConnectionManager.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCConnectionManager.java
@@ -64,6 +64,7 @@
     IPCConnectionManager(IPCSystem system, InetSocketAddress socketAddress) throws IOException {
         this.system = system;
         this.networkThread = new NetworkThread();
+        this.networkThread.setPriority(Thread.MAX_PRIORITY);
         this.serverSocketChannel = ServerSocketChannel.open();
         serverSocketChannel.socket().setReuseAddress(true);
         serverSocketChannel.configureBlocking(false);
@@ -114,8 +115,8 @@
                 }
             } else if (attempt < retries) {
                 if (LOGGER.isLoggable(Level.INFO)) {
-                    LOGGER.info("Connection to " + remoteAddress +
-                            " failed (Attempt " + attempt + " of " + retries + ")");
+                    LOGGER.info("Connection to " + remoteAddress + " failed (Attempt " + attempt + " of " + retries
+                            + ")");
                     attempt++;
                     Thread.sleep(5000);
                 }
@@ -308,8 +309,7 @@
                                     if (!channel.finishConnect()) {
                                         throw new Exception("Connection did not finish");
                                     }
-                                }
-                                catch (Exception e) {
+                                } catch (Exception e) {
                                     e.printStackTrace();
                                     handle.setState(HandleState.CONNECT_FAILED);
                                     continue;
@@ -344,4 +344,4 @@
         }
         source.clear();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
index 90e3823..1fcdb3c 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCHandle.java
@@ -192,4 +192,4 @@
     boolean full() {
         return full;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
index 794af9b..62be1b0 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
@@ -72,7 +72,7 @@
             throw new IPCException(e);
         }
     }
-    
+
     IPayloadSerializerDeserializer getSerializerDeserializer() {
         return serde;
     }
@@ -102,4 +102,4 @@
     public IPCPerformanceCounters getPerformanceCounters() {
         return perfCounters;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java
index 58af123..2c1f0dc 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/JavaSerializationBasedPayloadSerializerDeserializer.java
@@ -68,4 +68,4 @@
         baos.close();
         return baos.toByteArray();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java
index 38476f7..1f3f0c3 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/Message.java
@@ -128,4 +128,4 @@
     public String toString() {
         return "MSG[" + messageId + ":" + requestMessageId + ":" + flag + ":" + payload + "]";
     }
-}
\ No newline at end of file
+}
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 a5ec421..8436412 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml
@@ -33,18 +33,4 @@
       <root.dir>${basedir}/../../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksMojo.java b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksMojo.java
index 66a68a1..f7e3801 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksMojo.java
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksMojo.java
@@ -105,4 +105,4 @@
         String commandExt = osName.startsWith("Windows") ? ".bat" : "";
         return scriptName + commandExt;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksServerMojo.java b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksServerMojo.java
index 25dbc89..edf59f1 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksServerMojo.java
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/AbstractHyracksServerMojo.java
@@ -31,4 +31,4 @@
      * @parameter
      */
     protected File workingDir;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksServiceRegistry.java b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksServiceRegistry.java
index 490fbff..2183246 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksServiceRegistry.java
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksServiceRegistry.java
@@ -49,4 +49,4 @@
         }
         serviceProcesses.clear();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksStopServicesMojo.java b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksStopServicesMojo.java
index 927628c..3594c52 100644
--- a/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksStopServicesMojo.java
+++ b/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/src/main/java/org/apache/hyracks/maven/plugin/HyracksStopServicesMojo.java
@@ -30,4 +30,4 @@
         getLog().info("Stopping Hyracks Services");
         HyracksServiceRegistry.INSTANCE.destroyAll();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/pom.xml b/hyracks/hyracks-net/pom.xml
index f8db1c4..9aa83ffe 100644
--- a/hyracks/hyracks-net/pom.xml
+++ b/hyracks/hyracks-net/pom.xml
@@ -40,23 +40,9 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
     <dependency>
-      <!-- Dependency management inherited from top-level hyracks -->
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java
index fb75b85..d7febd2 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java
@@ -22,14 +22,14 @@
 
 /**
  * Accepts buffers.
- * 
+ *
  * @author vinayakb
  */
 public interface IBufferAcceptor {
     /**
      * Accept a buffer.
-     * 
+     *
      * @param buffer
      */
     public void accept(ByteBuffer buffer);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java
index e915ab0..1697cfd 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java
@@ -21,7 +21,7 @@
 /**
  * A buffer acceptor that can be closed to indicate end of transmission or an error code
  * specified to indicate an error in transmission.
- * 
+ *
  * @author vinayakb
  */
 public interface ICloseableBufferAcceptor extends IBufferAcceptor {
@@ -32,9 +32,9 @@
 
     /**
      * Indicate that an error occurred.
-     * 
+     *
      * @param ecode
      *            - the error code.
      */
     public void error(int ecode);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/exceptions/NetException.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/exceptions/NetException.java
index 2ef5f27..659e6b5 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/exceptions/NetException.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/exceptions/NetException.java
@@ -35,4 +35,4 @@
     public NetException(Throwable cause) {
         super(cause);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
index 0da117f..6d82297 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
@@ -34,7 +34,7 @@
 
 /**
  * Handle to a channel that represents a logical full-duplex communication end-point.
- * 
+ *
  * @author vinayakb
  */
 public class ChannelControlBlock {
@@ -73,7 +73,7 @@
 
     /**
      * Get the read inderface of this channel.
-     * 
+     *
      * @return the read interface.
      */
     public IChannelReadInterface getReadInterface() {
@@ -82,7 +82,7 @@
 
     /**
      * Get the write interface of this channel.
-     * 
+     *
      * @return the write interface.
      */
     public IChannelWriteInterface getWriteInterface() {
@@ -402,4 +402,4 @@
                 + " remoteClose: " + remoteClose + " remoteCloseAck:" + remoteCloseAck + " readCredits: " + ri.credits
                 + " writeCredits: " + wi.credits + "]";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java
index 7a32170..1631f98 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java
@@ -20,15 +20,15 @@
 
 /**
  * Callback interface to report opening of channels.
- * 
+ *
  * @author vinayakb
  */
 public interface IChannelOpenListener {
     /**
      * Indicates that a remote endpoint has opened a channel to this receiver.
-     * 
+     *
      * @param channel
      *            - The newly opened channel.
      */
     public void channelOpened(ChannelControlBlock channel);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java
index 4176192..8639fb7 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java
@@ -23,14 +23,14 @@
 
 /**
  * Represents the read interface of a {@link ChannelControlBlock}.
- * 
+ *
  * @author vinayakb
  */
 public interface IChannelReadInterface {
     /**
      * Set the callback that will be invoked by the network layer when a buffer has been
      * filled with data received from the remote side.
-     * 
+     *
      * @param fullBufferAcceptor
      *            - the full buffer acceptor.
      */
@@ -39,7 +39,7 @@
     /**
      * Get the acceptor that collects empty buffers when the client has finished consuming
      * a previously full buffer.
-     * 
+     *
      * @return the empty buffer acceptor.
      */
     public IBufferAcceptor getEmptyBufferAcceptor();
@@ -47,7 +47,7 @@
     /**
      * Set the buffer factory which is in charge of creating buffers if the request does not
      * make the number of allocated buffers goes beyond limit
-     * 
+     *
      * @param bufferFactory
      *            - the buffer factory
      * @param limit
@@ -56,4 +56,4 @@
      *            - the size of each buffer
      */
     public void setBufferFactory(IBufferFactory bufferFactory, int limit, int frameSize);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java
index 482cb21..dc38ea4 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java
@@ -23,14 +23,14 @@
 
 /**
  * Represents the write interface of a {@link ChannelControlBlock}.
- * 
+ *
  * @author vinayakb
  */
 public interface IChannelWriteInterface {
     /**
      * Set the callback interface that must be invoked when a full buffer has been emptied by
      * writing the data to the remote end.
-     * 
+     *
      * @param emptyBufferAcceptor
      *            - the empty buffer acceptor.
      */
@@ -39,7 +39,7 @@
     /**
      * Get the full buffer acceptor that accepts buffers filled with data that need to be written
      * to the remote end.
-     * 
+     *
      * @return the full buffer acceptor.
      */
     public ICloseableBufferAcceptor getFullBufferAcceptor();
@@ -47,7 +47,7 @@
     /**
      * Set the buffer factory which is in charge of creating buffers if the request does not
      * make the number of allocated buffers goes beyond limit
-     * 
+     *
      * @param bufferFactory
      *            - the buffer factory
      * @param limit
@@ -56,4 +56,4 @@
      *            - the size of each buffer
      */
     public void setBufferFactory(IBufferFactory bufferFactory, int limit, int frameSize);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IEventCounter.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IEventCounter.java
index 403685b..88bfc78 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IEventCounter.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IEventCounter.java
@@ -22,4 +22,4 @@
     public void increment();
 
     public void decrement();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java
index 65ab8d5..866f2c6 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java
@@ -33,7 +33,7 @@
 /**
  * A {@link MultiplexedConnection} can be used by clients to create multiple "channels"
  * that can have independent full-duplex conversations.
- * 
+ *
  * @author vinayakb
  */
 public class MultiplexedConnection implements ITCPConnectionEventListener {
@@ -140,7 +140,7 @@
 
     /**
      * Open a channel to the other side.
-     * 
+     *
      * @return
      * @throws NetException
      *             - A network failure occurred.
@@ -414,4 +414,4 @@
             readerState.reset();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java
index 7472686..0ea7b13 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java
@@ -32,7 +32,7 @@
  * Multiplexed Connection Manager.
  * Every participant that wants to use the multiplexed connections must create and instance
  * of this class.
- * 
+ *
  * @author vinayakb
  */
 public class MuxDemux {
@@ -50,7 +50,7 @@
 
     /**
      * Constructor.
-     * 
+     *
      * @param localAddress
      *            - TCP/IP socket address to listen on. Null for non-listening unidirectional sockets
      * @param listener
@@ -109,7 +109,7 @@
 
     /**
      * Starts listening for remote connections and is capable of initiating connections.
-     * 
+     *
      * @throws IOException
      */
     public void start() throws IOException {
@@ -119,7 +119,7 @@
     /**
      * Create a {@link MultiplexedConnection} that can create channels to the specified remote address.
      * The remote address must have a {@link MuxDemux} listening for connections.
-     * 
+     *
      * @param remoteAddress
      *            - Address of the remote {@link MuxDemux}
      * @return a {@link MultiplexedConnection} connected to the remote address.
@@ -148,7 +148,7 @@
 
     /**
      * Get the local address that this {@link MuxDemux} is listening for connections.
-     * 
+     *
      * @return local TCP/IP socket address.
      */
     public InetSocketAddress getLocalAddress() {
@@ -157,10 +157,10 @@
 
     /**
      * Gets performance counters useful for collecting efficiency metrics.
-     * 
+     *
      * @return
      */
     public MuxDemuxPerformanceCounters getPerformanceCounters() {
         return perfCounters;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxCommand.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxCommand.java
index 6d21e6d..b53cecf 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxCommand.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxCommand.java
@@ -90,4 +90,4 @@
     public String toString() {
         return channelId + ":" + type + ":" + data;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxPerformanceCounters.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxPerformanceCounters.java
index 8595c19..622ce8a 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxPerformanceCounters.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemuxPerformanceCounters.java
@@ -67,4 +67,4 @@
     public long getSignalingBytesWritten() {
         return signalingBytesWritten.get();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionEventListener.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionEventListener.java
index 94e557c..59b1fbb 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionEventListener.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionEventListener.java
@@ -27,4 +27,4 @@
             NetException;
 
     public void notifyIOError(Exception e);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java
index fed3689..9fe0421 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/ITCPConnectionListener.java
@@ -26,4 +26,4 @@
     public void connectionEstablished(TCPConnection connection);
 
     public void connectionFailure(InetSocketAddress remoteAddress);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPConnection.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPConnection.java
index 7f0a88c..ce0bbbe 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPConnection.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPConnection.java
@@ -94,4 +94,4 @@
             e.printStackTrace();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java
index 42e19f7..41e0dd2 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/tcp/TCPEndpoint.java
@@ -106,7 +106,7 @@
         public IOThread() throws IOException {
             super("TCPEndpoint IO Thread");
             setDaemon(true);
-            setPriority(MAX_PRIORITY);
+            setPriority(Thread.NORM_PRIORITY);
             this.pendingConnections = new ArrayList<InetSocketAddress>();
             this.workingPendingConnections = new ArrayList<InetSocketAddress>();
             this.incomingConnections = new ArrayList<SocketChannel>();
@@ -242,4 +242,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/test/java/org/apache/hyracks/net/tests/NetTest.java b/hyracks/hyracks-net/src/test/java/org/apache/hyracks/net/tests/NetTest.java
index e7d6e79..f1f3c4a 100644
--- a/hyracks/hyracks-net/src/test/java/org/apache/hyracks/net/tests/NetTest.java
+++ b/hyracks/hyracks-net/src/test/java/org/apache/hyracks/net/tests/NetTest.java
@@ -214,4 +214,4 @@
             };
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-server/pom.xml b/hyracks/hyracks-server/pom.xml
index 139999b..f2d7085 100644
--- a/hyracks/hyracks-server/pom.xml
+++ b/hyracks/hyracks-server/pom.xml
@@ -43,16 +43,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>appassembler-maven-plugin</artifactId>
         <version>1.3</version>
diff --git a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/drivers/VirtualClusterDriver.java b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/drivers/VirtualClusterDriver.java
index 6fcba92..41c14a7 100644
--- a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/drivers/VirtualClusterDriver.java
+++ b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/drivers/VirtualClusterDriver.java
@@ -79,4 +79,4 @@
             Thread.sleep(10000);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksCCProcess.java b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksCCProcess.java
index 6371d69..d0d8d63 100644
--- a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksCCProcess.java
+++ b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksCCProcess.java
@@ -39,4 +39,4 @@
     protected String getMainClassName() {
         return CCDriver.class.getName();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksNCProcess.java b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksNCProcess.java
index ae67f19..c4517e6 100644
--- a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksNCProcess.java
+++ b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksNCProcess.java
@@ -39,4 +39,4 @@
     protected String getMainClassName() {
         return NCDriver.class.getName();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksServerProcess.java b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksServerProcess.java
index 78b9427..9dec0ec 100644
--- a/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksServerProcess.java
+++ b/hyracks/hyracks-server/src/main/java/org/apache/hyracks/server/process/HyracksServerProcess.java
@@ -86,4 +86,4 @@
     protected final String getJavaCommand() {
         return System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-bloomfilter/pom.xml b/hyracks/hyracks-storage-am-bloomfilter/pom.xml
index b703dba..77e9364 100644
--- a/hyracks/hyracks-storage-am-bloomfilter/pom.xml
+++ b/hyracks/hyracks-storage-am-bloomfilter/pom.xml
@@ -40,19 +40,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java
index fc91c42..5b387f4 100644
--- a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java
+++ b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java
@@ -93,7 +93,7 @@
     /**
      * Given the number of buckets that can be used per element, return a
      * specification that minimizes the false positive rate.
-     * 
+     *
      * @param bucketsPerElement
      *            The number of buckets per element for the filter.
      * @return A spec that minimizes the false positive rate.
@@ -111,7 +111,7 @@
      * functions used. Because bandwidth (and therefore total bitvector size)
      * is considered more expensive than computing power, preference is given
      * to minimizing buckets per element rather than number of hash functions.
-     * 
+     *
      * @param maxBucketsPerElement
      *            The maximum number of buckets available for the filter.
      * @param maxFalsePosProb
diff --git a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
index b62e483..ed65902 100644
--- a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
+++ b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java
@@ -28,6 +28,7 @@
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
@@ -73,7 +74,7 @@
 
     public int getNumPages() throws HyracksDataException {
         if (!isActivated) {
-            throw new HyracksDataException("The bloom filter is not activated.");
+            activate();
         }
         return numPages;
     }
@@ -141,17 +142,6 @@
             throw new HyracksDataException("Failed to create the bloom filter since it is activated.");
         }
         prepareFile();
-        ICachedPage metaPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, METADATA_PAGE_ID), true);
-        metaPage.acquireWriteLatch();
-        try {
-            metaPage.getBuffer().putInt(NUM_PAGES_OFFSET, 0);
-            metaPage.getBuffer().putInt(NUM_HASHES_USED_OFFSET, 0);
-            metaPage.getBuffer().putLong(NUM_ELEMENTS_OFFSET, 0L);
-            metaPage.getBuffer().putLong(NUM_BITS_OFFSET, 0L);
-        } finally {
-            metaPage.releaseWriteLatch(true);
-            bufferCache.unpin(metaPage);
-        }
         bufferCache.closeFile(fileId);
     }
 
@@ -166,6 +156,13 @@
     }
 
     private void readBloomFilterMetaData() throws HyracksDataException {
+        if (bufferCache.getNumPagesOfFile(fileId) == 0) {
+            numPages = 0;
+            numHashes = 0;
+            numElements = 0;
+            numBits = 0;
+            return;
+        }
         ICachedPage metaPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, METADATA_PAGE_ID), false);
         metaPage.acquireReadLatch();
         try {
@@ -211,12 +208,15 @@
         private final int numHashes;
         private final long numBits;
         private final int numPages;
+        private IFIFOPageQueue queue;
+        private ICachedPage[] pages;
+        private ICachedPage metaDataPage = null;
 
         public BloomFilterBuilder(long numElements, int numHashes, int numBitsPerElement) throws HyracksDataException {
             if (!isActivated) {
                 throw new HyracksDataException("Failed to create the bloom filter builder since it is not activated.");
             }
-
+            queue = bufferCache.createFIFOQueue();
             this.numElements = numElements;
             this.numHashes = numHashes;
             numBits = this.numElements * numBitsPerElement;
@@ -225,18 +225,12 @@
                 throw new HyracksDataException("Cannot create a bloom filter with his huge number of pages.");
             }
             numPages = (int) tmp;
-            persistBloomFilterMetaData();
-            readBloomFilterMetaData();
+            pages = new ICachedPage[numPages];
             int currentPageId = 1;
             while (currentPageId <= numPages) {
-                ICachedPage page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), true);
-                page.acquireWriteLatch();
-                try {
-                    initPage(page.getBuffer().array());
-                } finally {
-                    page.releaseWriteLatch(true);
-                    bufferCache.unpin(page);
-                }
+                ICachedPage page = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, currentPageId));
+                initPage(page.getBuffer().array());
+                pages[currentPageId - 1] = page;
                 ++currentPageId;
             }
         }
@@ -254,18 +248,14 @@
             }
         }
 
-        private void persistBloomFilterMetaData() throws HyracksDataException {
-            ICachedPage metaPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, METADATA_PAGE_ID), false);
-            metaPage.acquireWriteLatch();
-            try {
-                metaPage.getBuffer().putInt(NUM_PAGES_OFFSET, numPages);
-                metaPage.getBuffer().putInt(NUM_HASHES_USED_OFFSET, numHashes);
-                metaPage.getBuffer().putLong(NUM_ELEMENTS_OFFSET, numElements);
-                metaPage.getBuffer().putLong(NUM_BITS_OFFSET, numBits);
-            } finally {
-                metaPage.releaseWriteLatch(true);
-                bufferCache.unpin(metaPage);
+        private void allocateAndInitMetaDataPage() throws HyracksDataException {
+            if (metaDataPage == null) {
+                metaDataPage = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, METADATA_PAGE_ID));
             }
+            metaDataPage.getBuffer().putInt(NUM_PAGES_OFFSET, numPages);
+            metaDataPage.getBuffer().putInt(NUM_HASHES_USED_OFFSET, numHashes);
+            metaDataPage.getBuffer().putLong(NUM_ELEMENTS_OFFSET, numElements);
+            metaDataPage.getBuffer().putLong(NUM_BITS_OFFSET, numBits);
         }
 
         @Override
@@ -277,28 +267,42 @@
             MurmurHash128Bit.hash3_x64_128(tuple, keyFields, SEED, hashes);
             for (int i = 0; i < numHashes; ++i) {
                 long hash = Math.abs((hashes[0] + i * hashes[1]) % numBits);
+                ICachedPage page = pages[((int) (hash / numBitsPerPage))];
+                ByteBuffer buffer = page.getBuffer();
+                int byteIndex = (int) (hash % numBitsPerPage) >> 3; // divide by 8
+                byte b = buffer.get(byteIndex);
+                int bitIndex = (int) (hash % numBitsPerPage) & 0x07; // mod 8
+                b = (byte) (b | (1 << bitIndex));
 
-                // we increment the page id by one, since the metadata page id of the filter is 0.
-                ICachedPage page = bufferCache.pin(
-                        BufferedFileHandle.getDiskPageId(fileId, (int) (hash / numBitsPerPage) + 1), false);
-                page.acquireWriteLatch();
-                try {
-                    ByteBuffer buffer = page.getBuffer();
-                    int byteIndex = (int) (hash % numBitsPerPage) >> 3; // divide by 8
-                    byte b = buffer.array()[byteIndex];
-                    int bitIndex = (int) (hash % numBitsPerPage) & 0x07; // mod 8
-                    b = (byte) (b | (1 << bitIndex));
-                    buffer.array()[byteIndex] = b;
-                } finally {
-                    page.releaseWriteLatch(true);
-                    bufferCache.unpin(page);
-                }
+                buffer.put(byteIndex, b);
             }
         }
 
         @Override
         public void end() throws HyracksDataException, IndexException {
+            allocateAndInitMetaDataPage();
+            queue.put(metaDataPage);
+            for (ICachedPage p : pages) {
+                queue.put(p);
+            }
+            bufferCache.finishQueue();
+            BloomFilter.this.numBits = numBits;
+            BloomFilter.this.numHashes = numHashes;
+            BloomFilter.this.numElements = numElements;
+            BloomFilter.this.numPages = numPages;
+        }
+
+        @Override
+        public void abort() throws HyracksDataException {
+            for (ICachedPage p : pages) {
+                if (p != null) {
+                    bufferCache.returnPage(p, false);
+                }
+            }
+            if (metaDataPage != null ){
+                bufferCache.returnPage(metaDataPage,false);
+            }
         }
 
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilterSpecification.java b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilterSpecification.java
index 642d8e9..50978db 100644
--- a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilterSpecification.java
+++ b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilterSpecification.java
@@ -35,4 +35,4 @@
     public int getNumHashes() {
         return numHashes;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java
index 8fce03b..3aa9cc4 100644
--- a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java
+++ b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java
@@ -257,4 +257,4 @@
         hashes[1] = h2;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-btree/pom.xml b/hyracks/hyracks-storage-am-btree/pom.xml
index 4672921..f11fe67 100644
--- a/hyracks/hyracks-storage-am-btree/pom.xml
+++ b/hyracks/hyracks-storage-am-btree/pom.xml
@@ -16,73 +16,71 @@
  ! specific language governing permissions and limitations
  ! under the License.
  !-->
-
 <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>
-  <artifactId>hyracks-storage-am-btree</artifactId>
-  <name>hyracks-storage-am-btree</name>
-
-  <parent>
-    <groupId>org.apache.hyracks</groupId>
-    <artifactId>hyracks</artifactId>
-    <version>0.2.18-SNAPSHOT</version>
-  </parent>
-
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-      <comments>A business-friendly OSS license</comments>
-    </license>
-  </licenses>
-
-  <properties>
-      <root.dir>${basedir}/../..</root.dir>
-  </properties>
-
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <dependencies>
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-storage-common</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>  	
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>hyracks-storage-am-btree</artifactId>
+    <name>hyracks-storage-am-btree</name>
+    <parent>
+        <groupId>org.apache.hyracks</groupId>
+        <artifactId>hyracks</artifactId>
+        <version>0.2.18-SNAPSHOT</version>
+    </parent>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+            <comments>A business-friendly OSS license</comments>
+        </license>
+    </licenses>
+    <properties>
+        <root.dir>${basedir}/../..</root.dir>
+    </properties>
+    <dependencies>
         <dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-storage-am-common</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>  	
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-dataflow-common</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>  	
-  	<dependency>
-  		<groupId>org.apache.hyracks</groupId>
-  		<artifactId>hyracks-dataflow-std</artifactId>
-  		<version>0.2.18-SNAPSHOT</version>
-  		<type>jar</type>
-  		<scope>compile</scope>
-  	</dependency>  	
-  </dependencies>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-storage-common</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-storage-am-common</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-dataflow-common</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-dataflow-std</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>2.0.2-beta</version>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-mockito</artifactId>
+            <version>1.6.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <version>1.6.2</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeSearchOperatorNodePushable.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeSearchOperatorNodePushable.java
index a97441c..ac59ae7 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeSearchOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeSearchOperatorNodePushable.java
@@ -40,7 +40,8 @@
 
     public BTreeSearchOperatorNodePushable(AbstractTreeIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition, IRecordDescriptorProvider recordDescProvider, int[] lowKeyFields, int[] highKeyFields,
-            boolean lowKeyInclusive, boolean highKeyInclusive, int[] minFilterFieldIndexes, int[] maxFilterFieldIndexes) {
+            boolean lowKeyInclusive, boolean highKeyInclusive, int[] minFilterFieldIndexes,
+            int[] maxFilterFieldIndexes) {
         super(opDesc, ctx, partition, recordDescProvider, minFilterFieldIndexes, maxFilterFieldIndexes);
         this.lowKeyInclusive = lowKeyInclusive;
         this.highKeyInclusive = highKeyInclusive;
@@ -75,12 +76,12 @@
         ITreeIndex treeIndex = (ITreeIndex) index;
         lowKeySearchCmp = BTreeUtils.getSearchMultiComparator(treeIndex.getComparatorFactories(), lowKey);
         highKeySearchCmp = BTreeUtils.getSearchMultiComparator(treeIndex.getComparatorFactories(), highKey);
-        return new RangePredicate(lowKey, highKey, lowKeyInclusive, highKeyInclusive, lowKeySearchCmp,
-                highKeySearchCmp, minFilterKey, maxFilterKey);
+        return new RangePredicate(lowKey, highKey, lowKeyInclusive, highKeyInclusive, lowKeySearchCmp, highKeySearchCmp,
+                minFilterKey, maxFilterKey);
     }
 
     @Override
     protected int getFieldCount() {
         return ((ITreeIndex) index).getFieldCount();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
index f4fd394..e908c1b 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
@@ -91,7 +91,7 @@
     }
 
     @Override
-    public int getBytesRequriedToWriteTuple(ITupleReference tuple) {
+    public int getBytesRequiredToWriteTuple(ITupleReference tuple) {
         return tupleWriter.bytesRequired(tuple) + slotManager.getSlotSize();
     }
 
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrameFactory.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrameFactory.java
index 55b8104..beb350d 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrameFactory.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrameFactory.java
@@ -42,4 +42,4 @@
     public ITreeIndexTupleWriterFactory getTupleWriterFactory() {
         return tupleWriterFactory;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMInteriorFrame.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMInteriorFrame.java
index ab5e55f..5b2bdfc 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMInteriorFrame.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMInteriorFrame.java
@@ -59,7 +59,7 @@
     }
 
     @Override
-    public int getBytesRequriedToWriteTuple(ITupleReference tuple) {
+    public int getBytesRequiredToWriteTuple(ITupleReference tuple) {
         return tupleWriter.bytesRequired(tuple) + childPtrSize + slotManager.getSlotSize();
     }
 
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMLeafFrame.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMLeafFrame.java
index c96a2cf..fef9661 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMLeafFrame.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeNSMLeafFrame.java
@@ -50,7 +50,7 @@
     }
 
     @Override
-    public int getBytesRequriedToWriteTuple(ITupleReference tuple) {
+    public int getBytesRequiredToWriteTuple(ITupleReference tuple) {
         return tupleWriter.bytesRequired(tuple) + slotManager.getSlotSize();
     }
 
@@ -299,4 +299,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
index 3d02065..a017ea5 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
@@ -31,7 +31,6 @@
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.util.TupleUtils;
 import org.apache.hyracks.storage.am.btree.api.IBTreeFrame;
 import org.apache.hyracks.storage.am.btree.api.IBTreeInteriorFrame;
@@ -41,22 +40,8 @@
 import org.apache.hyracks.storage.am.btree.exceptions.BTreeNotUpdateableException;
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrame;
 import org.apache.hyracks.storage.am.btree.impls.BTreeOpContext.PageValidationInfo;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
-import org.apache.hyracks.storage.am.common.api.IIndexCursor;
-import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.ISplitKey;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
-import org.apache.hyracks.storage.am.common.api.IndexException;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
-import org.apache.hyracks.storage.am.common.api.UnsortedInputException;
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException;
 import org.apache.hyracks.storage.am.common.exceptions.TreeIndexNonExistentKeyException;
 import org.apache.hyracks.storage.am.common.frames.FrameOpSpaceStatus;
@@ -66,6 +51,7 @@
 import org.apache.hyracks.storage.am.common.impls.TreeIndexDiskOrderScanCursor;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
+import org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
@@ -83,7 +69,7 @@
     private final ReadWriteLock treeLatch;
     private final int maxTupleSize;
 
-    public BTree(IBufferCache bufferCache, IFileMapProvider fileMapProvider, IFreePageManager freePageManager,
+    public BTree(IBufferCache bufferCache, IFileMapProvider fileMapProvider, IMetaDataPageManager freePageManager,
             ITreeIndexFrameFactory interiorFrameFactory, ITreeIndexFrameFactory leafFrameFactory,
             IBinaryComparatorFactory[] cmpFactories, int fieldCount, FileReference file) {
         super(bufferCache, fileMapProvider, freePageManager, interiorFrameFactory, leafFrameFactory, cmpFactories,
@@ -100,8 +86,8 @@
         TreeIndexDiskOrderScanCursor cursor = (TreeIndexDiskOrderScanCursor) icursor;
         ctx.reset();
         RangePredicate diskOrderScanPred = new RangePredicate(null, null, true, true, ctx.cmp, ctx.cmp);
-        int currentPageId = rootPage;
         int maxPageId = freePageManager.getMaxPage(ctx.metaFrame);
+        int currentPageId = bulkloadLeafStart;
         ICachedPage page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), false);
         page.acquireReadLatch();
         try {
@@ -128,7 +114,9 @@
                 NoOpOperationCallback.INSTANCE);
         PageValidationInfo pvi = accessor.ctx.createPageValidationInfo(null);
         accessor.ctx.validationInfos.addFirst(pvi);
-        validate(accessor.ctx, rootPage);
+        if (isActive) {
+            validate(accessor.ctx, rootPage);
+        }
     }
 
     private void validate(BTreeOpContext ctx, int pageId) throws HyracksDataException {
@@ -316,8 +304,8 @@
     }
 
     private void insert(ITupleReference tuple, BTreeOpContext ctx) throws HyracksDataException, TreeIndexException {
-        int tupleSize = Math.max(ctx.leafFrame.getBytesRequriedToWriteTuple(tuple),
-                ctx.interiorFrame.getBytesRequriedToWriteTuple(tuple));
+        int tupleSize = Math.max(ctx.leafFrame.getBytesRequiredToWriteTuple(tuple),
+                ctx.interiorFrame.getBytesRequiredToWriteTuple(tuple));
         if (tupleSize > maxTupleSize) {
             throw new TreeIndexException("Space required for record (" + tupleSize
                     + ") larger than maximum acceptable size (" + maxTupleSize + ")");
@@ -327,8 +315,8 @@
     }
 
     private void upsert(ITupleReference tuple, BTreeOpContext ctx) throws HyracksDataException, TreeIndexException {
-        int tupleSize = Math.max(ctx.leafFrame.getBytesRequriedToWriteTuple(tuple),
-                ctx.interiorFrame.getBytesRequriedToWriteTuple(tuple));
+        int tupleSize = Math.max(ctx.leafFrame.getBytesRequiredToWriteTuple(tuple),
+                ctx.interiorFrame.getBytesRequiredToWriteTuple(tuple));
         if (tupleSize > maxTupleSize) {
             throw new TreeIndexException("Space required for record (" + tupleSize
                     + ") larger than maximum acceptable size (" + maxTupleSize + ")");
@@ -340,12 +328,12 @@
     private void update(ITupleReference tuple, BTreeOpContext ctx) throws HyracksDataException, TreeIndexException {
         // This call only allows updating of non-key fields.
         // Updating a tuple's key necessitates deleting the old entry, and inserting the new entry.
-        // The user of the BTree is responsible for dealing with non-key updates (i.e., doing a delete + insert). 
+        // The user of the BTree is responsible for dealing with non-key updates (i.e., doing a delete + insert).
         if (fieldCount == ctx.cmp.getKeyFieldCount()) {
             throw new BTreeNotUpdateableException("Cannot perform updates when the entire tuple forms the key.");
         }
-        int tupleSize = Math.max(ctx.leafFrame.getBytesRequriedToWriteTuple(tuple),
-                ctx.interiorFrame.getBytesRequriedToWriteTuple(tuple));
+        int tupleSize = Math.max(ctx.leafFrame.getBytesRequiredToWriteTuple(tuple),
+                ctx.interiorFrame.getBytesRequiredToWriteTuple(tuple));
         if (tupleSize > maxTupleSize) {
             throw new TreeIndexException("Space required for record (" + tupleSize
                     + ") larger than maximum acceptable size (" + maxTupleSize + ")");
@@ -644,7 +632,7 @@
                                 node = isConsistent(pageId, ctx);
                                 if (node != null) {
                                     isReadLatched = true;
-                                    // Descend the tree again.                                
+                                    // Descend the tree again.
                                     continue;
                                 } else {
                                     // Pop pageLsn of this page (version seen by this op during descent).
@@ -666,7 +654,7 @@
                                             BufferedFileHandle.getDiskPageId(fileId, pageId), false);
                                     interiorNode.acquireWriteLatch();
                                     try {
-                                        // Insert or update op. Both can cause split keys to propagate upwards. 
+                                        // Insert or update op. Both can cause split keys to propagate upwards.
                                         insertInterior(interiorNode, pageId, ctx.splitKey.getTuple(), ctx);
                                     } finally {
                                         interiorNode.releaseWriteLatch(true);
@@ -756,7 +744,7 @@
                     bufferCache.unpin(node);
                 }
                 if (restartOp) {
-                    // Wait for the SMO to finish before restarting.
+                    // Wait for the SMO to persistFrontiers before restarting.
                     treeLatch.readLock().lock();
                     treeLatch.readLock().unlock();
                     ctx.pageLsns.removeLast();
@@ -861,6 +849,13 @@
 
     // TODO: Class should be private. But currently we need to expose the
     // setOpContext() API to the LSM Tree for it to work correctly.
+
+    /* TODO: Class should be re-usable to avoid massive object creation on a per tuple basis. two solutions for this:
+     * 1. have an accessor pool as part of the btree class (cleaner but introduce additional synchronization)
+     * 2. don't make it an inner class (no synchronization overhead)
+     *
+     * for now, we are reusing it while it is an inner class !!!!
+     */
     public class BTreeAccessor implements ITreeIndexAccessor {
         private BTree btree;
         private BTreeOpContext ctx;
@@ -871,6 +866,13 @@
             this.ctx = btree.createOpContext(this, modificationCalback, searchCallback);
         }
 
+        public void reset(BTree btree, IModificationOperationCallback modificationCallback,
+                ISearchOperationCallback searchCallback) {
+            this.btree = btree;
+            ctx.setCallbacks(modificationCallback, searchCallback);
+            ctx.reset();
+        }
+
         @Override
         public void insert(ITupleReference tuple) throws HyracksDataException, TreeIndexException {
             ctx.setOperation(IndexOperation.INSERT);
@@ -942,8 +944,13 @@
     @Override
     public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
             boolean checkIfEmptyIndex) throws TreeIndexException {
+        return createBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex, false);
+    }
+
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws TreeIndexException {
         try {
-            return new BTreeBulkLoader(fillFactor, verifyInput);
+            return new BTreeBulkLoader(fillFactor, verifyInput, appendOnly);
         } catch (HyracksDataException e) {
             throw new TreeIndexException(e);
         }
@@ -953,8 +960,9 @@
         protected final ISplitKey splitKey;
         protected final boolean verifyInput;
 
-        public BTreeBulkLoader(float fillFactor, boolean verifyInput) throws TreeIndexException, HyracksDataException {
-            super(fillFactor);
+        public BTreeBulkLoader(float fillFactor, boolean verifyInput, boolean appendOnly) throws TreeIndexException,
+                HyracksDataException {
+            super(fillFactor, appendOnly);
             this.verifyInput = verifyInput;
             splitKey = new BTreeSplitKey(leafFrame.getTupleWriter().createTupleReference());
             splitKey.getTuple().setFieldCount(cmp.getKeyFieldCount());
@@ -963,8 +971,8 @@
         @Override
         public void add(ITupleReference tuple) throws IndexException, HyracksDataException {
             try {
-                int tupleSize = Math.max(leafFrame.getBytesRequriedToWriteTuple(tuple),
-                        interiorFrame.getBytesRequriedToWriteTuple(tuple));
+                int tupleSize = Math.max(leafFrame.getBytesRequiredToWriteTuple(tuple),
+                        interiorFrame.getBytesRequiredToWriteTuple(tuple));
                 if (tupleSize > maxTupleSize) {
                     throw new TreeIndexException("Space required for record (" + tupleSize
                             + ") larger than maximum acceptable size (" + maxTupleSize + ")");
@@ -980,7 +988,7 @@
                     leafFrame.compress();
                     spaceUsed = leafFrame.getBuffer().capacity() - leafFrame.getTotalFreeSpace();
                 }
-
+                //full, allocate new page
                 if (spaceUsed + spaceNeeded > leafMaxBytes) {
                     leafFrontier.lastTuple.resetByTupleIndex(leafFrame, leafFrame.getTupleCount() - 1);
                     if (verifyInput) {
@@ -992,18 +1000,21 @@
                             .getBuffer().array(), 0);
                     splitKey.getTuple().resetByTupleOffset(splitKey.getBuffer(), 0);
                     splitKey.setLeftPage(leafFrontier.pageId);
+
+                    propagateBulk(1, pagesToWrite);
                     leafFrontier.pageId = freePageManager.getFreePage(metaFrame);
 
                     ((IBTreeLeafFrame) leafFrame).setNextLeaf(leafFrontier.pageId);
-                    leafFrontier.page.releaseWriteLatch(true);
-                    bufferCache.unpin(leafFrontier.page);
+
+                    queue.put(leafFrontier.page);
+                    for (ICachedPage c : pagesToWrite) {
+                        queue.put(c);
+                    }
+                    pagesToWrite.clear();
 
                     splitKey.setRightPage(leafFrontier.pageId);
-                    propagateBulk(1);
-
-                    leafFrontier.page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId),
-                            true);
-                    leafFrontier.page.acquireWriteLatch();
+                    leafFrontier.page = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId,
+                            leafFrontier.pageId));
                     leafFrame.setPage(leafFrontier.page);
                     leafFrame.initBuffer((byte) 0);
                 } else {
@@ -1015,13 +1026,7 @@
 
                 leafFrame.setPage(leafFrontier.page);
                 ((IBTreeLeafFrame) leafFrame).insertSorted(tuple);
-            } catch (IndexException e) {
-                handleException();
-                throw e;
-            } catch (HyracksDataException e) {
-                handleException();
-                throw e;
-            } catch (RuntimeException e) {
+            } catch (IndexException | HyracksDataException | RuntimeException e) {
                 handleException();
                 throw e;
             }
@@ -1039,7 +1044,7 @@
             }
         }
 
-        protected void propagateBulk(int level) throws HyracksDataException {
+        protected void propagateBulk(int level, List<ICachedPage> pagesToWrite) throws HyracksDataException {
             if (splitKey.getBuffer() == null)
                 return;
 
@@ -1063,25 +1068,73 @@
                 tupleWriter.writeTupleFields(frontier.lastTuple, 0, cmp.getKeyFieldCount(), splitKey.getBuffer()
                         .array(), 0);
                 splitKey.getTuple().resetByTupleOffset(splitKey.getBuffer(), 0);
-                splitKey.setLeftPage(frontier.pageId);
 
                 ((IBTreeInteriorFrame) interiorFrame).deleteGreatest();
+                int finalPageId = freePageManager.getFreePage(metaFrame);
+                bufferCache.setPageDiskId(frontier.page, BufferedFileHandle.getDiskPageId(fileId, finalPageId));
+                pagesToWrite.add(frontier.page);
+                splitKey.setLeftPage(finalPageId);
 
-                frontier.page.releaseWriteLatch(true);
-                bufferCache.unpin(frontier.page);
-                frontier.pageId = freePageManager.getFreePage(metaFrame);
-
-                splitKey.setRightPage(frontier.pageId);
-                propagateBulk(level + 1);
-
-                frontier.page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, frontier.pageId), true);
-                frontier.page.acquireWriteLatch();
+                propagateBulk(level + 1, pagesToWrite);
+                frontier.page = bufferCache.confiscatePage(BufferCache.INVALID_DPID);
                 interiorFrame.setPage(frontier.page);
                 interiorFrame.initBuffer((byte) level);
             }
             ((IBTreeInteriorFrame) interiorFrame).insertSorted(tuple);
         }
 
+        private void persistFrontiers(int level, int rightPage) throws HyracksDataException {
+            if (level >= nodeFrontiers.size()) {
+                //at root
+                if (appendOnly) {
+                    rootPage = nodeFrontiers.get(level - 1).pageId;
+                }
+                releasedLatches = true;
+                return;
+            }
+            if (level < 1) {
+                ICachedPage lastLeaf = nodeFrontiers.get(level).page;
+                int lastLeafPage = nodeFrontiers.get(level).pageId;
+                setPageDpid(lastLeaf,nodeFrontiers.get(level).pageId);
+                queue.put(lastLeaf);
+                nodeFrontiers.get(level).page = null;
+                persistFrontiers(level + 1, lastLeafPage);
+                return;
+            }
+            NodeFrontier frontier = nodeFrontiers.get(level);
+            interiorFrame.setPage(frontier.page);
+            //just finalize = the layer right above the leaves has correct righthand pointers already
+            if (rightPage < 0) {
+                throw new HyracksDataException("Error in index creation. Internal node appears to have no rightmost guide");
+            }
+            ((IBTreeInteriorFrame) interiorFrame).setRightmostChildPageId(rightPage);
+            int finalPageId = freePageManager.getFreePage(metaFrame);
+            setPageDpid(frontier.page, finalPageId);
+            queue.put(frontier.page);
+            frontier.pageId = finalPageId;
+
+            persistFrontiers(level + 1, finalPageId);
+        }
+
+        @Override
+        public void end() throws HyracksDataException {
+            try{
+                persistFrontiers(0, -1);
+                super.end();
+            } catch ( HyracksDataException | RuntimeException e) {
+                handleException();
+                throw e;
+            }
+        }
+
+        @Override
+        public void abort() throws HyracksDataException {
+            super.handleException();
+        }
+
+        private void setPageDpid(ICachedPage page, int pageId){
+            bufferCache.setPageDiskId(page, BufferedFileHandle.getDiskPageId(fileId,pageId));
+        }
     }
 
     @SuppressWarnings("rawtypes")
@@ -1109,7 +1162,8 @@
             tuple.resetByTupleIndex(interiorFrame, i);
             // Print child pointer.
             int numFields = tuple.getFieldCount();
-            int childPageId = IntegerPointable.getInteger(tuple.getFieldData(numFields - 1), tuple.getFieldStart(numFields - 1) + tuple.getFieldLength(numFields - 1));
+            int childPageId = IntegerPointable.getInteger(tuple.getFieldData(numFields - 1),
+                    tuple.getFieldStart(numFields - 1) + tuple.getFieldLength(numFields - 1));
             strBuilder.append("(" + childPageId + ") ");
             String tupleString = TupleUtils.printTuple(tuple, fieldSerdes);
             strBuilder.append(tupleString + " | ");
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java
index a1a90dc..acd8b91 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java
@@ -38,7 +38,7 @@
         this.searchCallback = searchCallback;
         this.accessor = accessor;
     }
-    
+
     public IIndexAccessor getAccessor() {
         return accessor;
     }
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
index b3aeef5..8513368 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
@@ -227,4 +227,10 @@
     public IndexOperation getOperation() {
         return op;
     }
+
+    public void setCallbacks(IModificationOperationCallback modificationCallback,
+            ISearchOperationCallback searchCallback) {
+        this.modificationCallback = modificationCallback;
+        this.searchCallback = searchCallback;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeRangeSearchCursor.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeRangeSearchCursor.java
index 18207b7..3301e37 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeRangeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeRangeSearchCursor.java
@@ -318,4 +318,8 @@
             throw new HyracksDataException("This cursor has not been created with the intention to allow updates.");
         }
     }
-}
\ No newline at end of file
+
+    public boolean isBloomFilterAware(){
+        return false;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeSplitKey.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeSplitKey.java
index b6426e8..f500a1a 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeSplitKey.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeSplitKey.java
@@ -93,4 +93,4 @@
         copy.tuple.resetByTupleOffset(copy.buf, 0);
         return copy;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/RangePredicate.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/RangePredicate.java
index 2de5ac0..f1a411b 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/RangePredicate.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/RangePredicate.java
@@ -60,10 +60,22 @@
         this.highKeyCmp = highKeyCmp;
     }
 
+    public void reset(ITupleReference lowKey, ITupleReference highKey, boolean lowKeyInclusive,
+            boolean highKeyInclusive, MultiComparator lowKeyCmp, MultiComparator highKeyCmp) {
+        this.lowKey = lowKey;
+        this.highKey = highKey;
+        this.lowKeyInclusive = lowKeyInclusive;
+        this.highKeyInclusive = highKeyInclusive;
+        this.lowKeyCmp = lowKeyCmp;
+        this.highKeyCmp = highKeyCmp;
+    }
+
+    @Override
     public MultiComparator getLowKeyComparator() {
         return lowKeyCmp;
     }
 
+    @Override
     public MultiComparator getHighKeyComparator() {
         return highKeyCmp;
     }
@@ -76,6 +88,7 @@
         this.highKeyCmp = highKeyCmp;
     }
 
+    @Override
     public ITupleReference getLowKey() {
         return lowKey;
     }
@@ -101,4 +114,20 @@
     public boolean isHighKeyInclusive() {
         return highKeyInclusive;
     }
+
+    public void setLowKey(ITupleReference lowKey) {
+        this.lowKey = lowKey;
+    }
+
+    public void setHighKey(ITupleReference highKey) {
+        this.highKey = highKey;
+    }
+
+    public void setLowKeyCmp(MultiComparator lowKeyCmp) {
+        this.lowKeyCmp = lowKeyCmp;
+    }
+
+    public void setHighKeyCmp(MultiComparator highKeyCmp) {
+        this.highKeyCmp = highKeyCmp;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/util/BTreeUtils.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/util/BTreeUtils.java
index 5aab7ae..7c2abb1 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/util/BTreeUtils.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/util/BTreeUtils.java
@@ -29,12 +29,12 @@
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriterFactory;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -48,13 +48,14 @@
         ITreeIndexFrameFactory leafFrameFactory = getLeafFrameFactory(tupleWriterFactory, leafType);
         ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(tupleWriterFactory);
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager;
+        freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
         BTree btree = new BTree(bufferCache, fileMapProvider, freePageManager, interiorFrameFactory, leafFrameFactory,
                 cmpFactories, typeTraits.length, file);
         return btree;
     }
 
-    public static BTree createBTree(IBufferCache bufferCache, IFreePageManager freePageManager,
+    public static BTree createBTree(IBufferCache bufferCache, IMetaDataPageManager freePageManager,
             IFileMapProvider fileMapProvider, ITypeTraits[] typeTraits, IBinaryComparatorFactory[] cmpFactories,
             BTreeLeafFrameType leafType, FileReference file) throws BTreeException {
         TypeAwareTupleWriterFactory tupleWriterFactory = new TypeAwareTupleWriterFactory(typeTraits);
diff --git a/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java b/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java
new file mode 100644
index 0000000..6fc26a7
--- /dev/null
+++ b/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java
@@ -0,0 +1,582 @@
+/*
+ * 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.hyracks.storage.am.btree.test;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.comm.IFrameTupleAppender;
+import org.apache.hyracks.api.comm.IFrameWriter;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
+import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender;
+import org.apache.hyracks.dataflow.common.comm.util.FrameUtils;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.dataflow.std.base.AbstractUnaryOutputOperatorNodePushable;
+import org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorNodePushable;
+import org.apache.hyracks.storage.am.btree.util.BTreeUtils;
+import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
+import org.apache.hyracks.storage.am.common.api.IIndexCursor;
+import org.apache.hyracks.storage.am.common.api.IIndexDataflowHelper;
+import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
+import org.apache.hyracks.storage.am.common.api.ISearchOperationCallbackFactory;
+import org.apache.hyracks.storage.am.common.api.ITreeIndex;
+import org.apache.hyracks.storage.am.common.api.IndexException;
+import org.apache.hyracks.storage.am.common.dataflow.AbstractTreeIndexOperatorDescriptor;
+import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
+import org.apache.hyracks.storage.am.common.dataflow.IndexSearchOperatorNodePushable;
+import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({ BTreeUtils.class, FrameTupleAccessor.class, ArrayTupleBuilder.class,
+        IndexSearchOperatorNodePushable.class, FrameUtils.class, FrameTupleAppender.class })
+public class FramewriterTest {
+
+    private CountAnswer openException = new CountAndThrowException("Exception in open()");
+    private CountAnswer nextFrameException = new CountAndThrowException("Exception in nextFrame()");
+    private CountAnswer failException = new CountAndThrowException("Exception in fail()");
+    private CountAnswer closeException = new CountAndThrowException("Exception in close()");
+    private CountAnswer openError = new CountAndThrowError("Exception in open()");
+    private CountAnswer nextFrameError = new CountAndThrowError("Exception in nextFrame()");
+    private CountAnswer failError = new CountAndThrowError("Exception in fail()");
+    private CountAnswer closeError = new CountAndThrowError("Exception in close()");
+    private CountAnswer openNormal = new CountAnswer();
+    private CountAnswer nextFrameNormal = new CountAnswer();
+    private CountAnswer failNormal = new CountAnswer();
+    private CountAnswer closeNormal = new CountAnswer();
+
+    private int successes = 0;
+    private int failures = 0;
+    private static final int BUFFER_SIZE = 32000;
+    private static final int RECORDS_PER_FRAME = 3;
+    public static ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate(BUFFER_SIZE);
+    private static final int NUMBER_OF_APPENDERS = 2;
+    public int counter = 0;
+
+    public boolean validate(boolean finished) {
+        // get number of open calls
+        int openCount = openException.getCallCount() + openNormal.getCallCount() + openError.getCallCount();
+        int nextFrameCount = nextFrameException.getCallCount() + nextFrameNormal.getCallCount()
+                + nextFrameError.getCallCount();
+        int failCount = failException.getCallCount() + failNormal.getCallCount() + failError.getCallCount();
+        int closeCount = closeException.getCallCount() + closeNormal.getCallCount() + closeError.getCallCount();
+
+        if (failCount > 1 || closeCount > 1 || openCount > 1) {
+            failures++;
+            return false;
+        }
+        if (openCount == 0 && (nextFrameCount > 0 || failCount > 0 || closeCount > 0)) {
+            failures++;
+            return false;
+        }
+        if (finished) {
+            if (closeCount == 0 && (nextFrameCount > 0 || failCount > 0 || openCount > 0)) {
+                failures++;
+                return false;
+            }
+        }
+        return true;
+    }
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+    }
+
+    public MultiComparator mockMultiComparator() {
+        MultiComparator mc = Mockito.mock(MultiComparator.class);
+        return mc;
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        // Mock static methods
+        PowerMockito.mockStatic(BTreeUtils.class);
+        PowerMockito.when(BTreeUtils.getSearchMultiComparator(Matchers.any(), Matchers.any()))
+                .thenReturn(mockMultiComparator());
+        PowerMockito.mockStatic(FrameUtils.class);
+
+        // Custom implementation for FrameUtils that push to next frame immediately
+        PowerMockito.when(
+                FrameUtils.appendToWriter(Matchers.any(IFrameWriter.class), Matchers.any(IFrameTupleAppender.class),
+                        Matchers.any(IFrameTupleAccessor.class), Matchers.anyInt(), Matchers.anyInt()))
+                .thenAnswer(new Answer<Integer>() {
+                    @Override
+                    public Integer answer(InvocationOnMock invocation) throws Throwable {
+                        Object[] args = invocation.getArguments();
+                        IFrameWriter writer = (IFrameWriter) args[0];
+                        writer.nextFrame(EMPTY_BUFFER);
+                        return BUFFER_SIZE;
+                    }
+                });
+
+        // create global mock for FrameTupleAccessor, ArrayTupleBuilder
+        FrameTupleAccessor frameAccessor = Mockito.mock(FrameTupleAccessor.class);
+        Mockito.when(frameAccessor.getTupleCount()).thenReturn(RECORDS_PER_FRAME);
+
+        // Global custom implementations for FrameTupleAppender
+        // since we have two appenders, then we need to test each test twice
+        FrameTupleAppender[] appenders = mockAppenders();
+
+        // Mock all instances of a class <Note that you need to prepare the class calling this constructor as well>
+        PowerMockito.whenNew(FrameTupleAccessor.class).withAnyArguments().thenReturn(frameAccessor);
+        PowerMockito.whenNew(FrameTupleAppender.class).withAnyArguments().thenAnswer(new Answer<FrameTupleAppender>() {
+            @Override
+            public FrameTupleAppender answer(InvocationOnMock invocation) throws Throwable {
+                counter++;
+                if (counter % 2 == 1) {
+                    return appenders[0];
+                }
+                return appenders[1];
+            }
+        });
+    }
+
+    public static FrameTupleAppender[] mockAppenders() throws HyracksDataException {
+        FrameTupleAppender[] appenders = new FrameTupleAppender[2];
+        appenders[0] = Mockito.mock(FrameTupleAppender.class);
+        Mockito.doAnswer(new Answer<Object>() {
+            @Override
+            public Object answer(InvocationOnMock invocation) throws Throwable {
+                Object[] args = invocation.getArguments();
+                IFrameWriter writer = (IFrameWriter) args[0];
+                writer.nextFrame(EMPTY_BUFFER);
+                return null;
+            }
+        }).when(appenders[0]).write(Matchers.any(IFrameWriter.class), Matchers.anyBoolean());
+
+        appenders[1] = Mockito.mock(FrameTupleAppender.class);
+        Mockito.doAnswer(new Answer<Object>() {
+            @Override
+            public Object answer(InvocationOnMock invocation) throws Throwable {
+                throw new HyracksDataException("couldn't flush frame");
+            }
+        }).when(appenders[1]).write(Matchers.any(IFrameWriter.class), Matchers.anyBoolean());
+
+        return appenders;
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() throws Exception {
+    }
+
+    private void resetAllCounters() {
+        openException.reset();
+        nextFrameException.reset();
+        failException.reset();
+        closeException.reset();
+        openNormal.reset();
+        nextFrameNormal.reset();
+        failNormal.reset();
+        closeNormal.reset();
+        openError.reset();
+        nextFrameError.reset();
+        failError.reset();
+        closeError.reset();
+    }
+
+    @Test
+    public void test() {
+        try {
+            testBTreeSearchOperatorNodePushable();
+        } catch (Throwable th) {
+            th.printStackTrace();
+        }
+        System.out.println("Number of passed tests: " + successes);
+        System.out.println("Number of failed tests: " + failures);
+        Assert.assertEquals(failures, 0);
+    }
+
+    private void testBTreeSearchOperatorNodePushable() throws Exception {
+        /*
+         * coverage
+         * in open(){
+         *  writer.open() succeeds vs. throws exception vs. throws error
+         *   indexHelper.open() succeeds vs. throws exception
+         *    createAccessor() succeeds vs. throws exception
+         * }
+         * in nextFrame(){
+         *  indexAccessor.search succeeds vs. throws exception
+         *   writeSearchResults succeeds vs. throws exception vs. throws error
+         * }
+         * in fail(){
+         *  writer.fail() succeeds, throws exception, or throws error
+         * }
+         * in close(){
+         *  appender.close() succeeds, throws exception, or throws error
+         * }
+         */
+        int i = 0;
+        counter = 0;
+        while (i < NUMBER_OF_APPENDERS) {
+            i++;
+            ByteBuffer buffer = mockByteBuffer();
+            IFrameWriter[] outPutFrameWriters = createOutputWriters();
+            for (IFrameWriter outputWriter : outPutFrameWriters) {
+                IFrameWriter[] underTest = createWriters();
+                for (IFrameWriter writer : underTest) {
+                    ((AbstractUnaryOutputOperatorNodePushable) writer).setOutputFrameWriter(0, outputWriter,
+                            mockRecordDescriptor());
+                    testWriter(writer, buffer);
+                }
+            }
+            counter = i;
+        }
+    }
+
+    private ByteBuffer mockByteBuffer() {
+        return ByteBuffer.allocate(BUFFER_SIZE);
+    }
+
+    /**
+     * @return a list of writers to test. these writers can be of the same type but behave differently based on included mocks
+     * @throws HyracksDataException
+     * @throws IndexException
+     */
+    public IFrameWriter[] createWriters() throws HyracksDataException, IndexException {
+        ArrayList<BTreeSearchOperatorNodePushable> writers = new ArrayList<BTreeSearchOperatorNodePushable>();
+        AbstractTreeIndexOperatorDescriptor[] opDescs = mockIndexOpDesc();
+        IRecordDescriptorProvider[] recordDescProviders = mockRecDescProviders();
+        int partition = 0;
+        IHyracksTaskContext[] ctxs = mockIHyracksTaskContext();
+        int[] keys = { 0 };
+        boolean lowKeyInclusive = true;
+        boolean highKeyInclusive = true;
+        for (AbstractTreeIndexOperatorDescriptor opDesc : opDescs) {
+            for (IRecordDescriptorProvider recordDescProvider : recordDescProviders) {
+                for (IHyracksTaskContext ctx : ctxs) {
+                    BTreeSearchOperatorNodePushable writer = new BTreeSearchOperatorNodePushable(opDesc, ctx, partition,
+                            recordDescProvider, keys, keys, lowKeyInclusive, highKeyInclusive, keys, keys);
+                    writers.add(writer);
+                }
+            }
+        }
+        // Create the framewriter using the mocks
+        return writers.toArray(new IFrameWriter[writers.size()]);
+    }
+
+    private IHyracksTaskContext[] mockIHyracksTaskContext() throws HyracksDataException {
+        IHyracksTaskContext ctx = Mockito.mock(IHyracksTaskContext.class);
+        Mockito.when(ctx.allocateFrame()).thenReturn(mockByteBuffer());
+        Mockito.when(ctx.allocateFrame(Mockito.anyInt())).thenReturn(mockByteBuffer());
+        Mockito.when(ctx.getInitialFrameSize()).thenReturn(BUFFER_SIZE);
+        Mockito.when(ctx.reallocateFrame(Mockito.any(), Mockito.anyInt(), Mockito.anyBoolean()))
+                .thenReturn(mockByteBuffer());
+        return new IHyracksTaskContext[] { ctx };
+    }
+
+    private IRecordDescriptorProvider[] mockRecDescProviders() {
+        RecordDescriptor rDesc = mockRecordDescriptor();
+        IRecordDescriptorProvider rDescProvider = Mockito.mock(IRecordDescriptorProvider.class);
+        Mockito.when(rDescProvider.getInputRecordDescriptor(Mockito.any(), Mockito.anyInt())).thenReturn(rDesc);
+        Mockito.when(rDescProvider.getOutputRecordDescriptor(Mockito.any(), Mockito.anyInt())).thenReturn(rDesc);
+        return new IRecordDescriptorProvider[] { rDescProvider };
+    }
+
+    @SuppressWarnings("rawtypes")
+    private RecordDescriptor mockRecordDescriptor() {
+        ISerializerDeserializer serde = Mockito.mock(ISerializerDeserializer.class);
+        RecordDescriptor rDesc = new RecordDescriptor(new ISerializerDeserializer[] { serde });
+        return rDesc;
+    }
+
+    public ITreeIndex[] mockIndexes() throws HyracksDataException, IndexException {
+        IIndexAccessor[] indexAccessors = mockIndexAccessors();
+        ITreeIndex[] indexes = new ITreeIndex[indexAccessors.length * 2];
+        int j = 0;
+        for (int i = 0; i < indexAccessors.length; i++) {
+            indexes[j] = Mockito.mock(ITreeIndex.class);
+            Mockito.when(indexes[j].createAccessor(Mockito.any(), Mockito.any())).thenReturn(indexAccessors[i]);
+            j++;
+            indexes[j] = Mockito.mock(ITreeIndex.class);
+            Mockito.when(indexes[j].createAccessor(Mockito.any(), Mockito.any()))
+                    .thenThrow(new HyracksDataException("failed to create accessor"));
+            j++;
+        }
+        return indexes;
+    }
+
+    private IIndexAccessor[] mockIndexAccessors() throws HyracksDataException, IndexException {
+        IIndexCursor[] cursors = mockIndexCursors();
+        IIndexAccessor[] accessors = new IIndexAccessor[cursors.length * 2];
+        int j = 0;
+        for (int i = 0; i < cursors.length; i++) {
+            IIndexCursor cursor = cursors[i];
+            IIndexAccessor accessor = Mockito.mock(IIndexAccessor.class);
+            Mockito.when(accessor.createSearchCursor(Matchers.anyBoolean())).thenReturn(cursor);
+            accessors[j] = accessor;
+            j++;
+            accessor = Mockito.mock(IIndexAccessor.class);
+            Mockito.when(accessor.createSearchCursor(Matchers.anyBoolean())).thenReturn(cursor);
+            Mockito.doAnswer(new Answer<Object>() {
+                private int k = 0;
+
+                @Override
+                public Object answer(InvocationOnMock invocation) throws Throwable {
+                    k++;
+                    if (k % 2 == 0) {
+                        throw new HyracksDataException("Couldn't search index");
+                    }
+                    return null;
+                }
+            }).when(accessor).search(Matchers.any(), Matchers.any());
+            accessors[j] = accessor;
+            j++;
+        }
+
+        return accessors;
+    }
+
+    private IIndexCursor[] mockIndexCursors() throws HyracksDataException, IndexException {
+        ITupleReference[] tuples = mockTuples();
+        IIndexCursor[] cursors = new IIndexCursor[tuples.length * 2];
+        int j = 0;
+        for (int i = 0; i < tuples.length; i++) {
+            IIndexCursor cursor = Mockito.mock(IIndexCursor.class);
+            Mockito.when(cursor.hasNext()).thenReturn(true, true, false);
+            Mockito.when(cursor.getTuple()).thenReturn(tuples[i]);
+            cursors[j] = cursor;
+            j++;
+            cursor = Mockito.mock(IIndexCursor.class);
+            Mockito.when(cursor.hasNext()).thenReturn(true, true, false);
+            Mockito.when(cursor.getTuple()).thenReturn(tuples[i]);
+            Mockito.doThrow(new HyracksDataException("Failed to close cursor")).when(cursor).close();
+            cursors[j] = cursor;
+            j++;
+        }
+        return cursors;
+    }
+
+    private ITupleReference[] mockTuples() {
+        ITupleReference tuple = Mockito.mock(ITupleReference.class);
+        return new ITupleReference[] { tuple };
+    }
+
+    public IIndexDataflowHelper[] mockIndexHelpers() throws HyracksDataException, IndexException {
+        ITreeIndex[] indexes = mockIndexes();
+        IIndexDataflowHelper[] indexHelpers = new IIndexDataflowHelper[indexes.length * 2];
+        int j = 0;
+        for (int i = 0; i < indexes.length; i++) {
+            // normal
+            indexHelpers[j] = Mockito.mock(IIndexDataflowHelper.class);
+            Mockito.when(indexHelpers[j].getIndexInstance()).thenReturn(indexes[i]);
+
+            // throws exception when opened
+            j++;
+            indexHelpers[j] = Mockito.mock(IIndexDataflowHelper.class);
+            Mockito.doThrow(new HyracksDataException("couldn't open index")).when(indexHelpers[j]).open();
+            Mockito.when(indexHelpers[j].getIndexInstance()).thenReturn(null);
+
+            j++;
+        }
+        return indexHelpers;
+    }
+
+    public IIndexDataflowHelperFactory[] mockIndexHelperFactories() throws HyracksDataException, IndexException {
+        IIndexDataflowHelper[] helpers = mockIndexHelpers();
+        IIndexDataflowHelperFactory[] indexHelperFactories = new IIndexDataflowHelperFactory[helpers.length];
+        for (int i = 0; i < helpers.length; i++) {
+            indexHelperFactories[i] = Mockito.mock(IIndexDataflowHelperFactory.class);
+            Mockito.when(
+                    indexHelperFactories[i].createIndexDataflowHelper(Mockito.any(), Mockito.any(), Mockito.anyInt()))
+                    .thenReturn(helpers[i]);
+        }
+        return indexHelperFactories;
+    }
+
+    public AbstractTreeIndexOperatorDescriptor[] mockIndexOpDesc() throws HyracksDataException, IndexException {
+        IIndexDataflowHelperFactory[] indexDataflowHelperFactories = mockIndexHelperFactories();
+        ISearchOperationCallbackFactory[] searchOpCallbackFactories = mockSearchOpCallbackFactories();
+        AbstractTreeIndexOperatorDescriptor[] opDescs = new AbstractTreeIndexOperatorDescriptor[indexDataflowHelperFactories.length
+                * searchOpCallbackFactories.length];
+        int k = 0;
+        for (int i = 0; i < indexDataflowHelperFactories.length; i++) {
+            for (int j = 0; j < searchOpCallbackFactories.length; j++) {
+                AbstractTreeIndexOperatorDescriptor opDesc = Mockito.mock(AbstractTreeIndexOperatorDescriptor.class);
+                Mockito.when(opDesc.getIndexDataflowHelperFactory()).thenReturn(indexDataflowHelperFactories[i]);
+                Mockito.when(opDesc.getRetainInput()).thenReturn(false);
+                Mockito.when(opDesc.getRetainNull()).thenReturn(false);
+                Mockito.when(opDesc.getSearchOpCallbackFactory()).thenReturn(searchOpCallbackFactories[j]);
+                opDescs[k] = opDesc;
+                k++;
+            }
+        }
+        return opDescs;
+    }
+
+    private ISearchOperationCallbackFactory[] mockSearchOpCallbackFactories() throws HyracksDataException {
+        ISearchOperationCallback searchOpCallback = mockSearchOpCallback();
+        ISearchOperationCallbackFactory searchOpCallbackFactory = Mockito.mock(ISearchOperationCallbackFactory.class);
+        Mockito.when(searchOpCallbackFactory.createSearchOperationCallback(Mockito.anyLong(), Mockito.any()))
+                .thenReturn(searchOpCallback);
+        return new ISearchOperationCallbackFactory[] { searchOpCallbackFactory };
+    }
+
+    private ISearchOperationCallback mockSearchOpCallback() {
+        ISearchOperationCallback opCallback = Mockito.mock(ISearchOperationCallback.class);
+        return opCallback;
+    }
+
+    public class CountAnswer implements Answer<Object> {
+        protected int count = 0;
+
+        @Override
+        public Object answer(InvocationOnMock invocation) throws Throwable {
+            count++;
+            return null;
+        }
+
+        public int getCallCount() {
+            return count;
+        }
+
+        public void reset() {
+            count = 0;
+        }
+    }
+
+    public class CountAndThrowException extends CountAnswer {
+        private String errorMessage;
+
+        public CountAndThrowException(String errorMessage) {
+            this.errorMessage = errorMessage;
+        }
+
+        @Override
+        public Object answer(InvocationOnMock invocation) throws Throwable {
+            count++;
+            throw new HyracksDataException(errorMessage);
+        }
+    }
+
+    public class CountAndThrowError extends CountAnswer {
+        private String errorMessage;
+
+        public CountAndThrowError(String errorMessage) {
+            this.errorMessage = errorMessage;
+        }
+
+        @Override
+        public Object answer(InvocationOnMock invocation) throws Throwable {
+            count++;
+            throw new UnknownError(errorMessage);
+        }
+    }
+
+    public IFrameWriter[] createOutputWriters() throws Exception {
+        CountAnswer[] opens = new CountAnswer[] { openNormal, openException, openError };
+        CountAnswer[] nextFrames = new CountAnswer[] { nextFrameNormal, nextFrameException, nextFrameError };
+        CountAnswer[] fails = new CountAnswer[] { failNormal, failException, failError };
+        CountAnswer[] closes = new CountAnswer[] { closeNormal, closeException, closeError };
+        List<IFrameWriter> outputWriters = new ArrayList<IFrameWriter>();
+        for (CountAnswer openAnswer : opens) {
+            for (CountAnswer nextFrameAnswer : nextFrames) {
+                for (CountAnswer failAnswer : fails) {
+                    for (CountAnswer closeAnswer : closes) {
+                        IFrameWriter writer = Mockito.mock(IFrameWriter.class);
+                        Mockito.doAnswer(openAnswer).when(writer).open();
+                        Mockito.doAnswer(nextFrameAnswer).when(writer).nextFrame(Mockito.any());
+                        Mockito.doAnswer(failAnswer).when(writer).fail();
+                        Mockito.doAnswer(closeAnswer).when(writer).close();
+                        outputWriters.add(writer);
+                    }
+                }
+            }
+        }
+        return outputWriters.toArray(new IFrameWriter[outputWriters.size()]);
+    }
+
+    public void testWriter(IFrameWriter writer, ByteBuffer buffer) throws Exception {
+        resetAllCounters();
+        boolean failed = !validate(false);
+        if (failed) {
+            return;
+        }
+        try {
+            writer.open();
+            failed = !validate(false);
+            if (failed) {
+                return;
+            }
+            for (int i = 0; i < 10; i++) {
+                writer.nextFrame(buffer);
+                failed = !validate(false);
+                if (failed) {
+                    return;
+                }
+            }
+        } catch (Throwable th1) {
+            try {
+                failed = !validate(false);
+                if (failed) {
+                    return;
+                }
+                writer.fail();
+                failed = !validate(false);
+                if (failed) {
+                    return;
+                }
+            } catch (Throwable th2) {
+                failed = !validate(false);
+                if (failed) {
+                    return;
+                }
+            }
+        } finally {
+            if (!failed) {
+                try {
+                    failed = !validate(false);
+                    if (failed) {
+                        return;
+                    }
+                    writer.close();
+                    failed = !validate(true);
+                    if (failed) {
+                        return;
+                    }
+                } catch (Throwable th3) {
+                    failed = !validate(true);
+                    if (failed) {
+                        return;
+                    }
+                }
+            }
+        }
+        successes++;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-common/pom.xml b/hyracks/hyracks-storage-am-common/pom.xml
index d610c7d..2f4d0e9 100644
--- a/hyracks/hyracks-storage-am-common/pom.xml
+++ b/hyracks/hyracks-storage-am-common/pom.xml
@@ -41,20 +41,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
@@ -84,5 +71,10 @@
   		<type>jar</type>
   		<scope>compile</scope>
   	</dependency>
+    <dependency>
+         <groupId>org.apache.hyracks</groupId>
+         <artifactId>hyracks-util</artifactId>
+         <version>0.2.18-SNAPSHOT</version>
+    </dependency>
   </dependencies>
 </project>
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManager.java
deleted file mode 100644
index 57bcd6c..0000000
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManager.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 org.apache.hyracks.storage.am.common.api;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-
-public interface IFreePageManager {
-	public void open(int fileId);
-	
-	public void close();
-	
-	public int getFreePage(ITreeIndexMetaDataFrame metaFrame)
-			throws HyracksDataException;
-
-	public void addFreePage(ITreeIndexMetaDataFrame metaFrame, int freePage)
-			throws HyracksDataException;
-
-	public int getMaxPage(ITreeIndexMetaDataFrame metaFrame)
-			throws HyracksDataException;
-
-	public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage)
-			throws HyracksDataException;
-
-	public ITreeIndexMetaDataFrameFactory getMetaDataFrameFactory();
-
-	// required to return negative values
-	public byte getMetaPageLevelIndicator();
-
-	public byte getFreePageLevelIndicator();
-
-	// determined by examining level indicator
-	public boolean isMetaPage(ITreeIndexMetaDataFrame metaFrame);
-
-	public boolean isFreePage(ITreeIndexMetaDataFrame metaFrame);
-	
-	public int getFirstMetadataPage();		
-}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java
index 9fe9f06..8ea1f88 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java
@@ -34,7 +34,7 @@
      * Initializes the persistent state of an index.
      * An index cannot be created if it is in the activated state.
      * Calling create on an index that is deactivated has the effect of clearing the index.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is an error in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -45,7 +45,7 @@
     /**
      * Initializes the index's operational state. An index in the activated state may perform
      * operations via an {@link IIndexAccessor}.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is a problem in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -56,7 +56,7 @@
      * Resets the operational state of the index. Calling clear has the same logical effect
      * as calling deactivate(), destroy(), create(), then activate(), but not necessarily the
      * same physical effect.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is a problem in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -67,7 +67,7 @@
     /**
      * Deinitializes the index's operational state. An index in the deactivated state may not
      * perform operations.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is a problem in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -77,7 +77,7 @@
     /**
      * Removes the persistent state of an index.
      * An index cannot be destroyed if it is in the activated state.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is an error in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -89,7 +89,7 @@
      * Creates an {@link IIndexAccessor} for performing operations on this index.
      * An IIndexAccessor is not thread safe, but different IIndexAccessors can concurrently operate
      * on the same {@link IIndex}.
-     * 
+     *
      * @returns IIndexAccessor an accessor for this {@link IIndex}
      * @param modificationCallback
      *            the callback to be used for modification operations
@@ -103,7 +103,7 @@
     /**
      * Ensures that all pages (and tuples) of the index are logically consistent.
      * An assertion error is thrown if validation fails.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is an error performing validation
      */
@@ -126,9 +126,11 @@
      */
     public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
             boolean checkIfEmptyIndex) throws IndexException;
-    
+
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException;
+
     /**
-     * 
      * @return true if the index needs memory components
      */
     public boolean hasMemoryComponents();
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java
index 3fd38ee..1903222 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java
@@ -31,7 +31,7 @@
 public interface IIndexAccessor {
     /**
      * Inserts the given tuple.
-     * 
+     *
      * @param tuple
      *            Tuple to be inserted.
      * @throws HyracksDataException
@@ -45,7 +45,7 @@
     /**
      * Updates the tuple in the index matching the given tuple with the new
      * contents in the given tuple.
-     * 
+     *
      * @param tuple
      *            Tuple whose match in the index is to be update with the given
      *            tuples contents.
@@ -58,7 +58,7 @@
 
     /**
      * Deletes the tuple in the index matching the given tuple.
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
@@ -72,27 +72,27 @@
      * This operation is only supported by indexes with the notion of a unique key.
      * If tuple's key already exists, then this operation performs an update.
      * Otherwise, it performs an insert.
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
      *             If the BufferCache throws while un/pinning or un/latching.
      * @throws IndexException
      *             If there is no matching tuple in the index.
-     * 
+     *
      */
     public void upsert(ITupleReference tuple) throws HyracksDataException, IndexException;
-    
+
     /**
      * Creates a cursor appropriate for passing into search().
-     * 
+     *
      */
     public IIndexCursor createSearchCursor(boolean exclusive);
 
     /**
      * Open the given cursor for an index search using the given predicate as
      * search condition.
-     * 
+     *
      * @param icursor
      *            Cursor over the index entries satisfying searchPred.
      * @param searchPred
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java
index d390154..f371522 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java
@@ -16,31 +16,36 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-
-public interface IIndexBulkLoader {
-    /**
-     * Append a tuple to the index in the context of a bulk load.
-     * 
-     * @param tuple
-     *            Tuple to be inserted.
-     * @throws IndexException
-     *             If the input stream is invalid for bulk loading (e.g., is not sorted).
-     * @throws HyracksDataException
-     *             If the BufferCache throws while un/pinning or un/latching.
-     */
-    public void add(ITupleReference tuple) throws IndexException, HyracksDataException;
-
-    /**
-     * Finalize the bulk loading operation in the given context.
-     * 
-     * @throws IndexException
-     * @throws HyracksDataException
-     *             If the BufferCache throws while un/pinning or un/latching.
-     */
-    public void end() throws IndexException, HyracksDataException;
-
-}
+package org.apache.hyracks.storage.am.common.api;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+public interface IIndexBulkLoader {
+    /**
+     * Append a tuple to the index in the context of a bulk load.
+     *
+     * @param tuple
+     *            Tuple to be inserted.
+     * @throws IndexException
+     *             If the input stream is invalid for bulk loading (e.g., is not sorted).
+     * @throws HyracksDataException
+     *             If the BufferCache throws while un/pinning or un/latching.
+     */
+    public void add(ITupleReference tuple) throws IndexException, HyracksDataException;
+
+    /**
+     * Finalize the bulk loading operation in the given context.
+     *
+     * @throws IndexException
+     * @throws HyracksDataException
+     *             If the BufferCache throws while un/pinning or un/latching.
+     */
+    public void end() throws IndexException, HyracksDataException;
+
+    /**
+     * Release all resources held by this bulkloader, with no guarantee of
+     * persisted content.
+     */
+    void abort() throws HyracksDataException;
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexDataflowHelper.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexDataflowHelper.java
index 0906efe..b39e532 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexDataflowHelper.java
@@ -25,8 +25,14 @@
 public interface IIndexDataflowHelper {
     public void create() throws HyracksDataException;
 
+    /*
+     * If close throws an exception, it means that the index was not closed successfully.
+     */
     public void close() throws HyracksDataException;
 
+    /*
+     * If open throws an exception, it means that the index was not opened successfully.
+     */
     public void open() throws HyracksDataException;
 
     public void destroy() throws HyracksDataException;
@@ -36,6 +42,13 @@
     public FileReference getFileReference();
 
     public long getResourceID() throws HyracksDataException;
-    
+
     public IHyracksTaskContext getTaskContext();
+
+    public String getResourcePath();
+
+    /**
+     * @return The resource unique storage partition id
+     */
+    public int getResourcePartition();
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexLifecycleManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexLifecycleManager.java
index ad0fcef..4c00b93 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexLifecycleManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexLifecycleManager.java
@@ -21,18 +21,18 @@
 import java.util.List;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.IResourceMemoryManager;
 
-public interface IIndexLifecycleManager {
-    public IIndex getIndex(long resourceID) throws HyracksDataException;
-
-    public void register(long resourceID, IIndex index) throws HyracksDataException;
-
-    public void unregister(long resourceID) throws HyracksDataException;
-
-    public void open(long resourceID) throws HyracksDataException;
-
-    public void close(long resourceID) throws HyracksDataException;
-
+public interface IIndexLifecycleManager extends IResourceMemoryManager {
     public List<IIndex> getOpenIndexes();
-    
-}
\ No newline at end of file
+
+    public void register(String resourcePath, IIndex index) throws HyracksDataException;
+
+    public void open(String resourcePath) throws HyracksDataException;
+
+    public void close(String resourcePath) throws HyracksDataException;
+
+    public IIndex getIndex(String resourcePath) throws HyracksDataException;
+
+    public void unregister(String resourcePath) throws HyracksDataException;
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java
new file mode 100644
index 0000000..48d9e26
--- /dev/null
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java
@@ -0,0 +1,141 @@
+/*
+ * 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.hyracks.storage.am.common.api;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+
+public interface IMetaDataPageManager {
+    public static final long INVALID_LSN_OFFSET = -1;
+
+    /**
+     * This is the class through which one interfaces with index metadata.
+     * The index metadata contains information such as the LSN of the index, free page information,
+     * and filter page locations.
+     */
+    /**
+     * Open an index file's metadata
+     * @param fileId The file which to open the metadata of
+     */
+    public void open(int fileId);
+
+    /**
+     * Close an index file's metadata.
+     * @throws HyracksDataException
+     */
+
+    public void close() throws HyracksDataException;
+
+    /**
+     * Get the locaiton of a free page to use for index operations
+     * @param metaFrame A metadata frame to use to wrap the raw page
+     * @return A page location, or -1 if no free page could be found or allocated
+     * @throws HyracksDataException
+     */
+
+    public int getFreePage(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException;
+
+    /**
+     * Add a page back to the pool of free pages within an index file
+     * @param metaFrame A metadata frame to use to wrap the raw page
+     * @param freePage The page which to return to the free space
+     * @throws HyracksDataException
+     */
+
+    public void addFreePage(ITreeIndexMetaDataFrame metaFrame, int freePage) throws HyracksDataException;
+
+    /**
+     * Gets the highest page offset according to the metadata
+     * @param metaFrame A metadata frame to use to wrap the raw page
+     * @return The locaiton of the highest offset page
+     * @throws HyracksDataException
+     */
+
+    public int getMaxPage(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException;
+
+    /**
+     * Initializes the index metadata
+     * @param metaFrame A metadata farme to use to wrap the raw page
+     * @param currentMaxPage The highest page offset to consider valid
+     * @throws HyracksDataException
+     */
+
+    public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage) throws HyracksDataException;
+
+    public ITreeIndexMetaDataFrameFactory getMetaDataFrameFactory();
+
+    // required to return negative values
+    public byte getMetaPageLevelIndicator();
+
+    public byte getFreePageLevelIndicator();
+
+    // determined by examining level indicator
+
+    public boolean isMetaPage(ITreeIndexMetaDataFrame metaFrame);
+
+    public boolean isFreePage(ITreeIndexMetaDataFrame metaFrame);
+
+    /**
+     * Determines where the metadata page is located in an index file
+     * @return The locaiton of the metadata page, or -1 if the file appears to be corrupt
+     * @throws HyracksDataException
+     */
+
+    public int getFirstMetadataPage() throws HyracksDataException;
+
+    /**
+     * Initializes the metadata manager on an open index file
+     * @param metaFrame A metadata frame used to wrap the raw page
+     * @throws HyracksDataException
+     */
+
+    void init(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException;
+
+    /**
+     * Locate the filter page in an index file
+     * @return The offset of the filter page if it exists, or less than zero if no filter page exists yet
+     * @throws HyracksDataException
+     */
+
+    int getFilterPageId() throws HyracksDataException;
+
+    void setFilterPageId(int filterPageId) throws HyracksDataException;
+
+    long getLSN() throws HyracksDataException;
+
+    void setLSN(long lsn) throws HyracksDataException;
+
+    /**
+     * Set the cached page to manage for filter data
+     * @param page The page to manage
+     */
+
+    void setFilterPage(ICachedPage page);
+
+    ICachedPage getFilterPage();
+
+    boolean appendOnlyMode();
+
+    /**
+     * @return The LSN byte offset in the LSM disk component if the index is valid, otherwise {@link #INVALID_LSN_OFFSET}.
+     * @throws HyracksDataException
+     */
+    long getLSNOffset() throws HyracksDataException;
+
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetadataManagerFactory.java
similarity index 81%
rename from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
rename to hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetadataManagerFactory.java
index 3dbe0ab..e9dd674 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetadataManagerFactory.java
@@ -18,6 +18,8 @@
  */
 package org.apache.hyracks.storage.am.common.api;
 
-public interface IFreePageManagerFactory {
-    public IFreePageManager createFreePageManager();
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public interface IMetadataManagerFactory {
+    public IMetaDataPageManager createFreePageManager() throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java
index 5aac5a6..f22c239 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java
@@ -22,33 +22,43 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 
 /**
- * This operation callback allows for arbitrary actions to be taken while traversing 
- * an index structure. The {@link IModificationOperationCallback} will be called on 
+ * This operation callback allows for arbitrary actions to be taken while traversing
+ * an index structure. The {@link IModificationOperationCallback} will be called on
  * all modifying operations (e.g. insert, update, delete...) for all indexes.
- * 
+ *
  * @author zheilbron
  */
 public interface IModificationOperationCallback {
+    public enum Operation {
+        INSERT,
+        DELETE
+    }
 
     /**
-     * This method is called on a tuple that is about to traverse an index's structure 
-     * (i.e. before any pages are pinned or latched). 
-     *
+     * This method is called on a tuple that is about to traverse an index's structure
+     * (i.e. before any pages are pinned or latched).
      * The format of the tuple is the format that would be stored in the index itself.
-     * 
-     * @param tuple the tuple that is about to be operated on
+     * @param tuple
+     *            the tuple that is about to be operated on
      */
     public void before(ITupleReference tuple) throws HyracksDataException;
 
     /**
-     * This method is called on a tuple when a tuple with a matching key is found for the 
-     * current operation. It is possible that tuple is null, in which case no tuple with a 
+     * This method is called on a tuple when a tuple with a matching key is found for the
+     * current operation. It is possible that tuple is null, in which case no tuple with a
      * matching key was found.
-     * 
-     * When found is called, the leaf page where the tuple resides will be pinned and latched, 
+     * When found is called, the leaf page where the tuple resides will be pinned and latched,
      * so blocking operations should be avoided.
-     * 
-     * @param tuple a tuple with a matching key, otherwise null if none exists
+     * @param tuple
+     *            a tuple with a matching key, otherwise null if none exists
      */
     public void found(ITupleReference before, ITupleReference after) throws HyracksDataException;
+
+    /**
+     * This call specifies the next operation to be performed. It is used to allow
+     * a single operator to perform different operations per tuple
+     * @param op
+     * @throws HyracksDataException
+     */
+    public void setOp(Operation op) throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallbackFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallbackFactory.java
index 9d8093f..8d618c8 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallbackFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallbackFactory.java
@@ -24,6 +24,6 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IModificationOperationCallbackFactory extends Serializable {
-    public IModificationOperationCallback createModificationOperationCallback(long resourceId, Object resource, IHyracksTaskContext ctx)
-            throws HyracksDataException;
+    public IModificationOperationCallback createModificationOperationCallback(String resourcePath, long resourceId,
+            int resourcePartition, Object resource, IHyracksTaskContext ctx) throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchOperationCallback.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchOperationCallback.java
index 08ad1d0..9b1cd47 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchOperationCallback.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchOperationCallback.java
@@ -22,50 +22,56 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 
 /**
- * This operation callback allows for arbitrary actions to be taken while traversing 
- * an index structure. The {@link ISearchOperationCallback} will be called on 
+ * This operation callback allows for arbitrary actions to be taken while traversing
+ * an index structure. The {@link ISearchOperationCallback} will be called on
  * all search operations for ordered indexes only.
- * 
  * @author zheilbron
  */
 public interface ISearchOperationCallback {
 
     /**
-     * During an index search operation, this method will be called on tuples as they are 
-     * passed by with a search cursor. This call will be invoked while a leaf page is latched 
-     * and pinned. If the call returns false, then the page will be unlatched and unpinned and 
-     * {@link #reconcile(ITupleReference)} will be called with the tuple that was not proceeded 
+     * After the harness enters the operation components and before an index search operation starts,
+     * this method will be called on the search key.
+     * @param tuple
+     *            the tuple containing the search key (expected to be a point search key)
+     */
+    public void before(ITupleReference tuple) throws HyracksDataException;
+
+    /**
+     * During an index search operation, this method will be called on tuples as they are
+     * passed by with a search cursor. This call will be invoked while a leaf page is latched
+     * and pinned. If the call returns false, then the page will be unlatched and unpinned and
+     * {@link #reconcile(ITupleReference)} will be called with the tuple that was not proceeded
      * on.
-     * 
-     * @param tuple the tuple that is being passed over by the search cursor
+     * @param tuple
+     *            the tuple that is being passed over by the search cursor
      * @return true to proceed otherwise false to unlatch and unpin, leading to reconciliation
      */
     public boolean proceed(ITupleReference tuple) throws HyracksDataException;
 
     /**
-     * This method is only called on a tuple that was not 'proceeded' on 
-     * (see {@link #proceed(ITupleReference)}). This method allows an opportunity to reconcile 
-     * by performing any necessary actions before resuming the search (e.g. a try-lock may have 
+     * This method is only called on a tuple that was not 'proceeded' on
+     * (see {@link #proceed(ITupleReference)}). This method allows an opportunity to reconcile
+     * by performing any necessary actions before resuming the search (e.g. a try-lock may have
      * failed in the proceed call, and now in reconcile we should take a full (blocking) lock).
-     * 
-     * @param tuple the tuple that failed to proceed
+     * @param tuple
+     *            the tuple that failed to proceed
      */
     public void reconcile(ITupleReference tuple) throws HyracksDataException;
 
     /**
-     * This method is only called on a tuple that was reconciled on, but not found after 
-     * retraversing. This method allows an opportunity to cancel some action that was taken in 
+     * This method is only called on a tuple that was reconciled on, but not found after
+     * retraversing. This method allows an opportunity to cancel some action that was taken in
      * {@link #reconcile(ITupleReference))}.
-     * 
-     * @param tuple the tuple that was previously reconciled
+     * @param tuple
+     *            the tuple that was previously reconciled
      */
     public void cancel(ITupleReference tuple) throws HyracksDataException;
-    
+
     /**
      * This method is only called on a tuple that was reconciled on, and found after
-     * retraversing. This method allows an opportunity to do some subsequent action that was 
+     * retraversing. This method allows an opportunity to do some subsequent action that was
      * taken in {@link #reconcile(ITupleReference))}.
-     * 
      * @param tuple
      *            the tuple that was previously reconciled
      */
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchPredicate.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchPredicate.java
index 94a6a27..6a92e34 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchPredicate.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ISearchPredicate.java
@@ -21,10 +21,20 @@
 
 import java.io.Serializable;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 
 public interface ISearchPredicate extends Serializable {
-	public MultiComparator getLowKeyComparator();
+    public MultiComparator getLowKeyComparator();
 
-	public MultiComparator getHighKeyComparator();
-}
\ No newline at end of file
+    public MultiComparator getHighKeyComparator();
+
+    /**
+     * Get the search key to be used with point search operation on primary index.
+     * This method will only be called with point search predicates that only happen in primary index.
+     * @return
+     * @throws HyracksDataException
+     */
+    public ITupleReference getLowKey();
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndex.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndex.java
index d3a7c6d..a29f329 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndex.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndex.java
@@ -41,7 +41,7 @@
     /**
      * @return The index's free page manager.
      */
-    public IFreePageManager getFreePageManager();
+    public IMetaDataPageManager getMetaManager();
 
     /**
      * @return The number of fields tuples of this index have.
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java
index 31d159a..ac3fc3b 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java
@@ -31,14 +31,14 @@
 public interface ITreeIndexAccessor extends IIndexAccessor {
 	/**
 	 * Creates a cursor appropriate for passing into diskOrderScan().
-	 * 
+	 *
 	 */
 	public ITreeIndexCursor createDiskOrderScanCursor();
-	
+
 	/**
 	 * Open the given cursor for a disk-order scan, positioning the cursor to
 	 * the first leaf tuple.
-	 * 
+	 *
 	 * @param icursor
 	 *            Cursor to be opened for disk-order scanning.
 	 * @throws HyracksDataException
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexFrame.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexFrame.java
index 18fe4c0..9ac09a3 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexFrame.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexFrame.java
@@ -65,7 +65,7 @@
 
     public int getMaxTupleSize(int pageSize);
 
-    public int getBytesRequriedToWriteTuple(ITupleReference tuple);
+    public int getBytesRequiredToWriteTuple(ITupleReference tuple);
 
     // for debugging
     public String printHeader();
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
index 5de178f..e33b949 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
@@ -46,7 +46,7 @@
 
     public void addFreePage(int freePage);
 
-    // Special flag for LSM-Components to mark whether they are valid or not. 
+    // Special flag for LSM-Components to mark whether they are valid or not.
     public boolean isValid();
 
     // Set special validity flag.
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrameFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrameFactory.java
index 06ac690..7405833 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrameFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrameFactory.java
@@ -21,4 +21,4 @@
 
 public interface ITreeIndexMetaDataFrameFactory {
 	public ITreeIndexMetaDataFrame createFrame();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java
index baeabca..6b041eb 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java
@@ -31,6 +31,6 @@
     public void resetByTupleOffset(ByteBuffer buf, int tupleStartOffset);
 
     public void resetByTupleIndex(ITreeIndexFrame frame, int tupleIndex);
-    
+
     public int getTupleSize();
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java
index a4f67a4..b0debc9 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java
@@ -26,7 +26,7 @@
  * assumes that the modifications do not change the size of the tuple, and that
  * it does not change keys (e.g., BTree keys). This interface is used to
  * implement update scans.
- * 
+ *
  */
 public interface ITupleUpdater {
 	public void updateTuple(ITupleReference tuple);
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java
index 134dda8..5a7a4a7 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java
@@ -1,8 +1,3 @@
-package org.apache.hyracks.storage.am.common.api;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,11 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
+package org.apache.hyracks.storage.am.common.api;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
 public interface ITwoPCIndexBulkLoader {
-    
+
     /**
      * Append a "delete" tuple to the index in the context of a bulk load.
-     * 
+     *
      * @param tuple
      *            "delete" Tuple to be inserted.
      * @throws IndexException
@@ -34,7 +35,7 @@
      *             If the BufferCache throws while un/pinning or un/latching.
      */
     public void delete(ITupleReference tuple) throws IndexException, HyracksDataException;
-    
+
     /**
      * Abort the bulk modify op
      */
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualMetaDataPageManager.java
similarity index 92%
rename from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java
rename to hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualMetaDataPageManager.java
index 4247e64..0073f59 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualMetaDataPageManager.java
@@ -18,7 +18,7 @@
  */
 package org.apache.hyracks.storage.am.common.api;
 
-public interface IVirtualFreePageManager extends IFreePageManager {
+public interface IVirtualMetaDataPageManager extends IMetaDataPageManager {
     public int getCapacity();
 
     public void reset();
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java
index 3771fb2..0c5d2cc 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java
@@ -22,7 +22,7 @@
 public class IndexException extends Exception {
     private static final long serialVersionUID = 1L;
 
-    public IndexException(Exception e) {        
+    public IndexException(Exception e) {
         super(e);
     }
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java
index 588e7f7..988a304 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java
@@ -24,7 +24,7 @@
 	private static final long serialVersionUID = 1L;
 	private boolean handled = false;
 
-	public TreeIndexException(Exception e) {		
+	public TreeIndexException(Exception e) {
 		super(e);
 	}
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java
index 9fe2fca..dd69cb1 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java
@@ -20,15 +20,15 @@
 package org.apache.hyracks.storage.am.common.api;
 
 /**
- * Thrown when trying to bulk load an index with an unsorted input stream. 
+ * Thrown when trying to bulk load an index with an unsorted input stream.
  */
 public class UnsortedInputException extends IndexException {
 	private static final long serialVersionUID = 1L;
-	
+
 	public UnsortedInputException(Exception e) {
 		super(e);
 	}
-	
+
 	public UnsortedInputException(String message) {
         super(message);
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/data/PointablePrimitiveValueProviderFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/data/PointablePrimitiveValueProviderFactory.java
index d628540..7a0aa6d 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/data/PointablePrimitiveValueProviderFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/data/PointablePrimitiveValueProviderFactory.java
@@ -48,4 +48,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/AbstractTreeIndexOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/AbstractTreeIndexOperatorDescriptor.java
index 4c03158..868725e 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/AbstractTreeIndexOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/AbstractTreeIndexOperatorDescriptor.java
@@ -78,4 +78,4 @@
     public ITupleFilterFactory getTupleFilterFactory() {
         return tupleFilterFactory;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IIndexDataflowHelperFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IIndexDataflowHelperFactory.java
index 128fdaf..2a1dff4 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IIndexDataflowHelperFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IIndexDataflowHelperFactory.java
@@ -27,4 +27,4 @@
 public interface IIndexDataflowHelperFactory extends Serializable {
     public IIndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc,
             final IHyracksTaskContext ctx, int partition);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java
index b452db9..4ae6995 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java
@@ -25,8 +25,8 @@
 
 public interface ITreeIndexOperatorDescriptor extends IIndexOperatorDescriptor {
 	public IBinaryComparatorFactory[] getTreeIndexComparatorFactories();
-	
+
 	public ITypeTraits[] getTreeIndexTypeTraits();
-	
+
 	public ITupleFilterFactory getTupleFilterFactory();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexBulkLoadOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexBulkLoadOperatorNodePushable.java
index 82f9fd6..36b46a7 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexBulkLoadOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexBulkLoadOperatorNodePushable.java
@@ -33,8 +33,7 @@
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.common.tuples.PermutingFrameTupleReference;
 
-public class IndexBulkLoadOperatorNodePushable extends
-        AbstractUnaryInputUnaryOutputOperatorNodePushable {
+public class IndexBulkLoadOperatorNodePushable extends AbstractUnaryInputUnaryOutputOperatorNodePushable {
     protected final IIndexOperatorDescriptor opDesc;
     protected final IHyracksTaskContext ctx;
     protected final float fillFactor;
@@ -42,21 +41,18 @@
     protected final long numElementsHint;
     protected final boolean checkIfEmptyIndex;
     protected final IIndexDataflowHelper indexHelper;
+    protected final IRecordDescriptorProvider recDescProvider;
+    protected final PermutingFrameTupleReference tuple = new PermutingFrameTupleReference();
     protected FrameTupleAccessor accessor;
     protected IIndex index;
     protected IIndexBulkLoader bulkLoader;
-    protected IRecordDescriptorProvider recDescProvider;
-    protected PermutingFrameTupleReference tuple = new PermutingFrameTupleReference();
 
-    public IndexBulkLoadOperatorNodePushable(IIndexOperatorDescriptor opDesc,
-            IHyracksTaskContext ctx, int partition, int[] fieldPermutation,
-            float fillFactor, boolean verifyInput, long numElementsHint,
-            boolean checkIfEmptyIndex,
-            IRecordDescriptorProvider recordDescProvider) {
+    public IndexBulkLoadOperatorNodePushable(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx, int partition,
+            int[] fieldPermutation, float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, IRecordDescriptorProvider recordDescProvider) {
         this.opDesc = opDesc;
         this.ctx = ctx;
-        this.indexHelper = opDesc.getIndexDataflowHelperFactory()
-                .createIndexDataflowHelper(opDesc, ctx, partition);
+        this.indexHelper = opDesc.getIndexDataflowHelperFactory().createIndexDataflowHelper(opDesc, ctx, partition);
         this.fillFactor = fillFactor;
         this.verifyInput = verifyInput;
         this.numElementsHint = numElementsHint;
@@ -68,19 +64,16 @@
 
     @Override
     public void open() throws HyracksDataException {
-        RecordDescriptor recDesc = recDescProvider.getInputRecordDescriptor(
-                opDesc.getActivityId(), 0);
+        RecordDescriptor recDesc = recDescProvider.getInputRecordDescriptor(opDesc.getActivityId(), 0);
         accessor = new FrameTupleAccessor(recDesc);
         indexHelper.open();
         index = indexHelper.getIndexInstance();
         try {
-            bulkLoader = index.createBulkLoader(fillFactor, verifyInput,
-                    numElementsHint, checkIfEmptyIndex);
+            writer.open();
+            bulkLoader = index.createBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex);
         } catch (Exception e) {
-            indexHelper.close();
             throw new HyracksDataException(e);
         }
-        writer.open();
     }
 
     @Override
@@ -97,23 +90,37 @@
                 throw new HyracksDataException(e);
             }
         }
-        FrameUtils.flushFrame(buffer, writer);
 
+        FrameUtils.flushFrame(buffer, writer);
     }
 
     @Override
     public void close() throws HyracksDataException {
         try {
             bulkLoader.end();
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
+        } catch (Throwable th) {
+            throw new HyracksDataException(th);
         } finally {
-            indexHelper.close();
+            if (index != null) {
+                // If index was opened!
+                try {
+                    indexHelper.close();
+                } finally {
+                    writer.close();
+                }
+            }
         }
-        writer.close();
+    }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        writer.flush();
     }
 
     @Override
     public void fail() throws HyracksDataException {
+        if (index != null) {
+            writer.fail();
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexCreateOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexCreateOperatorNodePushable.java
index 3f8ca4a..230d8ab 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexCreateOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexCreateOperatorNodePushable.java
@@ -55,4 +55,4 @@
     @Override
     public void setOutputFrameWriter(int index, IFrameWriter writer, RecordDescriptor recordDesc) {
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java
index 932994d..7110e4b 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java
@@ -19,7 +19,6 @@
 
 package org.apache.hyracks.storage.am.common.dataflow;
 
-import java.io.File;
 import java.io.IOException;
 
 import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -31,8 +30,8 @@
 import org.apache.hyracks.storage.am.common.util.IndexFileNameUtil;
 import org.apache.hyracks.storage.common.file.ILocalResourceFactory;
 import org.apache.hyracks.storage.common.file.ILocalResourceRepository;
+import org.apache.hyracks.storage.common.file.IResourceIdFactory;
 import org.apache.hyracks.storage.common.file.LocalResource;
-import org.apache.hyracks.storage.common.file.ResourceIdFactory;
 
 public abstract class IndexDataflowHelper implements IIndexDataflowHelper {
 
@@ -40,13 +39,13 @@
     protected final IHyracksTaskContext ctx;
     protected final IIndexLifecycleManager lcManager;
     protected final ILocalResourceRepository localResourceRepository;
-    protected final ResourceIdFactory resourceIdFactory;
+    protected final IResourceIdFactory resourceIdFactory;
     protected final FileReference file;
     protected final int partition;
-    protected final int ioDeviceId;
     protected final boolean durable;
-
     protected IIndex index;
+    protected final String resourcePath;
+    protected final int resourcePartition;
 
     public IndexDataflowHelper(IIndexOperatorDescriptor opDesc, final IHyracksTaskContext ctx, int partition,
             boolean durable) {
@@ -56,10 +55,10 @@
         this.localResourceRepository = opDesc.getStorageManager().getLocalResourceRepository(ctx);
         this.resourceIdFactory = opDesc.getStorageManager().getResourceIdFactory(ctx);
         this.partition = partition;
-        this.ioDeviceId = opDesc.getFileSplitProvider().getFileSplits()[partition].getIODeviceId();
-        this.file = new FileReference(new File(IndexFileNameUtil.prepareFileName(opDesc.getFileSplitProvider()
-                .getFileSplits()[partition].getLocalFile().getFile().getPath(), ioDeviceId)));
+        this.file = IndexFileNameUtil.getIndexAbsoluteFileRef(opDesc, partition, ctx.getIOManager());
+        this.resourcePath = file.getFile().getPath();
         this.durable = durable;
+        this.resourcePartition = opDesc.getFileSplitProvider().getFileSplits()[partition].getPartition();
     }
 
     protected abstract IIndex createIndexInstance() throws HyracksDataException;
@@ -72,73 +71,71 @@
     @Override
     public void create() throws HyracksDataException {
         synchronized (lcManager) {
-            long resourceID = getResourceID();
-            index = lcManager.getIndex(resourceID);
+            index = lcManager.getIndex(resourcePath);
             if (index != null) {
-                lcManager.unregister(resourceID);
+                lcManager.unregister(resourcePath);
             } else {
                 index = createIndexInstance();
             }
 
-            // The previous resource ID needs to be removed since calling IIndex.create() may possibly destroy 
-            // any physical artifact that the LocalResourceRepository is managing (e.g. a file containing the resource ID). 
+            // The previous resource ID needs to be removed since calling IIndex.create() may possibly destroy
+            // any physical artifact that the LocalResourceRepository is managing (e.g. a file containing the resource ID).
             // Once the index has been created, a new resource ID can be generated.
+            long resourceID = getResourceID();
             if (resourceID != -1) {
-                localResourceRepository.deleteResourceByName(file.getFile().getPath());
+                localResourceRepository.deleteResourceByPath(resourcePath);
             }
             index.create();
             try {
-                //TODO Create LocalResource through LocalResourceFactory interface
                 resourceID = resourceIdFactory.createId();
                 ILocalResourceFactory localResourceFactory = opDesc.getLocalResourceFactoryProvider()
                         .getLocalResourceFactory();
-                localResourceRepository.insert(localResourceFactory.createLocalResource(resourceID, file.getFile()
-                        .getPath(), partition));
+                String resourceName = opDesc.getFileSplitProvider().getFileSplits()[partition].getLocalFile().getFile()
+                        .getPath();
+                localResourceRepository.insert(localResourceFactory.createLocalResource(resourceID, resourceName,
+                        resourcePartition, resourcePath));
             } catch (IOException e) {
                 throw new HyracksDataException(e);
             }
-            lcManager.register(resourceID, index);
+            lcManager.register(resourcePath, index);
         }
     }
 
     @Override
     public void open() throws HyracksDataException {
         synchronized (lcManager) {
-            long resourceID = getResourceID();
-
-            if (resourceID == -1) {
+            if (getResourceID() == -1) {
                 throw new HyracksDataException("Index does not have a valid resource ID. Has it been created yet?");
             }
 
-            index = lcManager.getIndex(resourceID);
+            index = lcManager.getIndex(resourcePath);
             if (index == null) {
                 index = createIndexInstance();
-                lcManager.register(resourceID, index);
+                lcManager.register(resourcePath, index);
             }
-            lcManager.open(resourceID);
+            lcManager.open(resourcePath);
         }
     }
 
     @Override
     public void close() throws HyracksDataException {
         synchronized (lcManager) {
-            lcManager.close(getResourceID());
+            lcManager.close(resourcePath);
         }
     }
 
     @Override
     public void destroy() throws HyracksDataException {
         synchronized (lcManager) {
-            long resourceID = getResourceID();
-            index = lcManager.getIndex(resourceID);
+            index = lcManager.getIndex(resourcePath);
             if (index != null) {
-                lcManager.unregister(resourceID);
+                lcManager.unregister(resourcePath);
             } else {
                 index = createIndexInstance();
             }
 
-            if (resourceID != -1) {
-                localResourceRepository.deleteResourceByName(file.getFile().getPath());
+            if (getResourceID() != -1) {
+                localResourceRepository.deleteResourceByPath(resourcePath);
             }
             index.destroy();
         }
@@ -151,16 +148,22 @@
 
     @Override
     public long getResourceID() throws HyracksDataException {
-        LocalResource localResource = localResourceRepository.getResourceByName(file.getFile().getPath());
-        if (localResource == null) {
-            return -1;
-        } else {
-            return localResource.getResourceId();
-        }
+        LocalResource lr = localResourceRepository.getResourceByPath(resourcePath);
+        return lr == null ? -1 : lr.getResourceId();
     }
 
     @Override
     public IHyracksTaskContext getTaskContext() {
         return ctx;
     }
-}
\ No newline at end of file
+
+    @Override
+    public String getResourcePath() {
+        return resourcePath;
+    }
+
+    @Override
+    public int getResourcePartition() {
+        return resourcePartition;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDropOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDropOperatorNodePushable.java
index 2a59f13..650685b 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDropOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDropOperatorNodePushable.java
@@ -56,4 +56,4 @@
     @Override
     public void setOutputFrameWriter(int index, IFrameWriter writer, RecordDescriptor recordDesc) {
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
index da32f87..9438632 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
@@ -55,6 +55,7 @@
     protected IIndexAccessor indexAccessor;
     protected ITupleFilter tupleFilter;
     protected IModificationOperationCallback modCallback;
+    protected IIndex index;
 
     public IndexInsertUpdateDeleteOperatorNodePushable(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition, int[] fieldPermutation, IRecordDescriptorProvider recordDescProvider, IndexOperation op) {
@@ -63,7 +64,7 @@
         this.indexHelper = opDesc.getIndexDataflowHelperFactory().createIndexDataflowHelper(opDesc, ctx, partition);
         this.recordDescProvider = recordDescProvider;
         this.op = op;
-        tuple.setFieldPermutation(fieldPermutation);
+        this.tuple.setFieldPermutation(fieldPermutation);
     }
 
     @Override
@@ -71,12 +72,13 @@
         RecordDescriptor inputRecDesc = recordDescProvider.getInputRecordDescriptor(opDesc.getActivityId(), 0);
         accessor = new FrameTupleAccessor(inputRecDesc);
         writeBuffer = new VSizeFrame(ctx);
-        writer.open();
         indexHelper.open();
-        IIndex index = indexHelper.getIndexInstance();
+        index = indexHelper.getIndexInstance();
         try {
+            writer.open();
             modCallback = opDesc.getModificationOpCallbackFactory().createModificationOperationCallback(
-                    indexHelper.getResourceID(), index, ctx);
+                    indexHelper.getResourcePath(), indexHelper.getResourceID(), indexHelper.getResourcePartition(),
+                    index, ctx);
             indexAccessor = index.createAccessor(modCallback, NoOpOperationCallback.INSTANCE);
             ITupleFilterFactory tupleFilterFactory = opDesc.getTupleFilterFactory();
             if (tupleFilterFactory != null) {
@@ -84,7 +86,6 @@
                 frameTuple = new FrameTupleReference();
             }
         } catch (Exception e) {
-            indexHelper.close();
             throw new HyracksDataException(e);
         }
     }
@@ -129,8 +130,8 @@
                         break;
                     }
                     default: {
-                        throw new HyracksDataException("Unsupported operation " + op
-                                + " in tree index InsertUpdateDelete operator");
+                        throw new HyracksDataException(
+                                "Unsupported operation " + op + " in tree index InsertUpdateDelete operator");
                     }
                 }
             } catch (HyracksDataException e) {
@@ -147,15 +148,24 @@
 
     @Override
     public void close() throws HyracksDataException {
-        try {
-            writer.close();
-        } finally {
-            indexHelper.close();
+        if (index != null) {
+            try {
+                writer.close();
+            } finally {
+                indexHelper.close();
+            }
         }
     }
 
     @Override
     public void fail() throws HyracksDataException {
-        writer.fail();
+        if (index != null) {
+            writer.fail();
+        }
+    }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        writer.flush();
     }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java
index b3213d1..5953abe 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexLifecycleManager.java
@@ -25,6 +25,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.lifecycle.ILifeCycleComponent;
@@ -34,9 +35,8 @@
 public class IndexLifecycleManager implements IIndexLifecycleManager, ILifeCycleComponent {
     private static final long DEFAULT_MEMORY_BUDGET = 1024 * 1024 * 100; // 100 megabytes
 
-    private final Map<Long, IndexInfo> indexInfos;
+    private final Map<String, IndexInfo> indexInfos;
     private final long memoryBudget;
-
     private long memoryUsed;
 
     public IndexLifecycleManager() {
@@ -44,7 +44,7 @@
     }
 
     public IndexLifecycleManager(long memoryBudget) {
-        this.indexInfos = new HashMap<Long, IndexInfo>();
+        this.indexInfos = new HashMap<>();
         this.memoryBudget = memoryBudget;
         this.memoryUsed = 0;
     }
@@ -61,70 +61,15 @@
         }
 
         info.index.deactivate();
-        memoryUsed -= info.index.getMemoryAllocationSize();
-        info.isOpen = false;
-
-        return true;
-    }
-
-    @Override
-    public IIndex getIndex(long resourceID) {
-        IndexInfo info = indexInfos.get(resourceID);
-        return info == null ? null : info.index;
-    }
-
-    @Override
-    public void register(long resourceID, IIndex index) throws HyracksDataException {
-        if (indexInfos.containsKey(resourceID)) {
-            throw new HyracksDataException("Index with resource ID " + resourceID + " already exists.");
-        }
-
-        indexInfos.put(resourceID, new IndexInfo(index));
-    }
-
-    @Override
-    public void unregister(long resourceID) throws HyracksDataException {
-        IndexInfo info = indexInfos.remove(resourceID);
-        if (info == null) {
-            throw new HyracksDataException("Index with resource ID " + resourceID + " does not exist.");
-        }
-
-        if (info.referenceCount != 0) {
-            indexInfos.put(resourceID, info);
-            throw new HyracksDataException("Cannot remove index while it is open.");
-        }
-
-        if (info.isOpen) {
-            info.index.deactivate();
-            memoryUsed -= info.index.getMemoryAllocationSize();
-        }
-    }
-
-    @Override
-    public void open(long resourceID) throws HyracksDataException {
-        IndexInfo info = indexInfos.get(resourceID);
-        if (info == null) {
-            throw new HyracksDataException("Failed to open index with resource ID " + resourceID
-                    + " since it does not exist.");
-        }
-
-        if (!info.isOpen) {
-            long inMemorySize = info.index.getMemoryAllocationSize();
-            while (memoryUsed + inMemorySize > memoryBudget) {
-                if (!evictCandidateIndex()) {
-                    throw new HyracksDataException("Cannot activate index since memory budget would be exceeded.");
-                }
+        //find resource name and deallocate its memory
+        for (Entry<String, IndexInfo> entry : indexInfos.entrySet()) {
+            if (entry.getValue() == info) {
+                deallocateMemory(entry.getKey());
+                break;
             }
-            info.index.activate();
-            info.isOpen = true;
-            memoryUsed += inMemorySize;
         }
-        info.touch();
-    }
-
-    @Override
-    public void close(long resourceID) {
-        indexInfos.get(resourceID).untouch();
+        info.isOpen = false;
+        return true;
     }
 
     private class IndexInfo implements Comparable<IndexInfo> {
@@ -132,12 +77,14 @@
         private int referenceCount;
         private long lastAccess;
         private boolean isOpen;
+        private boolean memoryAllocated;
 
         public IndexInfo(IIndex index) {
             this.index = index;
             this.lastAccess = -1;
             this.referenceCount = 0;
             this.isOpen = false;
+            this.memoryAllocated = false;
         }
 
         public void touch() {
@@ -182,7 +129,6 @@
                     }
                 }
             }
-
         }
 
         public String toString() {
@@ -227,12 +173,98 @@
 
         String headerFormat = "%-20s %-10s %-20s %-20s %-20s\n";
         String rowFormat = "%-20d %-10b %-20d %-20s %-20s\n";
-        sb.append(String.format(headerFormat, "ResourceID", "Open", "Reference Count", "Last Access", "Index Name"));
+        sb.append(String.format(headerFormat, "ResourceName", "Open", "Reference Count", "Last Access", "Index Name"));
         IndexInfo ii;
-        for (Map.Entry<Long, IndexInfo> entry : indexInfos.entrySet()) {
+        for (Map.Entry<String, IndexInfo> entry : indexInfos.entrySet()) {
             ii = entry.getValue();
             sb.append(String.format(rowFormat, entry.getKey(), ii.isOpen, ii.referenceCount, ii.lastAccess, ii.index));
         }
         os.write(sb.toString().getBytes());
     }
-}
\ No newline at end of file
+
+    @Override
+    public void register(String resourcePath, IIndex index) throws HyracksDataException {
+        if (indexInfos.containsKey(resourcePath)) {
+            throw new HyracksDataException("Index with resource name " + resourcePath + " already exists.");
+        }
+        indexInfos.put(resourcePath, new IndexInfo(index));
+    }
+
+    @Override
+    public void open(String resourcePath) throws HyracksDataException {
+        IndexInfo info = indexInfos.get(resourcePath);
+        if (info == null) {
+            throw new HyracksDataException(
+                    "Failed to open index with resource name " + resourcePath + " since it does not exist.");
+        }
+
+        if (!info.isOpen) {
+            allocateMemory(resourcePath);
+            info.index.activate();
+            info.isOpen = true;
+        }
+        info.touch();
+    }
+
+    @Override
+    public void close(String resourcePath) throws HyracksDataException {
+        indexInfos.get(resourcePath).untouch();
+    }
+
+    @Override
+    public IIndex getIndex(String resourcePath) throws HyracksDataException {
+        IndexInfo info = indexInfos.get(resourcePath);
+        return info == null ? null : info.index;
+    }
+
+    @Override
+    public void unregister(String resourcePath) throws HyracksDataException {
+        IndexInfo info = indexInfos.get(resourcePath);
+        if (info == null) {
+            throw new HyracksDataException("Index with resource name " + resourcePath + " does not exist.");
+        }
+
+        if (info.referenceCount != 0) {
+            indexInfos.put(resourcePath, info);
+            throw new HyracksDataException("Cannot remove index while it is open.");
+        }
+
+        if (info.isOpen) {
+            info.index.deactivate();
+            deallocateMemory(resourcePath);
+        }
+        indexInfos.remove(resourcePath);
+    }
+
+    @Override
+    public void allocateMemory(String resourcePath) throws HyracksDataException {
+        IndexInfo info = indexInfos.get(resourcePath);
+        if (info == null) {
+            throw new HyracksDataException("Failed to allocate memory for index with resource ID " + resourcePath
+                    + " since it does not exist.");
+        }
+        if (!info.memoryAllocated) {
+            long inMemorySize = info.index.getMemoryAllocationSize();
+            while (memoryUsed + inMemorySize > memoryBudget) {
+                if (!evictCandidateIndex()) {
+                    throw new HyracksDataException(
+                            "Cannot allocate memory for index since memory budget would be exceeded.");
+                }
+            }
+            memoryUsed += inMemorySize;
+            info.memoryAllocated = true;
+        }
+    }
+
+    private void deallocateMemory(String resourcePath) throws HyracksDataException {
+        IndexInfo info = indexInfos.get(resourcePath);
+        if (info == null) {
+            throw new HyracksDataException("Failed to deallocate memory for index with resource name " + resourcePath
+                    + " since it does not exist.");
+        }
+        if (info.isOpen && info.memoryAllocated) {
+            memoryUsed -= info.index.getMemoryAllocationSize();
+            info.memoryAllocated = false;
+        }
+    }
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java
index 3db94e8..c4f3fca 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java
@@ -107,11 +107,10 @@
 
     @Override
     public void open() throws HyracksDataException {
-        accessor = new FrameTupleAccessor(inputRecDesc);
         writer.open();
         indexHelper.open();
         index = indexHelper.getIndexInstance();
-
+        accessor = new FrameTupleAccessor(inputRecDesc);
         if (retainNull) {
             int fieldCount = getFieldCount();
             nullTupleBuild = new ArrayTupleBuilder(fieldCount);
@@ -141,7 +140,6 @@
                 frameTuple = new FrameTupleReference();
             }
         } catch (Exception e) {
-            indexHelper.close();
             throw new HyracksDataException(e);
         }
     }
@@ -164,13 +162,12 @@
                 dos.write(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
                 tb.addFieldEndOffset();
             }
-            FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0,
-                    tb.getSize());
+            FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
         }
 
         if (!matched && retainInput && retainNull) {
-            FrameUtils.appendConcatToWriter(writer, appender, accessor, tupleIndex,
-                    nullTupleBuild.getFieldEndOffsets(), nullTupleBuild.getByteArray(), 0, nullTupleBuild.getSize());
+            FrameUtils.appendConcatToWriter(writer, appender, accessor, tupleIndex, nullTupleBuild.getFieldEndOffsets(),
+                    nullTupleBuild.getByteArray(), 0, nullTupleBuild.getSize());
         }
     }
 
@@ -191,17 +188,52 @@
     }
 
     @Override
+    public void flush() throws HyracksDataException {
+        appender.flush(writer);
+    }
+
+    @Override
     public void close() throws HyracksDataException {
-        try {
-            appender.flush(writer, true);
+        HyracksDataException closeException = null;
+        if (index != null) {
+            // if index == null, then the index open was not successful
+            try {
+                appender.write(writer, true);
+            } catch (Throwable th) {
+                closeException = new HyracksDataException(th);
+            }
+
             try {
                 cursor.close();
-            } catch (Exception e) {
-                throw new HyracksDataException(e);
+            } catch (Throwable th) {
+                if (closeException == null) {
+                    closeException = new HyracksDataException(th);
+                } else {
+                    closeException.addSuppressed(th);
+                }
             }
+            try {
+                indexHelper.close();
+            } catch (Throwable th) {
+                if (closeException == null) {
+                    closeException = new HyracksDataException(th);
+                } else {
+                    closeException.addSuppressed(th);
+                }
+            }
+        }
+        try {
+            // will definitely be called regardless of exceptions
             writer.close();
-        } finally {
-            indexHelper.close();
+        } catch (Throwable th) {
+            if (closeException == null) {
+                closeException = new HyracksDataException(th);
+            } else {
+                closeException.addSuppressed(th);
+            }
+        }
+        if (closeException != null) {
+            throw closeException;
         }
     }
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexBulkLoadOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexBulkLoadOperatorDescriptor.java
index b1e6427..0823a74 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexBulkLoadOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexBulkLoadOperatorDescriptor.java
@@ -65,4 +65,4 @@
         return new IndexBulkLoadOperatorNodePushable(this, ctx, partition, fieldPermutation, fillFactor, verifyInput,
                 numElementsHint, checkIfEmptyIndex, recordDescProvider);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexCreateOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexCreateOperatorDescriptor.java
index b315f8b..e3d00d5 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexCreateOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexCreateOperatorDescriptor.java
@@ -43,8 +43,8 @@
             ILocalResourceFactoryProvider localResourceFactoryProvider,
             IModificationOperationCallbackFactory modificationOpCallbackFactory) {
         super(spec, 0, 0, null, storageManager, lifecycleManagerProvider, fileSplitProvider, typeTraits,
-                comparatorFactories, bloomFilterKeyFields, dataflowHelperFactory, null, false,
-                false, null, localResourceFactoryProvider, NoOpOperationCallbackFactory.INSTANCE, modificationOpCallbackFactory);
+                comparatorFactories, bloomFilterKeyFields, dataflowHelperFactory, null, false, false, null,
+                localResourceFactoryProvider, NoOpOperationCallbackFactory.INSTANCE, modificationOpCallbackFactory);
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorDescriptor.java
index 2c5172d..d3f1723 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorDescriptor.java
@@ -50,4 +50,4 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         return new TreeIndexDiskOrderScanOperatorNodePushable(this, ctx, partition);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java
index 8c73272..170950e 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java
@@ -56,12 +56,12 @@
         try {
             ITreeIndexFrame cursorFrame = treeIndex.getLeafFrameFactory().createFrame();
             ITreeIndexCursor cursor = treeIndexHelper.createDiskOrderScanCursor(cursorFrame);
-            ISearchOperationCallback searchCallback = opDesc.getSearchOpCallbackFactory().createSearchOperationCallback(
-                    treeIndexHelper.getResourceID(), ctx);
-            ITreeIndexAccessor indexAccessor = (ITreeIndexAccessor) treeIndex.createAccessor(
-                    NoOpOperationCallback.INSTANCE, searchCallback);
-            writer.open();
+            ISearchOperationCallback searchCallback = opDesc.getSearchOpCallbackFactory()
+                    .createSearchOperationCallback(treeIndexHelper.getResourceID(), ctx);
+            ITreeIndexAccessor indexAccessor = (ITreeIndexAccessor) treeIndex
+                    .createAccessor(NoOpOperationCallback.INSTANCE, searchCallback);
             try {
+                writer.open();
                 indexAccessor.diskOrderScan(cursor);
                 int fieldCount = treeIndex.getFieldCount();
                 FrameTupleAppender appender = new FrameTupleAppender(new VSizeFrame(ctx));
@@ -81,18 +81,24 @@
 
                     FrameUtils.appendToWriter(writer, appender, tb.getFieldEndOffsets(), tb.getByteArray(), 0,
                             tb.getSize());
+
                 }
-                appender.flush(writer, true);
-            } catch (Exception e) {
+                appender.write(writer, true);
+            } catch (Throwable th) {
                 writer.fail();
-                throw new HyracksDataException(e);
+                throw new HyracksDataException(th);
             } finally {
-                cursor.close();
-                writer.close();
+                try {
+                    cursor.close();
+                } catch (Exception cursorCloseException) {
+                    throw new IllegalStateException(cursorCloseException);
+                } finally {
+                    writer.close();
+                }
             }
-        } catch (Exception e) {
+        } catch (Throwable th) {
             treeIndexHelper.close();
-            throw new HyracksDataException(e);
+            throw new HyracksDataException(th);
         }
     }
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexInsertUpdateDeleteOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
index 8867065..128be56 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
@@ -62,4 +62,4 @@
         return new IndexInsertUpdateDeleteOperatorNodePushable(this, ctx, partition, fieldPermutation,
                 recordDescProvider, op);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorDescriptor.java
index c99b1e5..1e9b75e0 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorDescriptor.java
@@ -38,7 +38,7 @@
 
     private static final long serialVersionUID = 1L;
     private static final RecordDescriptor recDesc = new RecordDescriptor(
-            new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+            new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
     public TreeIndexStatsOperatorDescriptor(IOperatorDescriptorRegistry spec, IStorageManagerInterface storageManager,
             IIndexLifecycleManagerProvider lifecycleManagerProvider, IFileSplitProvider fileSplitProvider,
@@ -55,4 +55,4 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         return new TreeIndexStatsOperatorNodePushable(this, ctx, partition);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
index 51ca3c2..f70df29 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexStatsOperatorNodePushable.java
@@ -38,6 +38,7 @@
     private final AbstractTreeIndexOperatorDescriptor opDesc;
     private final IHyracksTaskContext ctx;
     private final TreeIndexDataflowHelper treeIndexHelper;
+    private final UTF8StringSerializerDeserializer utf8SerDer = new UTF8StringSerializerDeserializer();
     private TreeIndexStatsGatherer statsGatherer;
 
     public TreeIndexStatsOperatorNodePushable(AbstractTreeIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
@@ -67,26 +68,26 @@
             IBufferCache bufferCache = opDesc.getStorageManager().getBufferCache(ctx);
             IFileMapProvider fileMapProvider = opDesc.getStorageManager().getFileMapProvider(ctx);
             int indexFileId = fileMapProvider.lookupFileId(treeIndexHelper.getFileReference());
-            statsGatherer = new TreeIndexStatsGatherer(bufferCache, treeIndex.getFreePageManager(), indexFileId,
+            statsGatherer = new TreeIndexStatsGatherer(bufferCache, treeIndex.getMetaManager(), indexFileId,
                     treeIndex.getRootPageId());
             TreeIndexStats stats = statsGatherer.gatherStats(treeIndex.getLeafFrameFactory().createFrame(), treeIndex
-                    .getInteriorFrameFactory().createFrame(), treeIndex.getFreePageManager().getMetaDataFrameFactory()
+                    .getInteriorFrameFactory().createFrame(), treeIndex.getMetaManager().getMetaDataFrameFactory()
                     .createFrame());
             // Write the stats output as a single string field.
             FrameTupleAppender appender = new FrameTupleAppender(new VSizeFrame(ctx));
             ArrayTupleBuilder tb = new ArrayTupleBuilder(1);
             DataOutput dos = tb.getDataOutput();
             tb.reset();
-            UTF8StringSerializerDeserializer.INSTANCE.serialize(stats.toString(), dos);
+            utf8SerDer.serialize(stats.toString(), dos);
             tb.addFieldEndOffset();
             if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
-                throw new HyracksDataException(
-                        "Record size (" + tb.getSize() + ") larger than frame size (" + appender.getBuffer().capacity()
-                                + ")");
+                throw new HyracksDataException("Record size (" + tb.getSize() + ") larger than frame size ("
+                        + appender.getBuffer().capacity() + ")");
             }
-            appender.flush(writer, false);
+            appender.write(writer, false);
         } catch (Exception e) {
             writer.fail();
+            throw new HyracksDataException(e);
         } finally {
             writer.close();
             treeIndexHelper.close();
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/DocumentStringFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/DocumentStringFieldValueGenerator.java
index cff11dc..1e8077c 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/DocumentStringFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/DocumentStringFieldValueGenerator.java
@@ -27,6 +27,8 @@
 import java.util.List;
 import java.util.Random;
 
+import org.apache.hyracks.util.MathUtil;
+
 public class DocumentStringFieldValueGenerator implements IFieldValueGenerator<String> {
     private final String FIRST_NAMES_FILE = "dist.all.first.cleaned";
     private final String LAST_NAMES_FILE = "dist.all.last.cleaned";
@@ -82,7 +84,7 @@
     @Override
     public String next() {
         StringBuilder strBuilder = new StringBuilder();
-        int numWords = Math.abs(rnd.nextInt()) % (docMaxWords - docMinWords + 1) + docMinWords;
+        int numWords = MathUtil.stripSignBit(rnd.nextInt()) % (docMaxWords - docMinWords + 1) + docMinWords;
         for (int i = 0; i < numWords; i++) {
             int ix = ProbabilityHelper.choose(cumulIntRanges, rnd.nextInt());
             strBuilder.append(tokenDict.get(ix));
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java
index ee763e4..5af0b0f 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java
@@ -27,6 +27,8 @@
 import java.util.List;
 import java.util.Random;
 
+import org.apache.hyracks.util.MathUtil;
+
 public class PersonNameFieldValueGenerator implements IFieldValueGenerator<String> {
     private final String FIRST_NAMES_FILE = "dist.all.first.cleaned";
     private final String LAST_NAMES_FILE = "dist.all.last.cleaned";
@@ -76,22 +78,22 @@
         StringBuilder strBuilder = new StringBuilder();
 
         // First name.
-        int fix = Math.abs(rnd.nextInt()) % firstNames.size();
+        int fix = MathUtil.stripSignBit(rnd.nextInt()) % firstNames.size();
         strBuilder.append(firstNames.get(fix));
         strBuilder.append(" ");
-        
+
         // Optional middle initial.
         double d = Math.abs(rnd.nextDouble());
         if (d <= middleInitialProb) {
-            int mix = Math.abs(rnd.nextInt()) % letters.length();
+            int mix = MathUtil.stripSignBit(rnd.nextInt()) % letters.length();
             strBuilder.append(letters.charAt(mix));
             strBuilder.append(". ");
         }
-        
+
         // Last name.
-        int lix = Math.abs(rnd.nextInt()) % lastNames.size();
+        int lix = MathUtil.stripSignBit(rnd.nextInt()) % lastNames.size();
         strBuilder.append(lastNames.get(lix));
-        
+
         return strBuilder.toString();
     }
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java
index a5f781d..ddca6f3 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java
@@ -22,17 +22,17 @@
 public class SortedDoubleFieldValueGenerator implements IFieldValueGenerator<Double> {
     private double val;
     private final double startVal;
-    
+
     public SortedDoubleFieldValueGenerator() {
         startVal = 0.0d;
         reset();
     }
-    
+
     public SortedDoubleFieldValueGenerator(double startVal) {
         this.startVal = startVal;
         reset();
     }
-    
+
     @Override
     public Double next() {
         return val++;
@@ -40,6 +40,6 @@
 
     @Override
     public void reset() {
-        val = startVal;        
+        val = startVal;
     }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java
index 5c77896..1e5dd19 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java
@@ -22,17 +22,17 @@
 public class SortedFloatFieldValueGenerator implements IFieldValueGenerator<Float> {
     private float val = 0.0f;
     private final float startVal;
-    
+
     public SortedFloatFieldValueGenerator() {
         startVal = 0.0f;
         reset();
     }
-    
+
     public SortedFloatFieldValueGenerator(float startVal) {
         this.startVal = startVal;
         reset();
     }
-    
+
     @Override
     public Float next() {
         return val++;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java
index be97fea..3ab17ca 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java
@@ -27,12 +27,12 @@
         startVal = 0;
         reset();
     }
-    
+
     public SortedIntegerFieldValueGenerator(int startVal) {
         this.startVal = startVal;
         reset();
     }
-    
+
     @Override
     public Integer next() {
         return val++;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java
index 3330e4b..9418447 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java
@@ -21,10 +21,12 @@
 
 import java.util.Random;
 
+import org.apache.hyracks.util.MathUtil;
+
 public class StringFieldValueGenerator implements IFieldValueGenerator<String> {
     private int maxLen;
     private final Random rnd;
-    
+
     public StringFieldValueGenerator(int maxLen, Random rnd) {
         this.maxLen = maxLen;
         this.rnd = rnd;
@@ -33,13 +35,13 @@
     public void setMaxLength(int maxLen) {
         this.maxLen = maxLen;
     }
-    
+
     @Override
     public String next() {
         String s = Long.toHexString(Double.doubleToLongBits(rnd.nextDouble()));
         StringBuilder strBuilder = new StringBuilder();
         for (int i = 0; i < s.length() && i < maxLen; i++) {
-            strBuilder.append(s.charAt(Math.abs(rnd.nextInt()) % s.length()));
+            strBuilder.append(s.charAt(MathUtil.stripSignBit(rnd.nextInt()) % s.length()));
         }
         return strBuilder.toString();
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java
index 1e05527..c34c7bc 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java
@@ -30,25 +30,25 @@
     private final int size;
     private final TupleGenerator[] tupleGens;
     public final AtomicBoolean inUse = new AtomicBoolean(false);
-    
-    public TupleBatch(int size, IFieldValueGenerator[] fieldGens, ISerializerDeserializer[] fieldSerdes, int payloadSize) {        
+
+    public TupleBatch(int size, IFieldValueGenerator[] fieldGens, ISerializerDeserializer[] fieldSerdes, int payloadSize) {
         this.size = size;
         tupleGens = new TupleGenerator[size];
         for (int i = 0; i < size; i++) {
             tupleGens[i] = new TupleGenerator(fieldGens, fieldSerdes, payloadSize);
         }
     }
-    
+
     public void generate() throws IOException {
         for(TupleGenerator tupleGen : tupleGens) {
             tupleGen.next();
         }
     }
-    
+
     public int size() {
         return size;
     }
-    
+
     public ITupleReference get(int ix) {
         return tupleGens[ix].get();
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java
index 76aaac6..4f26065 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java
@@ -28,14 +28,14 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 
 @SuppressWarnings({"rawtypes", "unchecked" })
-public class TupleGenerator {    
+public class TupleGenerator {
     protected final ISerializerDeserializer[] fieldSerdes;
     protected final IFieldValueGenerator[] fieldGens;
     protected final ArrayTupleBuilder tb;
     protected final ArrayTupleReference tuple;
     protected final byte[] payload;
     protected final DataOutput tbDos;
-    
+
     public TupleGenerator(IFieldValueGenerator[] fieldGens, ISerializerDeserializer[] fieldSerdes, int payloadSize) {
         this.fieldSerdes = fieldSerdes;
         this.fieldGens = fieldGens;
@@ -46,7 +46,7 @@
         } else {
             tb = new ArrayTupleBuilder(fieldSerdes.length);
             payload = null;
-        }        
+        }
         tbDos = tb.getDataOutput();
     }
 
@@ -63,21 +63,21 @@
         tuple.reset(tb.getFieldEndOffsets(), tb.getByteArray());
         return tuple;
     }
-    
+
     public ITupleReference get() {
         return tuple;
     }
-    
+
     public void reset() {
         for (IFieldValueGenerator fieldGen : fieldGens) {
             fieldGen.reset();
         }
     }
-    
+
     public ISerializerDeserializer[] getFieldSerdes() {
         return fieldSerdes;
     }
-    
+
     public IFieldValueGenerator[] getFieldGens() {
         return fieldGens;
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java
index 667f76c..d9e119f 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java
@@ -23,10 +23,10 @@
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 
 public abstract class AbstractSlotManager implements ISlotManager {
-	
-	protected final int GREATEST_KEY_INDICATOR = -1;
-    protected final int ERROR_INDICATOR = -2;
-	
+
+    public static final int GREATEST_KEY_INDICATOR = -1;
+    public static final int ERROR_INDICATOR = -2;
+
 	protected static final int slotSize = 4;
 	protected ITreeIndexFrame frame;
 
@@ -65,7 +65,7 @@
 	public int getSlotOff(int tupleIndex) {
 		return getSlotStartOff() - tupleIndex * slotSize;
 	}
-	
+
 	@Override
     public int getGreatestKeyIndicator() {
         return GREATEST_KEY_INDICATOR;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/FrameOpSpaceStatus.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/FrameOpSpaceStatus.java
index 2b2b927..0af94a3 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/FrameOpSpaceStatus.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/FrameOpSpaceStatus.java
@@ -21,4 +21,4 @@
 
 public enum FrameOpSpaceStatus {
     INSUFFICIENT_SPACE, SUFFICIENT_CONTIGUOUS_SPACE, SUFFICIENT_SPACE, SUFFICIENT_INPLACE_SPACE
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
index 2d1ab42..16fdecd 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/LIFOMetaDataFrame.java
@@ -112,7 +112,7 @@
     public void initBuffer(byte level) {
         buf.putInt(tupleCountOff, 0);
         buf.putInt(freeSpaceOff, lsnOff + 8);
-        //buf.putInt(maxPageOff, -1);
+        buf.putInt(maxPageOff, 0);
         buf.put(levelOff, level);
         buf.putInt(nextPageOff, -1);
         buf.putInt(additionalFilteringPageOff, -1);
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListFreePageManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListFreePageManager.java
deleted file mode 100644
index 55ddbb7..0000000
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListFreePageManager.java
+++ /dev/null
@@ -1,234 +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.hyracks.storage.am.common.freepage;
-
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import org.apache.hyracks.storage.common.buffercache.IBufferCache;
-import org.apache.hyracks.storage.common.buffercache.ICachedPage;
-import org.apache.hyracks.storage.common.file.BufferedFileHandle;
-
-public class LinkedListFreePageManager implements IFreePageManager {
-
-	private static final byte META_PAGE_LEVEL_INDICATOR = -1;
-	private static final byte FREE_PAGE_LEVEL_INDICATOR = -2;
-	private final IBufferCache bufferCache;
-	private final int headPage;	
-	private int fileId = -1;
-	private final ITreeIndexMetaDataFrameFactory metaDataFrameFactory;
-
-	public LinkedListFreePageManager(IBufferCache bufferCache,
-			int headPage, ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
-		this.bufferCache = bufferCache;
-		this.headPage = headPage;
-		this.metaDataFrameFactory = metaDataFrameFactory;
-	}
-
-	@Override
-	public void addFreePage(ITreeIndexMetaDataFrame metaFrame, int freePage)
-			throws HyracksDataException {
-
-		ICachedPage metaNode = bufferCache.pin(
-				BufferedFileHandle.getDiskPageId(fileId, headPage), false);
-		metaNode.acquireWriteLatch();
-
-		try {
-			metaFrame.setPage(metaNode);
-
-			if (metaFrame.hasSpace()) {
-				metaFrame.addFreePage(freePage);
-			} else {
-				// allocate a new page in the chain of meta pages
-				int newPage = metaFrame.getFreePage();
-				if (newPage < 0) {
-					throw new Exception(
-							"Inconsistent Meta Page State. It has no space, but it also has no entries.");
-				}
-
-				ICachedPage newNode = bufferCache.pin(
-						BufferedFileHandle.getDiskPageId(fileId, newPage),
-						false);
-				newNode.acquireWriteLatch();
-
-				try {
-					int metaMaxPage = metaFrame.getMaxPage();
-
-					// copy metaDataPage to newNode
-					System.arraycopy(metaNode.getBuffer().array(), 0, newNode
-							.getBuffer().array(), 0, metaNode.getBuffer()
-							.capacity());
-
-					metaFrame.initBuffer(META_PAGE_LEVEL_INDICATOR);
-					metaFrame.setNextPage(newPage);
-					metaFrame.setMaxPage(metaMaxPage);
-					metaFrame.addFreePage(freePage);
-				} finally {
-					newNode.releaseWriteLatch(true);
-					bufferCache.unpin(newNode);
-				}
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		} finally {
-			metaNode.releaseWriteLatch(true);
-			bufferCache.unpin(metaNode);
-		}
-	}
-
-	@Override
-	public int getFreePage(ITreeIndexMetaDataFrame metaFrame)
-			throws HyracksDataException {
-		ICachedPage metaNode = bufferCache.pin(
-				BufferedFileHandle.getDiskPageId(fileId, headPage), false);
-
-		metaNode.acquireWriteLatch();
-
-		int freePage = -1;
-		try {
-			metaFrame.setPage(metaNode);
-			freePage = metaFrame.getFreePage();
-			if (freePage < 0) { // no free page entry on this page
-				int nextPage = metaFrame.getNextPage();
-				if (nextPage > 0) { // sibling may have free pages
-					ICachedPage nextNode = bufferCache.pin(
-							BufferedFileHandle.getDiskPageId(fileId, nextPage),
-							false);
-
-					nextNode.acquireWriteLatch();
-					// we copy over the free space entries of nextpage into the
-					// first meta page (metaDataPage)
-					// we need to link the first page properly to the next page
-					// of nextpage
-					try {
-						// remember entries that remain unchanged
-						int maxPage = metaFrame.getMaxPage();
-
-						// copy entire page (including sibling pointer, free
-						// page entries, and all other info)
-						// after this copy nextPage is considered a free page
-						System.arraycopy(nextNode.getBuffer().array(), 0,
-								metaNode.getBuffer().array(), 0, nextNode
-										.getBuffer().capacity());
-
-						// reset unchanged entry
-						metaFrame.setMaxPage(maxPage);
-
-						freePage = metaFrame.getFreePage();
-						// sibling also has no free pages, this "should" not
-						// happen, but we deal with it anyway just to be safe
-						if (freePage < 0) {
-							freePage = nextPage;
-						} else {
-							metaFrame.addFreePage(nextPage);
-						}
-					} finally {
-						nextNode.releaseWriteLatch(true);
-						bufferCache.unpin(nextNode);
-					}
-				} else {
-					freePage = metaFrame.getMaxPage();
-					freePage++;
-					metaFrame.setMaxPage(freePage);
-				}
-			}
-		} finally {
-			metaNode.releaseWriteLatch(true);
-			bufferCache.unpin(metaNode);
-		}
-
-		return freePage;
-	}
-
-	@Override
-	public int getMaxPage(ITreeIndexMetaDataFrame metaFrame)
-			throws HyracksDataException {
-		ICachedPage metaNode = bufferCache.pin(
-				BufferedFileHandle.getDiskPageId(fileId, headPage), false);
-		metaNode.acquireWriteLatch();
-		int maxPage = -1;
-		try {
-			metaFrame.setPage(metaNode);
-			maxPage = metaFrame.getMaxPage();
-		} finally {
-			metaNode.releaseWriteLatch(true);
-			bufferCache.unpin(metaNode);
-		}
-		return maxPage;
-	}
-
-	@Override
-	public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage)
-			throws HyracksDataException {
-		// initialize meta data page
-		ICachedPage metaNode = bufferCache.pin(
-				BufferedFileHandle.getDiskPageId(fileId, headPage), true);
-
-		metaNode.acquireWriteLatch();
-		try {
-			metaFrame.setPage(metaNode);
-			metaFrame.initBuffer(META_PAGE_LEVEL_INDICATOR);
-			metaFrame.setMaxPage(currentMaxPage);
-		} finally {
-			metaNode.releaseWriteLatch(true);
-			bufferCache.unpin(metaNode);
-		}
-	}
-
-	@Override
-	public ITreeIndexMetaDataFrameFactory getMetaDataFrameFactory() {
-		return metaDataFrameFactory;
-	}
-
-	@Override
-	public byte getFreePageLevelIndicator() {
-		return FREE_PAGE_LEVEL_INDICATOR;
-	}
-
-	@Override
-	public byte getMetaPageLevelIndicator() {
-		return META_PAGE_LEVEL_INDICATOR;
-	}
-
-	@Override
-	public boolean isFreePage(ITreeIndexMetaDataFrame metaFrame) {
-		return metaFrame.getLevel() == FREE_PAGE_LEVEL_INDICATOR;
-	}
-
-	@Override
-	public boolean isMetaPage(ITreeIndexMetaDataFrame metaFrame) {
-		return metaFrame.getLevel() == META_PAGE_LEVEL_INDICATOR;
-	}
-
-    @Override
-    public int getFirstMetadataPage() {
-        return headPage;
-    }
-
-	@Override
-	public void open(int fileId) {
-		this.fileId = fileId;
-	}
-
-	@Override
-	public void close() {
-		fileId = -1;
-	}
-}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListFreePageManagerFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListMetadataManagerFactory.java
similarity index 67%
rename from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListFreePageManagerFactory.java
rename to hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListMetadataManagerFactory.java
index 16b5c02..a911413 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListFreePageManagerFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedListMetadataManagerFactory.java
@@ -19,23 +19,24 @@
 
 package org.apache.hyracks.storage.am.common.freepage;
 
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IFreePageManagerFactory;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
+import org.apache.hyracks.storage.am.common.api.IMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 
-public class LinkedListFreePageManagerFactory implements IFreePageManagerFactory {
+public class LinkedListMetadataManagerFactory implements IMetadataManagerFactory {
 
     private final ITreeIndexMetaDataFrameFactory metaDataFrameFactory;
     private final IBufferCache bufferCache;
 
-    public LinkedListFreePageManagerFactory(IBufferCache bufferCache,
-            ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
+    public LinkedListMetadataManagerFactory(IBufferCache bufferCache,
+                                            ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
         this.metaDataFrameFactory = metaDataFrameFactory;
         this.bufferCache = bufferCache;
     }
 
-    public IFreePageManager createFreePageManager() {
-        return new LinkedListFreePageManager(bufferCache, 0, metaDataFrameFactory);
+    public IMetaDataPageManager createFreePageManager() throws HyracksDataException {
+        return new LinkedMetaDataPageManager(bufferCache, metaDataFrameFactory);
     }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java
new file mode 100644
index 0000000..61f5919
--- /dev/null
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/freepage/LinkedMetaDataPageManager.java
@@ -0,0 +1,464 @@
+/*
+ * 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.hyracks.storage.am.common.freepage;
+
+import java.util.logging.Logger;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
+import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrame;
+import org.apache.hyracks.storage.common.buffercache.BufferCache;
+import org.apache.hyracks.storage.common.buffercache.IBufferCache;
+import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue;
+import org.apache.hyracks.storage.common.file.BufferedFileHandle;
+
+public class LinkedMetaDataPageManager implements IMetaDataPageManager {
+
+    private static final byte META_PAGE_LEVEL_INDICATOR = -1;
+    private static final byte FREE_PAGE_LEVEL_INDICATOR = -2;
+    public static final int NO_FILTER_IN_PLACE = -1;
+    public static final int NO_FILTER_APPEND_ONLY = -2;
+    private final IBufferCache bufferCache;
+    private int headPage = IBufferCache.INVALID_PAGEID;
+    private int fileId = -1;
+    private final ITreeIndexMetaDataFrameFactory metaDataFrameFactory;
+    private boolean appendOnly = false;
+    ICachedPage confiscatedMetaNode;
+    ICachedPage filterPage;
+    private static Logger LOGGER = Logger.getLogger(LinkedMetaDataPageManager.class.getName());
+
+    public LinkedMetaDataPageManager(IBufferCache bufferCache, ITreeIndexMetaDataFrameFactory metaDataFrameFactory) {
+        this.bufferCache = bufferCache;
+        this.metaDataFrameFactory = metaDataFrameFactory;
+    }
+
+    @Override
+    public void addFreePage(ITreeIndexMetaDataFrame metaFrame, int freePage) throws HyracksDataException {
+        ICachedPage metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getFirstMetadataPage()), false);
+        metaNode.acquireWriteLatch();
+
+        try {
+            metaFrame.setPage(metaNode);
+
+            if (metaFrame.hasSpace()) {
+                metaFrame.addFreePage(freePage);
+            } else {
+                // allocate a new page in the chain of meta pages
+                int newPage = metaFrame.getFreePage();
+                if (newPage < 0) {
+                    throw new Exception("Inconsistent Meta Page State. It has no space, but it also has no entries.");
+                }
+
+                ICachedPage newNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, newPage), false);
+                newNode.acquireWriteLatch();
+
+                try {
+                    int metaMaxPage = metaFrame.getMaxPage();
+
+                    // copy metaDataPage to newNode
+                    System.arraycopy(metaNode.getBuffer().array(), 0, newNode.getBuffer().array(), 0,
+                            metaNode.getBuffer().capacity());
+
+                    metaFrame.initBuffer(META_PAGE_LEVEL_INDICATOR);
+                    metaFrame.setNextPage(newPage);
+                    metaFrame.setMaxPage(metaMaxPage);
+                    metaFrame.addFreePage(freePage);
+                } finally {
+                    newNode.releaseWriteLatch(true);
+                    bufferCache.unpin(newNode);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            metaNode.releaseWriteLatch(true);
+            bufferCache.unpin(metaNode);
+        }
+    }
+
+    @Override
+    public int getFreePage(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException {
+        ICachedPage metaNode;
+        if (!appendOnly) {
+            metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getFirstMetadataPage()), false);
+        } else {
+            metaNode = confiscatedMetaNode;
+        }
+
+        metaNode.acquireWriteLatch();
+
+        int freePage = IBufferCache.INVALID_PAGEID;
+        try {
+            metaFrame.setPage(metaNode);
+            freePage = metaFrame.getFreePage();
+            if (freePage < 0) { // no free page entry on this page
+                int nextPage = metaFrame.getNextPage();
+                if (nextPage > 0) { // sibling may have free pages
+                    ICachedPage nextNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, nextPage), false);
+
+                    nextNode.acquireWriteLatch();
+                    // we copy over the free space entries of nextpage into the
+                    // first meta page (metaDataPage)
+                    // we need to link the first page properly to the next page
+                    // of nextpage
+                    try {
+                        // remember entries that remain unchanged
+                        int maxPage = metaFrame.getMaxPage();
+
+                        // copy entire page (including sibling pointer, free
+                        // page entries, and all other info)
+                        // after this copy nextPage is considered a free page
+                        System.arraycopy(nextNode.getBuffer().array(), 0, metaNode.getBuffer().array(), 0,
+                                nextNode.getBuffer().capacity());
+
+                        // reset unchanged entry
+                        metaFrame.setMaxPage(maxPage);
+
+                        freePage = metaFrame.getFreePage();
+                        // sibling also has no free pages, this "should" not
+                        // happen, but we deal with it anyway just to be safe
+                        if (freePage < 0) {
+                            freePage = nextPage;
+                        } else {
+                            metaFrame.addFreePage(nextPage);
+                        }
+                    } finally {
+                        nextNode.releaseWriteLatch(true);
+                        bufferCache.unpin(nextNode);
+                    }
+                } else {
+                    freePage = metaFrame.getMaxPage();
+                    freePage++;
+                    metaFrame.setMaxPage(freePage);
+                }
+            }
+        } finally {
+            if (!appendOnly) {
+                metaNode.releaseWriteLatch(true);
+                bufferCache.unpin(metaNode);
+            } else {
+                metaNode.releaseWriteLatch(false);
+            }
+        }
+
+        return freePage;
+    }
+
+    @Override
+    public int getMaxPage(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException {
+        ICachedPage metaNode;
+        if (!appendOnly || (appendOnly && confiscatedMetaNode == null)) {
+            int mdPage = getFirstMetadataPage();
+            if (mdPage < 0) {
+                return IBufferCache.INVALID_PAGEID;
+            }
+            metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, mdPage), false);
+        } else {
+            metaNode = confiscatedMetaNode;
+        }
+        metaNode.acquireReadLatch();
+        int maxPage = -1;
+        try {
+            metaFrame.setPage(metaNode);
+            maxPage = metaFrame.getMaxPage();
+        } finally {
+            metaNode.releaseReadLatch();
+            if (!appendOnly || (appendOnly && confiscatedMetaNode == null)) {
+                bufferCache.unpin(metaNode);
+            }
+        }
+        return maxPage;
+    }
+
+    @Override
+    public void setFilterPageId(int filterPageId) throws HyracksDataException {
+        ICachedPage metaNode;
+        if (!appendOnly) {
+            int mdPage = getFirstMetadataPage();
+            if (mdPage < 0) {
+                return;
+            }
+            metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, mdPage), false);
+        } else {
+            metaNode = confiscatedMetaNode;
+        }
+        ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+        metaNode.acquireWriteLatch();
+        try {
+            metaFrame.setPage(metaNode);
+            metaFrame.setLSMComponentFilterPageId(filterPageId);
+        } finally {
+            if (!appendOnly) {
+                metaNode.releaseWriteLatch(true);
+                bufferCache.unpin(metaNode);
+            } else {
+                metaNode.releaseWriteLatch(false);
+            }
+        }
+    }
+
+    @Override
+    public int getFilterPageId() throws HyracksDataException {
+        ICachedPage metaNode;
+        int filterPageId = NO_FILTER_IN_PLACE;
+        if (!appendOnly || (appendOnly && confiscatedMetaNode == null)) {
+            metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getFirstMetadataPage()), false);
+        } else {
+            metaNode = confiscatedMetaNode;
+        }
+        ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+        metaNode.acquireReadLatch();
+        try {
+            metaFrame.setPage(metaNode);
+            filterPageId = metaFrame.getLSMComponentFilterPageId();
+            if (appendOnly && filterPageId == -1) {
+                //hint to filter manager that we are in append-only mode
+                filterPageId = NO_FILTER_APPEND_ONLY;
+            }
+        } finally {
+            metaNode.releaseReadLatch();
+            if (!appendOnly || (appendOnly && confiscatedMetaNode == null)) {
+                bufferCache.unpin(metaNode);
+            }
+        }
+        return filterPageId;
+    }
+
+    @Override
+    public void init(ITreeIndexMetaDataFrame metaFrame, int currentMaxPage) throws HyracksDataException {
+        // initialize meta data page
+        int metaPage = getFirstMetadataPage();
+        if (metaPage == IBufferCache.INVALID_PAGEID) {
+            throw new HyracksDataException("No valid metadata found in this file.");
+        }
+        ICachedPage metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getFirstMetadataPage()), true);
+
+        metaNode.acquireWriteLatch();
+        try {
+            metaFrame.setPage(metaNode);
+            metaFrame.initBuffer(META_PAGE_LEVEL_INDICATOR);
+            metaFrame.setMaxPage(currentMaxPage);
+        } finally {
+            metaNode.releaseWriteLatch(true);
+            bufferCache.unpin(metaNode);
+        }
+    }
+
+    @Override
+    public void init(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException {
+        if (confiscatedMetaNode != null) { // don't init twice
+            return;
+        }
+        ICachedPage metaNode = bufferCache.confiscatePage(BufferCache.INVALID_DPID);
+        try {
+            metaFrame.setPage(metaNode);
+            metaFrame.initBuffer(META_PAGE_LEVEL_INDICATOR);
+            metaFrame.setMaxPage(-1);
+        } finally {
+            confiscatedMetaNode = metaNode;
+            appendOnly = true;
+        }
+    }
+
+    @Override
+    public ITreeIndexMetaDataFrameFactory getMetaDataFrameFactory() {
+        return metaDataFrameFactory;
+    }
+
+    @Override
+    public byte getFreePageLevelIndicator() {
+        return FREE_PAGE_LEVEL_INDICATOR;
+    }
+
+    @Override
+    public byte getMetaPageLevelIndicator() {
+        return META_PAGE_LEVEL_INDICATOR;
+    }
+
+    @Override
+    public boolean isFreePage(ITreeIndexMetaDataFrame metaFrame) {
+        return metaFrame.getLevel() == FREE_PAGE_LEVEL_INDICATOR;
+    }
+
+    @Override
+    public boolean isMetaPage(ITreeIndexMetaDataFrame metaFrame) {
+        return (metaFrame.getLevel() == META_PAGE_LEVEL_INDICATOR);
+    }
+
+    @Override
+    public void open(int fileId) {
+        this.fileId = fileId;
+    }
+
+    @Override
+    public void close() throws HyracksDataException {
+        if (appendOnly && fileId >= 0 && confiscatedMetaNode != null) {
+            IFIFOPageQueue queue = bufferCache.createFIFOQueue();
+            writeFilterPage(queue);
+            ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+            metaFrame.setPage(confiscatedMetaNode);
+            metaFrame.setValid(true);
+            int finalMetaPage = getMaxPage(metaFrame) + 1;
+            bufferCache.setPageDiskId(confiscatedMetaNode, BufferedFileHandle.getDiskPageId(fileId, finalMetaPage));
+            queue.put(confiscatedMetaNode);
+            bufferCache.finishQueue();
+            confiscatedMetaNode = null;
+        }
+    }
+
+    private void writeFilterPage(IFIFOPageQueue queue) throws HyracksDataException {
+        if (filterPage != null) {
+            ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+            metaFrame.setPage(confiscatedMetaNode);
+            int finalFilterPage = getFreePage(metaFrame);
+            bufferCache.setPageDiskId(filterPage, BufferedFileHandle.getDiskPageId(fileId, finalFilterPage));
+            queue.put(filterPage);
+        }
+    }
+
+    /**
+     * For storage on append-only media (such as HDFS), the meta data page has to be written last.
+     * However, some implementations still write the meta data to the front. To deal with this as well
+     * as to provide downward compatibility, this method tries to find the meta data page first in the
+     * last and then in the first page of the file.
+     *
+     * @return The Id of the page holding the meta data
+     * @throws HyracksDataException
+     */
+    @Override
+    public int getFirstMetadataPage() throws HyracksDataException {
+        if (headPage != IBufferCache.INVALID_PAGEID)
+            return headPage;
+
+        ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+
+        int pages = bufferCache.getNumPagesOfFile(fileId);
+        //if there are no pages in the file yet, we're just initializing
+        if (pages == 0) {
+            return 0;
+        }
+        //look at the front (modify in-place index)
+        int page = 0;
+        ICachedPage metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, page), false);
+        try {
+            metaNode.acquireReadLatch();
+            metaFrame.setPage(metaNode);
+
+            if (isMetaPage(metaFrame)) {
+                headPage = page;
+                return headPage;
+            }
+        } finally {
+            metaNode.releaseReadLatch();
+            bufferCache.unpin(metaNode);
+        }
+        //otherwise, look at the back. (append-only index)
+        page = pages - 1 > 0 ? pages - 1 : 0;
+        metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, page), false);
+        try {
+            metaNode.acquireReadLatch();
+            metaFrame.setPage(metaNode);
+
+            if (isMetaPage(metaFrame)) {
+                headPage = page;
+                return headPage;
+            }
+        } finally {
+            metaNode.releaseReadLatch();
+            bufferCache.unpin(metaNode);
+        }
+        //if we find nothing, this isn't a tree (or isn't one yet).
+        if (pages > 0) {
+            return IBufferCache.INVALID_PAGEID;
+        } else {
+            return 0;
+        }
+    }
+
+    @Override
+    public long getLSN() throws HyracksDataException {
+        ICachedPage metaNode;
+        if (!appendOnly || (appendOnly && confiscatedMetaNode == null)) {
+            metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getFirstMetadataPage()), false);
+        } else {
+            metaNode = confiscatedMetaNode;
+        }
+        ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+        metaNode.acquireReadLatch();
+        try {
+            metaFrame.setPage(metaNode);
+            return metaFrame.getLSN();
+        } finally {
+            metaNode.releaseReadLatch();
+            if (!appendOnly || (appendOnly && confiscatedMetaNode == null)) {
+                bufferCache.unpin(metaNode);
+            }
+        }
+    }
+
+    @Override
+    public void setLSN(long lsn) throws HyracksDataException {
+        ICachedPage metaNode;
+        if (!appendOnly) {
+            metaNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, getFirstMetadataPage()), false);
+        } else {
+            metaNode = confiscatedMetaNode;
+        }
+        ITreeIndexMetaDataFrame metaFrame = metaDataFrameFactory.createFrame();
+        metaNode.acquireWriteLatch();
+        try {
+            metaFrame.setPage(metaNode);
+            metaFrame.setLSN(lsn);
+        } finally {
+            if (!appendOnly) {
+                metaNode.releaseWriteLatch(true);
+                bufferCache.unpin(metaNode);
+            } else {
+                metaNode.releaseWriteLatch(false);
+            }
+        }
+    }
+
+    @Override
+    public void setFilterPage(ICachedPage filterPage) {
+        this.filterPage = filterPage;
+    }
+
+    @Override
+    public ICachedPage getFilterPage() {
+        return this.filterPage;
+    }
+
+    @Override
+    public boolean appendOnlyMode() {
+        return appendOnly;
+    }
+
+    @Override
+    public long getLSNOffset() throws HyracksDataException {
+        int metadataPageNum = getFirstMetadataPage();
+        if (metadataPageNum != IBufferCache.INVALID_PAGEID) {
+            return (metadataPageNum * bufferCache.getPageSize()) + LIFOMetaDataFrame.lsnOff;
+        }
+        return IMetaDataPageManager.INVALID_LSN_OFFSET;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java
index e7b535f..83e39f2 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java
@@ -20,34 +20,28 @@
 package org.apache.hyracks.storage.am.common.impls;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
-import org.apache.hyracks.storage.am.common.api.ITreeIndex;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
-import org.apache.hyracks.storage.am.common.api.IndexException;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.api.*;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public abstract class AbstractTreeIndex implements ITreeIndex {
 
-    protected final static int rootPage = 1;
+    public static final int MINIMAL_TREE_PAGE_COUNT = 2;
+    protected int rootPage = 1;
 
     protected final IBufferCache bufferCache;
     protected final IFileMapProvider fileMapProvider;
-    protected final IFreePageManager freePageManager;
+    protected final IMetaDataPageManager freePageManager;
 
     protected final ITreeIndexFrameFactory interiorFrameFactory;
     protected final ITreeIndexFrameFactory leafFrameFactory;
@@ -58,10 +52,17 @@
     protected FileReference file;
     protected int fileId = -1;
 
-    private boolean isActivated = false;
+    protected boolean isActive = false;
+    //hasEverBeenActivated is to stop the throwing of an exception of deactivating an index that
+    //was never activated or failed to activate in try/finally blocks, as there's no way to know if
+    //an index is activated or not from the outside.
+    protected boolean hasEverBeenActivated = false;
+    protected boolean appendOnly = false;
+
+    protected int bulkloadLeafStart = 0;
 
     public AbstractTreeIndex(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
-            IFreePageManager freePageManager, ITreeIndexFrameFactory interiorFrameFactory,
+            IMetaDataPageManager freePageManager, ITreeIndexFrameFactory interiorFrameFactory,
             ITreeIndexFrameFactory leafFrameFactory, IBinaryComparatorFactory[] cmpFactories, int fieldCount,
             FileReference file) {
         this.bufferCache = bufferCache;
@@ -75,7 +76,11 @@
     }
 
     public synchronized void create() throws HyracksDataException {
-        if (isActivated) {
+        create(false);
+    }
+
+    private synchronized void create(boolean appendOnly) throws HyracksDataException {
+        if (isActive) {
             throw new HyracksDataException("Failed to create the index since it is activated.");
         }
 
@@ -99,8 +104,14 @@
         }
 
         freePageManager.open(fileId);
-        initEmptyTree();
-        freePageManager.close();
+        setRootAndMetadataPages(appendOnly);
+        if (!appendOnly) {
+            initEmptyTree();
+            freePageManager.close();
+        } else {
+            this.appendOnly = true;
+            initCachedMetadataPage();
+        }
         bufferCache.closeFile(fileId);
     }
 
@@ -108,7 +119,6 @@
         ITreeIndexFrame frame = leafFrameFactory.createFrame();
         ITreeIndexMetaDataFrame metaFrame = freePageManager.getMetaDataFrameFactory().createFrame();
         freePageManager.init(metaFrame, rootPage);
-
         ICachedPage rootNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), true);
         rootNode.acquireWriteLatch();
         try {
@@ -120,8 +130,28 @@
         }
     }
 
+    private void setRootAndMetadataPages(boolean appendOnly) throws HyracksDataException{
+        if (!appendOnly) {
+            // regular or empty tree
+            rootPage = 1;
+            bulkloadLeafStart = 2;
+        } else {
+            // bulkload-only tree (used e.g. for HDFS). -1 is meta page, -2 is root page
+            int numPages = bufferCache.getNumPagesOfFile(fileId);
+            //the root page is the last page before the metadata page
+            rootPage = numPages > MINIMAL_TREE_PAGE_COUNT ? numPages - MINIMAL_TREE_PAGE_COUNT : 0;
+            //leaves start from the very beginning of the file.
+            bulkloadLeafStart = 0;
+        }
+    }
+
+    private void initCachedMetadataPage() throws HyracksDataException {
+        ITreeIndexMetaDataFrame metaFrame = freePageManager.getMetaDataFrameFactory().createFrame();
+        freePageManager.init(metaFrame);
+    }
+
     public synchronized void activate() throws HyracksDataException {
-        if (isActivated) {
+        if (isActive) {
             throw new HyracksDataException("Failed to activate the index since it is already activated.");
         }
 
@@ -144,26 +174,44 @@
             }
         }
         freePageManager.open(fileId);
+        int mdPageLoc = freePageManager.getFirstMetadataPage();
+        ITreeIndexMetaDataFrame metaFrame = freePageManager.getMetaDataFrameFactory().createFrame();
+        int numPages = freePageManager.getMaxPage(metaFrame);
+        if(mdPageLoc > 1 || (mdPageLoc == 1 && numPages <= MINIMAL_TREE_PAGE_COUNT -1  )){ //md page doesn't count itself
+            appendOnly = true;
+        }
+        else{
+            appendOnly = false;
+        }
+        setRootAndMetadataPages(appendOnly);
 
         // TODO: Should probably have some way to check that the tree is physically consistent
         // or that the file we just opened actually is a tree
 
-        isActivated = true;
+        isActive = true;
+        hasEverBeenActivated = true;
     }
 
     public synchronized void deactivate() throws HyracksDataException {
-        if (!isActivated) {
+        if (!isActive && hasEverBeenActivated) {
             throw new HyracksDataException("Failed to deactivate the index since it is already deactivated.");
         }
+        if (isActive) {
+            freePageManager.close();
+            bufferCache.closeFile(fileId);
+        }
 
-        bufferCache.closeFile(fileId);
-        freePageManager.close();
+        isActive = false;
+    }
 
-        isActivated = false;
+    public synchronized void deactivateCloseHandle() throws HyracksDataException {
+        deactivate();
+        bufferCache.purgeHandle(fileId);
+
     }
 
     public synchronized void destroy() throws HyracksDataException {
-        if (isActivated) {
+        if (isActive) {
             throw new HyracksDataException("Failed to destroy the index since it is activated.");
         }
 
@@ -176,13 +224,19 @@
     }
 
     public synchronized void clear() throws HyracksDataException {
-        if (!isActivated) {
+        if (!isActive) {
             throw new HyracksDataException("Failed to clear the index since it is not activated.");
         }
         initEmptyTree();
     }
 
     public boolean isEmptyTree(ITreeIndexFrame frame) throws HyracksDataException {
+        if (rootPage == -1) {
+            return true;
+        }
+        if(freePageManager.appendOnlyMode() && bufferCache.getNumPagesOfFile(fileId) <= MINIMAL_TREE_PAGE_COUNT){
+            return true;
+        }
         ICachedPage rootNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), false);
         rootNode.acquireReadLatch();
         try {
@@ -198,6 +252,8 @@
         }
     }
 
+
+
     public byte getTreeHeight(ITreeIndexFrame frame) throws HyracksDataException {
         ICachedPage rootNode = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), false);
         rootNode.acquireReadLatch();
@@ -234,7 +290,7 @@
         return cmpFactories;
     }
 
-    public IFreePageManager getFreePageManager() {
+    public IMetaDataPageManager getMetaManager() {
         return freePageManager;
     }
 
@@ -256,13 +312,29 @@
         protected final ITreeIndexTupleWriter tupleWriter;
         protected ITreeIndexFrame leafFrame;
         protected ITreeIndexFrame interiorFrame;
-        private boolean releasedLatches;
+        // Immutable bulk loaders write their root page at page -2, as needed e.g. by append-only file systems such as HDFS.
+        // Since loading this tree relies on the root page actually being at that point, no further inserts into that tree are allowed.
+        // Currently, this is not enforced.
+        protected boolean releasedLatches;
+        public boolean appendOnly = false;
+        protected final IFIFOPageQueue queue;
+        protected List<ICachedPage> pagesToWrite;
 
-        public AbstractTreeIndexBulkLoader(float fillFactor) throws TreeIndexException, HyracksDataException {
+        public AbstractTreeIndexBulkLoader(float fillFactor, boolean appendOnly) throws TreeIndexException,
+                HyracksDataException {
+            //Initialize the tree
+            if (appendOnly) {
+                create(appendOnly);
+                this.appendOnly = appendOnly;
+                activate();
+            }
+
             leafFrame = leafFrameFactory.createFrame();
             interiorFrame = interiorFrameFactory.createFrame();
             metaFrame = freePageManager.getMetaDataFrameFactory().createFrame();
 
+            queue = bufferCache.createFIFOQueue();
+
             if (!isEmptyTree(leafFrame)) {
                 throw new TreeIndexException("Cannot bulk-load a non-empty tree.");
             }
@@ -276,8 +348,8 @@
 
             NodeFrontier leafFrontier = new NodeFrontier(leafFrame.createTupleReference());
             leafFrontier.pageId = freePageManager.getFreePage(metaFrame);
-            leafFrontier.page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId), true);
-            leafFrontier.page.acquireWriteLatch();
+            leafFrontier.page = bufferCache.confiscatePage(
+                    BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId));
 
             interiorFrame.setPage(leafFrontier.page);
             interiorFrame.initBuffer((byte) 0);
@@ -289,53 +361,59 @@
             slotSize = leafFrame.getSlotSize();
 
             nodeFrontiers.add(leafFrontier);
+            pagesToWrite = new ArrayList<>();
         }
 
         public abstract void add(ITupleReference tuple) throws IndexException, HyracksDataException;
 
         protected void handleException() throws HyracksDataException {
-            // Unlatch and unpin pages.
+            // Unlatch and unpin pages that weren't in the queue to avoid leaking memory.
             for (NodeFrontier nodeFrontier : nodeFrontiers) {
-                nodeFrontier.page.releaseWriteLatch(true);
-                bufferCache.unpin(nodeFrontier.page);
+                ICachedPage frontierPage = nodeFrontier.page;
+                if (frontierPage.confiscated()) {
+                    bufferCache.returnPage(frontierPage,false);
+                }
+            }
+            for(ICachedPage pageToDiscard: pagesToWrite){
+                bufferCache.returnPage(pageToDiscard, false);
             }
             releasedLatches = true;
         }
 
         @Override
         public void end() throws HyracksDataException {
-            // copy the root generated from the bulk-load to *the* root page location
-            ICachedPage newRoot = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), true);
-            newRoot.acquireWriteLatch();
-            NodeFrontier lastNodeFrontier = nodeFrontiers.get(nodeFrontiers.size() - 1);
-            try {
-                System.arraycopy(lastNodeFrontier.page.getBuffer().array(), 0, newRoot.getBuffer().array(), 0,
-                        lastNodeFrontier.page.getBuffer().capacity());
-            } finally {
-                newRoot.releaseWriteLatch(true);
-                bufferCache.unpin(newRoot);
+            //move the root page to the first data page if necessary
+            bufferCache.finishQueue();
+            if (!appendOnly) {
+                ICachedPage newRoot = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, rootPage), true);
+                newRoot.acquireWriteLatch();
+                //root will be the highest frontier
+                NodeFrontier lastNodeFrontier = nodeFrontiers.get(nodeFrontiers.size() - 1);
+                ICachedPage oldRoot = bufferCache.pin(
+                        BufferedFileHandle.getDiskPageId(fileId, lastNodeFrontier.pageId), false);
+                oldRoot.acquireReadLatch();
+                lastNodeFrontier.page = oldRoot;
+                try {
+                    System.arraycopy(lastNodeFrontier.page.getBuffer().array(), 0, newRoot.getBuffer().array(), 0,
+                            lastNodeFrontier.page.getBuffer().capacity());
+                } finally {
+                    newRoot.releaseWriteLatch(true);
+                    bufferCache.flushDirtyPage(newRoot);
+                    bufferCache.unpin(newRoot);
+                    oldRoot.releaseReadLatch();
+                    bufferCache.unpin(oldRoot);
 
-                // register old root as a free page
-                freePageManager.addFreePage(metaFrame, lastNodeFrontier.pageId);
+                    // register old root as a free page
+                    freePageManager.addFreePage(metaFrame, lastNodeFrontier.pageId);
 
-                if (!releasedLatches) {
-                    for (int i = 0; i < nodeFrontiers.size(); i++) {
-                        try {
-                            nodeFrontiers.get(i).page.releaseWriteLatch(true);
-                        } catch (Exception e) {
-                            //ignore illegal monitor state exception
-                        }
-                        bufferCache.unpin(nodeFrontiers.get(i).page);
-                    }
                 }
             }
         }
 
         protected void addLevel() throws HyracksDataException {
             NodeFrontier frontier = new NodeFrontier(tupleWriter.createTupleReference());
-            frontier.pageId = freePageManager.getFreePage(metaFrame);
-            frontier.page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, frontier.pageId), true);
-            frontier.page.acquireWriteLatch();
+            frontier.page = bufferCache.confiscatePage(IBufferCache.INVALID_DPID);
+            frontier.pageId = -1;
             frontier.lastTuple.setFieldCount(cmp.getKeyFieldCount());
             interiorFrame.setPage(frontier.page);
             interiorFrame.initBuffer((byte) nodeFrontiers.size());
@@ -349,6 +427,7 @@
         public void setLeafFrame(ITreeIndexFrame leafFrame) {
             this.leafFrame = leafFrame;
         }
+
     }
 
     public class TreeIndexInsertBulkLoader implements IIndexBulkLoader {
@@ -373,6 +452,11 @@
             // do nothing
         }
 
+        @Override
+        public void abort() {
+
+        }
+
     }
 
     @Override
@@ -383,7 +467,7 @@
     public IBinaryComparatorFactory[] getCmpFactories() {
         return cmpFactories;
     }
-    
+
     @Override
     public boolean hasMemoryComponents() {
         return true;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallback.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallback.java
index b632ba9..e8ab8dc 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallback.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallback.java
@@ -27,7 +27,7 @@
 /**
  * Dummy operation callback that simply does nothing.
  */
-public enum NoOpOperationCallback implements IModificationOperationCallback, ISearchOperationCallback {
+public enum NoOpOperationCallback implements IModificationOperationCallback,ISearchOperationCallback {
     INSTANCE;
 
     @Override
@@ -42,12 +42,12 @@
 
     @Override
     public void before(ITupleReference tuple) {
-        // Do nothing.        
+        // Do nothing.
     }
 
     @Override
     public void found(ITupleReference before, ITupleReference after) {
-        // Do nothing.        
+        // Do nothing.
     }
 
     @Override
@@ -59,4 +59,9 @@
     public void complete(ITupleReference tuple) throws HyracksDataException {
         // Do nothing.
     }
+
+    @Override
+    public void setOp(Operation op) throws HyracksDataException {
+        // Do nothing.
+    }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallbackFactory.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallbackFactory.java
index 4f855e4..b42e619 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallbackFactory.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpOperationCallbackFactory.java
@@ -19,6 +19,7 @@
 package org.apache.hyracks.storage.am.common.impls;
 
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFactory;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
@@ -28,17 +29,18 @@
  * Dummy NoOp callback factory used primarily for testing. Always returns the {@link NoOpOperationCallback} instance.
  * Implemented as an enum to preserve singleton model while being serializable
  */
-public enum NoOpOperationCallbackFactory implements ISearchOperationCallbackFactory,
-        IModificationOperationCallbackFactory {
-    INSTANCE;
+public enum NoOpOperationCallbackFactory
+    implements ISearchOperationCallbackFactory,IModificationOperationCallbackFactory {
+        INSTANCE;
 
     @Override
-    public IModificationOperationCallback createModificationOperationCallback(long resourceId, Object resource, IHyracksTaskContext ctx) {
+    public ISearchOperationCallback createSearchOperationCallback(long resourceId, IHyracksTaskContext ctx) {
         return NoOpOperationCallback.INSTANCE;
     }
 
     @Override
-    public ISearchOperationCallback createSearchOperationCallback(long resourceId, IHyracksTaskContext ctx) {
+    public IModificationOperationCallback createModificationOperationCallback(String resourcePath, long resourceId,
+            int resourcePartition, Object resource, IHyracksTaskContext ctx) throws HyracksDataException {
         return NoOpOperationCallback.INSTANCE;
     }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java
index 5974e18..c15fe38 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java
@@ -39,7 +39,7 @@
 	public int first() {
 		return first;
 	}
-	
+
 	public void addFirst(long i) {
 	    long[] newData = new long[data.length + 1];
         System.arraycopy(data, 0, newData, 0, first);
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/MultiComparator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/MultiComparator.java
index f336e65..d99ea3a 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/MultiComparator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/MultiComparator.java
@@ -130,4 +130,4 @@
             return new MultiComparator(cmps);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SingleComparator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SingleComparator.java
index eb3a818..3ceec3e 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SingleComparator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SingleComparator.java
@@ -39,4 +39,4 @@
         return cmp.compare(tupleA.getFieldData(0), tupleA.getFieldStart(0), tupleA.getFieldLength(0),
                 tupleB.getFieldData(0), tupleB.getFieldStart(0), tupleB.getFieldLength(0));
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java
index 7a4d363..0944f13 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java
@@ -34,8 +34,8 @@
 	public int compareTo(SlotOffTupleOff o) {
 		return tupleOff - o.tupleOff;
 	}
-	
-	@Override 
+
+	@Override
 	public String toString() {
 		return tupleIndex + " " + slotOff + " " + tupleOff;
 	}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java
index 28c2136..18de540 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java
@@ -32,18 +32,18 @@
     private final int[] fieldCounts;
     private int numTuples;
     private int totalFieldCount;
-    
+
     public ConcatenatingTupleReference(int maxTuples) {
         tuples = new ITupleReference[maxTuples];
         fieldCounts = new int[maxTuples];
-        reset();        
+        reset();
     }
-    
+
     public void reset() {
         numTuples = 0;
         totalFieldCount = 0;
     }
-    
+
     public void addTuple(ITupleReference tuple) {
         tuples[numTuples] = tuple;
         totalFieldCount += tuple.getFieldCount();
@@ -54,22 +54,22 @@
         }
         ++numTuples;
     }
-    
+
     public void removeLastTuple() {
         if (numTuples > 0) {
             ITupleReference lastTuple = tuples[--numTuples];
             totalFieldCount -= lastTuple.getFieldCount();
         }
     }
-    
+
     public int getNumTuples() {
         return numTuples;
     }
-    
+
     public boolean hasMaxTuples() {
         return numTuples == tuples.length;
     }
-    
+
     @Override
     public int getFieldCount() {
         return totalFieldCount;
@@ -95,7 +95,7 @@
         int fieldIndex = getFieldIndex(tupleIndex, fIdx);
         return tuples[tupleIndex].getFieldLength(fieldIndex);
     }
-    
+
     private int getTupleIndex(int fIdx) {
         int tupleIndex = Arrays.binarySearch(fieldCounts, 0, numTuples - 1, fIdx);
         if (tupleIndex < 0) {
@@ -105,11 +105,11 @@
         }
         return tupleIndex;
     }
-    
+
     private int getFieldIndex(int tupleIndex, int fIdx) {
         int fieldIndex = -1;
         if (tupleIndex > 0) {
-            fieldIndex = fIdx - fieldCounts[tupleIndex - 1]; 
+            fieldIndex = fIdx - fieldCounts[tupleIndex - 1];
         } else {
             fieldIndex = fIdx;
         }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/DualTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/DualTupleReference.java
index f9ec785..f6ae8c1 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/DualTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/DualTupleReference.java
@@ -57,4 +57,4 @@
     public ITupleReference getPermutingTuple() {
         return permutingTuple;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingFrameTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingFrameTupleReference.java
index 5f27835..b9792c2 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingFrameTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingFrameTupleReference.java
@@ -19,51 +19,40 @@
 
 package org.apache.hyracks.storage.am.common.tuples;
 
-import org.apache.hyracks.api.comm.IFrameTupleAccessor;
-import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import org.apache.hyracks.dataflow.common.data.accessors.FrameTupleReference;
 
-public class PermutingFrameTupleReference implements IFrameTupleReference {
-	private IFrameTupleAccessor fta;
-	private int tIndex;
-	private int[] fieldPermutation;
+public class PermutingFrameTupleReference extends FrameTupleReference {
+    private int[] fieldPermutation;
 
-	public void setFieldPermutation(int[] fieldPermutation) {
-		this.fieldPermutation = fieldPermutation;
-	}
+    public PermutingFrameTupleReference(int[] fieldPermutation) {
+        this.fieldPermutation = fieldPermutation;
+    }
 
-	public void reset(IFrameTupleAccessor fta, int tIndex) {
-		this.fta = fta;
-		this.tIndex = tIndex;
-	}
+    public PermutingFrameTupleReference() {
+    }
 
-	@Override
-	public IFrameTupleAccessor getFrameTupleAccessor() {
-		return fta;
-	}
+    public void setFieldPermutation(int[] fieldPermutation) {
+        this.fieldPermutation = fieldPermutation;
+    }
 
-	@Override
-	public int getTupleIndex() {
-		return tIndex;
-	}
+    @Override
+    public int getFieldCount() {
+        return fieldPermutation.length;
+    }
 
-	@Override
-	public int getFieldCount() {
-		return fieldPermutation.length;
-	}
+    @Override
+    public byte[] getFieldData(int fIdx) {
+        return fta.getBuffer().array();
+    }
 
-	@Override
-	public byte[] getFieldData(int fIdx) {
-		return fta.getBuffer().array();
-	}
+    @Override
+    public int getFieldStart(int fIdx) {
+        return fta.getTupleStartOffset(tIndex) + fta.getFieldSlotsLength()
+                + fta.getFieldStartOffset(tIndex, fieldPermutation[fIdx]);
+    }
 
-	@Override
-	public int getFieldStart(int fIdx) {
-		return fta.getTupleStartOffset(tIndex) + fta.getFieldSlotsLength()
-				+ fta.getFieldStartOffset(tIndex, fieldPermutation[fIdx]);
-	}
-
-	@Override
-	public int getFieldLength(int fIdx) {
-		return fta.getFieldLength(tIndex, fieldPermutation[fIdx]);
-	}
+    @Override
+    public int getFieldLength(int fIdx) {
+        return fta.getFieldLength(tIndex, fieldPermutation[fIdx]);
+    }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java
index 10e6663..e3a49d6 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java
@@ -25,11 +25,11 @@
 
     private final int[] fieldPermutation;
     private ITupleReference sourceTuple;
-    
+
     public PermutingTupleReference(int[] fieldPermutation) {
         this.fieldPermutation = fieldPermutation;
     }
-    
+
     public void reset(ITupleReference sourceTuple) {
         this.sourceTuple = sourceTuple;
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/SimpleTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/SimpleTupleReference.java
index f31ad2f..4d37049 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/SimpleTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/SimpleTupleReference.java
@@ -100,4 +100,4 @@
 	public int getTupleSize() {
 		return nullFlagsBytes + fieldSlotsBytes + buf.getShort(tupleStartOff + nullFlagsBytes + (fieldCount-1) * 2);
 	}
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
index 1a17a5a..c6a0035 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
@@ -19,11 +19,14 @@
 
 package org.apache.hyracks.storage.am.common.tuples;
 
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.VarLenIntDecoder;
+
 import java.nio.ByteBuffer;
 
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
 
 public class TypeAwareTupleReference implements ITreeIndexTupleReference {
     protected ByteBuffer buf;
@@ -34,7 +37,7 @@
     protected int dataStartOff;
 
     protected ITypeTraits[] typeTraits;
-    protected VarLenIntEncoderDecoder encDec = new VarLenIntEncoderDecoder();
+    protected VarLenIntDecoder encDec = VarLenIntEncoderDecoder.createDecoder();
     protected int[] decodedFieldSlots;
 
     public TypeAwareTupleReference(ITypeTraits[] typeTraits) {
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleWriter.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleWriter.java
index 73e6e3e..1d55d4d 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleWriter.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleWriter.java
@@ -25,11 +25,12 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
 
 public class TypeAwareTupleWriter implements ITreeIndexTupleWriter {
 
-    protected ITypeTraits[] typeTraits;
-    protected VarLenIntEncoderDecoder encDec = new VarLenIntEncoderDecoder();
+    protected final ITypeTraits[] typeTraits;
+    protected VarLenIntEncoderDecoder.VarLenIntDecoder decoder = VarLenIntEncoderDecoder.createDecoder();
 
     public TypeAwareTupleWriter(ITypeTraits[] typeTraits) {
         this.typeTraits = typeTraits;
@@ -73,13 +74,11 @@
         }
 
         // write field slots for variable length fields
-        encDec.reset(targetBuf, runner);
         for (int i = 0; i < tuple.getFieldCount(); i++) {
             if (!typeTraits[i].isFixedLength()) {
-                encDec.encode(tuple.getFieldLength(i));
+                runner += VarLenIntEncoderDecoder.encode(tuple.getFieldLength(i), targetBuf, runner);
             }
         }
-        runner = encDec.getPos();
 
         // write data fields
         for (int i = 0; i < tuple.getFieldCount(); i++) {
@@ -100,13 +99,11 @@
         }
 
         // write field slots for variable length fields
-        encDec.reset(targetBuf, runner);
         for (int i = startField; i < startField + numFields; i++) {
             if (!typeTraits[i].isFixedLength()) {
-                encDec.encode(tuple.getFieldLength(i));
+                runner += VarLenIntEncoderDecoder.encode(tuple.getFieldLength(i), targetBuf, runner);
             }
         }
-        runner = encDec.getPos();
 
         for (int i = startField; i < startField + numFields; i++) {
             System.arraycopy(tuple.getFieldData(i), tuple.getFieldStart(i), targetBuf, runner, tuple.getFieldLength(i));
@@ -117,28 +114,28 @@
     }
 
     protected int getNullFlagsBytes(ITupleReference tuple) {
-        return (int) Math.ceil((double) tuple.getFieldCount() / 8.0);
+        return (int) Math.ceil(tuple.getFieldCount() / 8.0);
     }
 
     protected int getFieldSlotsBytes(ITupleReference tuple) {
         int fieldSlotBytes = 0;
         for (int i = 0; i < tuple.getFieldCount(); i++) {
             if (!typeTraits[i].isFixedLength()) {
-                fieldSlotBytes += encDec.getBytesRequired(tuple.getFieldLength(i));
+                fieldSlotBytes += VarLenIntEncoderDecoder.getBytesRequired(tuple.getFieldLength(i));
             }
         }
         return fieldSlotBytes;
     }
 
     protected int getNullFlagsBytes(int numFields) {
-        return (int) Math.ceil((double) numFields / 8.0);
+        return (int) Math.ceil(numFields / 8.0);
     }
 
     protected int getFieldSlotsBytes(ITupleReference tuple, int startField, int numFields) {
         int fieldSlotBytes = 0;
         for (int i = startField; i < startField + numFields; i++) {
             if (!typeTraits[i].isFixedLength()) {
-                fieldSlotBytes += encDec.getBytesRequired(tuple.getFieldLength(i));
+                fieldSlotBytes += VarLenIntEncoderDecoder.getBytesRequired(tuple.getFieldLength(i));
             }
         }
         return fieldSlotBytes;
@@ -148,10 +145,6 @@
         return typeTraits;
     }
 
-    public void setTypeTraits(ITypeTraits[] typeTraits) {
-        this.typeTraits = typeTraits;
-    }
-
     @Override
     public int getCopySpaceRequired(ITupleReference tuple) {
         return bytesRequired(tuple);
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/VarLenIntEncoderDecoder.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/VarLenIntEncoderDecoder.java
deleted file mode 100644
index cd3d366..0000000
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/VarLenIntEncoderDecoder.java
+++ /dev/null
@@ -1,92 +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.hyracks.storage.am.common.tuples;
-
-// encodes positive integers in a variable-byte format
-
-public class VarLenIntEncoderDecoder {
-	public static final int ENCODE_MASK = 0x0000007F;
-	public static final byte CONTINUE_CHUNK = (byte) 0x80;
-	public static final byte DECODE_MASK = (byte) 0x7F;
-
-	private byte[] encTmp = new byte[5];
-
-	private int pos;
-	private byte[] bytes;
-
-	public void reset(byte[] bytes, int pos) {
-		this.bytes = bytes;
-		this.pos = pos;
-	}
-
-	public int encode(int val) {
-		int origPos = 0;
-		int tmpPos = 0;
-		while (val > ENCODE_MASK) {
-			encTmp[tmpPos++] = (byte) (val & ENCODE_MASK);
-			val = val >>> 7;
-		}
-		encTmp[tmpPos++] = (byte) (val);
-
-		// reverse order to optimize for decoding speed
-		for (int i = 0; i < tmpPos - 1; i++) {
-			bytes[pos++] = (byte) (encTmp[tmpPos - 1 - i] | CONTINUE_CHUNK);
-		}
-		bytes[pos++] = encTmp[0];
-
-		return pos - origPos;
-	}
-
-	public int decode() {
-		int sum = 0;
-		while ((bytes[pos] & CONTINUE_CHUNK) == CONTINUE_CHUNK) {
-			sum = (sum + (bytes[pos] & DECODE_MASK)) << 7;
-			pos++;
-		}
-		sum += bytes[pos++];
-		return sum;
-	}
-
-	// calculate the number of bytes needed for encoding
-	public int getBytesRequired(int val) {
-		int byteCount = 0;
-		while (val > ENCODE_MASK) {
-			val = val >>> 7;
-			byteCount++;
-		}
-		return byteCount + 1;
-	}
-
-	public int getPos() {
-		return pos;
-	}
-
-	// fast encoding, slow decoding version
-	/*
-	 * public void encode(int val) { while(val > ENCODE_MASK) { bytes[pos++] =
-	 * (byte)(((byte)(val & ENCODE_MASK)) | CONTINUE_CHUNK); val = val >>> 7; }
-	 * bytes[pos++] = (byte)(val); }
-	 * 
-	 * public int decode() { int sum = 0; int shift = 0; while( (bytes[pos] &
-	 * CONTINUE_CHUNK) == CONTINUE_CHUNK) { sum = (sum + (bytes[pos] &
-	 * DECODE_MASK)) << 7 * shift++; pos++; } sum += bytes[pos++] << 7 * shift;
-	 * return sum; }
-	 */
-}
\ No newline at end of file
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java
index 7096f74..7213a5b 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java
@@ -32,9 +32,9 @@
  */
 public class HashMultiSet<E> extends AbstractCollection<E> {
 
-    private final Map<E, List<E>> map = new HashMap<E, List<E>>(); 
+    private final Map<E, List<E>> map = new HashMap<E, List<E>>();
     private int size = 0;
-    
+
     @Override
     public boolean add(E e) {
         List<E> list = map.get(e);
@@ -46,17 +46,17 @@
         size++;
         return true;
     }
-    
+
     @Override
     public boolean contains(Object o) {
         return map.containsKey(o);
     }
-    
+
     @Override
     public boolean remove(Object o) {
         List<E> list = map.get(o);
         if (list == null) {
-            return false;            
+            return false;
         }
         list.remove(list.size() - 1);
         if (list.isEmpty()) {
@@ -65,7 +65,7 @@
         size--;
         return true;
     }
-    
+
     @Override
     public Iterator<E> iterator() {
         return new HashMultiSetIterator();
@@ -75,22 +75,22 @@
     public int size() {
         return size;
     }
-    
+
     @Override
     public void clear() {
         map.clear();
         size = 0;
     }
-    
+
     private class HashMultiSetIterator implements Iterator<E> {
 
         private Iterator<Map.Entry<E, List<E>>> mapIter;
         private Iterator<E> listIter;
-        
+
         public HashMultiSetIterator() {
             mapIter = map.entrySet().iterator();
         }
-        
+
         @Override
         public boolean hasNext() {
             if (mapIter.hasNext() || (listIter != null && listIter.hasNext())) {
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/IndexFileNameUtil.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/IndexFileNameUtil.java
index d1d59ed..50f3e68 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/IndexFileNameUtil.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/IndexFileNameUtil.java
@@ -21,11 +21,22 @@
 
 import java.io.File;
 
+import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.api.io.IIOManager;
+import org.apache.hyracks.storage.am.common.dataflow.IIndexOperatorDescriptor;
+
 public class IndexFileNameUtil {
 
     public static final String IO_DEVICE_NAME_PREFIX = "device_id_";
-    
+
+    @Deprecated
     public static String prepareFileName(String path, int ioDeviceId) {
         return path + File.separator + IO_DEVICE_NAME_PREFIX + ioDeviceId;
     }
-}
\ No newline at end of file
+
+    public static FileReference getIndexAbsoluteFileRef(IIndexOperatorDescriptor opDesc, int partition, IIOManager ioManager){
+        String indexName = opDesc.getFileSplitProvider().getFileSplits()[partition].getLocalFile().getFile().getPath();
+        int ioDeviceId = opDesc.getFileSplitProvider().getFileSplits()[partition].getIODeviceId();
+        return ioManager.getAbsoluteFileRef(ioDeviceId, indexName);
+    }
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexBufferCacheWarmup.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexBufferCacheWarmup.java
index 14c1ad9..d9013d3 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexBufferCacheWarmup.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexBufferCacheWarmup.java
@@ -22,7 +22,8 @@
 import java.util.Random;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
+import org.apache.hyracks.util.MathUtil;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
 import org.apache.hyracks.storage.am.common.ophelpers.IntArrayList;
@@ -32,13 +33,13 @@
 
 public class TreeIndexBufferCacheWarmup {
 	private final IBufferCache bufferCache;
-	private final IFreePageManager freePageManager;
+	private final IMetaDataPageManager freePageManager;
 	private final int fileId;
 	private final ArrayList<IntArrayList> pagesByLevel = new ArrayList<IntArrayList>();
 	private final Random rnd = new Random();
 
 	public TreeIndexBufferCacheWarmup(IBufferCache bufferCache,
-			IFreePageManager freePageManager, int fileId) {
+			IMetaDataPageManager freePageManager, int fileId) {
 		this.bufferCache = bufferCache;
 		this.freePageManager = freePageManager;
 		this.fileId = fileId;
@@ -84,7 +85,7 @@
 
 					int remainingLength = pageIds.size();
 					for (int j = 0; j < pageIds.size(); j++) {
-						int index = Math.abs(rnd.nextInt()) % remainingLength;
+						int index = MathUtil.stripSignBit(rnd.nextInt()) % remainingLength;
 						int pageId = remainingPageIds[index];
 
 						// pin & latch then immediately unlatch & unpin
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStats.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStats.java
index ad1d888..8251c6f 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStats.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStats.java
@@ -20,7 +20,7 @@
 
 import java.text.DecimalFormat;
 
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
 
@@ -57,7 +57,7 @@
 	}
 
 	public void add(ITreeIndexMetaDataFrame metaFrame,
-			IFreePageManager freePageManager) {
+			IMetaDataPageManager freePageManager) {
 		if (freePageManager.isFreePage(metaFrame)) {
 			freePages++;
 		} else if (freePageManager.isMetaPage(metaFrame)) {
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStatsGatherer.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStatsGatherer.java
index a12df46..3c15b23 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStatsGatherer.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexStatsGatherer.java
@@ -19,7 +19,7 @@
 package org.apache.hyracks.storage.am.common.util;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -30,12 +30,12 @@
 
 	private final TreeIndexStats treeIndexStats = new TreeIndexStats();
 	private final IBufferCache bufferCache;
-	private final IFreePageManager freePageManager;
+	private final IMetaDataPageManager freePageManager;
 	private final int fileId;
 	private final int rootPage;
 
 	public TreeIndexStatsGatherer(IBufferCache bufferCache,
-			IFreePageManager freePageManager, int fileId, int rootPage) {
+			IMetaDataPageManager freePageManager, int fileId, int rootPage) {
 		this.bufferCache = bufferCache;
 		this.freePageManager = freePageManager;
 		this.fileId = fileId;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java
index 6665f5d..7784d42 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java
@@ -25,9 +25,9 @@
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
 
-@SuppressWarnings("rawtypes") 
+@SuppressWarnings("rawtypes")
 public class TreeIndexUtils {
-	public static String printFrameTuples(ITreeIndexFrame frame, ISerializerDeserializer[] fieldSerdes) throws HyracksDataException {		
+	public static String printFrameTuples(ITreeIndexFrame frame, ISerializerDeserializer[] fieldSerdes) throws HyracksDataException {
 		StringBuilder strBuilder = new StringBuilder();
 		ITreeIndexTupleReference tuple = frame.createTupleReference();
 		for (int i = 0; i < frame.getTupleCount(); i++) {
diff --git a/hyracks/hyracks-storage-am-lsm-btree/pom.xml b/hyracks/hyracks-storage-am-lsm-btree/pom.xml
index 754fb98..988fccb 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/pom.xml
+++ b/hyracks/hyracks-storage-am-lsm-btree/pom.xml
@@ -40,19 +40,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>    
     <dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeDataflowHelper.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeDataflowHelper.java
index 45522ce..ab5be15 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeDataflowHelper.java
@@ -40,8 +40,7 @@
     public ExternalBTreeDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx, int partition,
             double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy,
             ILSMOperationTrackerProvider opTrackerFactory, ILSMIOOperationScheduler ioScheduler,
-            ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean needKeyDupCheck, int version,
-            boolean durable) {
+            ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean needKeyDupCheck, int version, boolean durable) {
         super(opDesc, ctx, partition, null, bloomFilterFalsePositiveRate, mergePolicy, opTrackerFactory, ioScheduler,
                 ioOpCallbackFactory, false, null, null, null, null, durable);
         this.version = version;
@@ -50,27 +49,20 @@
     public ExternalBTreeDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx, int partition,
             List<IVirtualBufferCache> virtualBufferCaches, ILSMMergePolicy mergePolicy,
             ILSMOperationTrackerProvider opTrackerFactory, ILSMIOOperationScheduler ioScheduler,
-            ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean needKeyDupCheck, int version,
-            boolean durable) {
+            ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean needKeyDupCheck, int version, boolean durable) {
         this(opDesc, ctx, partition, DEFAULT_BLOOM_FILTER_FALSE_POSITIVE_RATE, mergePolicy, opTrackerFactory,
                 ioScheduler, ioOpCallbackFactory, needKeyDupCheck, version, durable);
     }
 
     @Override
     public IIndex getIndexInstance() {
-        if (index != null)
-            return index;
         synchronized (lcManager) {
-            long resourceID;
-            try {
-                resourceID = getResourceID();
-            } catch (HyracksDataException e) {
-                return null;
-            }
-            try {
-                index = lcManager.getIndex(resourceID);
-            } catch (HyracksDataException e) {
-                return null;
+            if (index == null) {
+                try {
+                    index = lcManager.getIndex(resourcePath);
+                } catch (HyracksDataException e) {
+                    return null;
+                }
             }
         }
         return index;
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyDataflowHelper.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyDataflowHelper.java
index a5d4892..6e0beb3 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyDataflowHelper.java
@@ -48,8 +48,7 @@
     public ExternalBTreeWithBuddyDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition, double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy,
             ILSMOperationTrackerProvider opTrackerFactory, ILSMIOOperationScheduler ioScheduler,
-            ILSMIOOperationCallbackFactory ioOpCallbackFactory, int[] buddyBtreeFields, int version,
-            boolean durable) {
+            ILSMIOOperationCallbackFactory ioOpCallbackFactory, int[] buddyBtreeFields, int version, boolean durable) {
         super(opDesc, ctx, partition, null, bloomFilterFalsePositiveRate, mergePolicy, opTrackerFactory, ioScheduler,
                 ioOpCallbackFactory, null, null, null, durable);
         this.buddyBtreeFields = buddyBtreeFields;
@@ -58,19 +57,13 @@
 
     @Override
     public IIndex getIndexInstance() {
-        if (index != null)
-            return index;
         synchronized (lcManager) {
-            long resourceID;
-            try {
-                resourceID = getResourceID();
-            } catch (HyracksDataException e) {
-                return null;
-            }
-            try {
-                index = lcManager.getIndex(resourceID);
-            } catch (HyracksDataException e) {
-                return null;
+            if (index == null) {
+                try {
+                    index = lcManager.getIndex(resourcePath);
+                } catch (HyracksDataException e) {
+                    return null;
+                }
             }
         }
         return index;
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeDataflowHelperFactory.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeDataflowHelperFactory.java
index fd300bd..63b784a 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeDataflowHelperFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeDataflowHelperFactory.java
@@ -56,7 +56,7 @@
     public IndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition) {
         return new LSMBTreeDataflowHelper(opDesc, ctx, partition,
-                virtualBufferCacheProvider.getVirtualBufferCaches(ctx), bloomFilterFalsePositiveRate,
+                virtualBufferCacheProvider.getVirtualBufferCaches(ctx, opDesc.getFileSplitProvider()), bloomFilterFalsePositiveRate,
                 mergePolicyFactory.createMergePolicy(mergePolicyProperties, ctx), opTrackerFactory,
                 ioSchedulerProvider.getIOScheduler(ctx), ioOpCallbackFactory, needKeyDupCheck, filterTypeTraits,
                 filterCmpFactories, btreeFields, filterFields, durable);
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java
index 7ec5a8a..959e356 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java
@@ -32,10 +32,10 @@
 import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterSpecification;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
 import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeBulkLoader;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
 import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
 import org.apache.hyracks.storage.am.common.api.IIndexCursor;
 import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
@@ -58,10 +58,10 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.ITwoPCIndex;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
 import org.apache.hyracks.storage.am.lsm.common.impls.ExternalIndexHarness;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
@@ -69,7 +69,7 @@
  * This is an lsm b-tree that does not have memory component and is modified
  * only by bulk loading and addition of disk components as of this point, it is
  * intended for use with external dataset indexes only.
- * 
+ *
  * @author alamouda
  */
 public class ExternalBTree extends LSMBTree implements ITwoPCIndex {
@@ -97,10 +97,10 @@
             ILSMIOOperationCallback ioOpCallback, TreeIndexFactory<BTree> transactionBTreeFactory, int version,
             boolean durable) {
         super(interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, fileManager, diskBTreeFactory,
-                bulkLoadBTreeFactory, bloomFilterFactory, bloomFilterFalsePositiveRate, diskFileMapProvider,
-                fieldCount, cmpFactories, mergePolicy, opTracker, ioScheduler, ioOpCallback, false, durable);
-        this.transactionComponentFactory = new LSMBTreeDiskComponentFactory(transactionBTreeFactory,
-                bloomFilterFactory, null);
+                bulkLoadBTreeFactory, bloomFilterFactory, bloomFilterFalsePositiveRate, diskFileMapProvider, fieldCount,
+                cmpFactories, mergePolicy, opTracker, ioScheduler, ioOpCallback, false, durable);
+        this.transactionComponentFactory = new LSMBTreeDiskComponentFactory(transactionBTreeFactory, bloomFilterFactory,
+                null);
         this.secondDiskComponents = new LinkedList<ILSMComponent>();
         this.interiorFrameFactory = interiorFrameFactory;
         this.version = version;
@@ -165,9 +165,14 @@
             throws HyracksDataException, IndexException {
         ExternalBTreeOpContext ctx = (ExternalBTreeOpContext) ictx;
         List<ILSMComponent> operationalComponents = ctx.getComponentHolder();
-        LSMBTreeCursorInitialState initialState = new LSMBTreeCursorInitialState(insertLeafFrameFactory, ctx.cmp,
-                ctx.bloomFilterCmp, lsmHarness, pred, ctx.searchCallback, operationalComponents);
-        cursor.open(initialState, pred);
+        ctx.searchInitialState.reset(pred, operationalComponents);
+        cursor.open(ctx.searchInitialState, pred);
+    }
+
+    // This method creates the appropriate opContext for the targeted version
+    public ExternalBTreeOpContext createOpContext(ISearchOperationCallback searchCallback, int targetVersion) {
+        return new ExternalBTreeOpContext(insertLeafFrameFactory, deleteLeafFrameFactory, searchCallback,
+                componentFactory.getBloomFilterKeyFields().length, cmpFactories, targetVersion, lsmHarness);
     }
 
     // The only reason to override the following method is that it uses a different context object
@@ -180,8 +185,8 @@
         List<ILSMComponent> mergingComponents = ctx.getComponentHolder();
         boolean returnDeletedTuples = false;
         if (version == 0) {
-            if (ctx.getComponentHolder().get(ctx.getComponentHolder().size() - 1) != diskComponents.get(diskComponents
-                    .size() - 1)) {
+            if (ctx.getComponentHolder().get(ctx.getComponentHolder().size() - 1) != diskComponents
+                    .get(diskComponents.size() - 1)) {
                 returnDeletedTuples = true;
             }
         } else {
@@ -193,14 +198,14 @@
         ITreeIndexCursor cursor = new LSMBTreeRangeSearchCursor(opCtx, returnDeletedTuples);
         BTree firstBTree = ((LSMBTreeDiskComponent) mergingComponents.get(0)).getBTree();
         BTree lastBTree = ((LSMBTreeDiskComponent) mergingComponents.get(mergingComponents.size() - 1)).getBTree();
-        FileReference firstFile = diskFileMapProvider.lookupFileName(firstBTree.getFileId());
-        FileReference lastFile = diskFileMapProvider.lookupFileName(lastBTree.getFileId());
-        LSMComponentFileReferences relMergeFileRefs = fileManager.getRelMergeFileReference(firstFile.getFile()
-                .getName(), lastFile.getFile().getName());
+        FileReference firstFile = firstBTree.getFileReference();
+        FileReference lastFile = lastBTree.getFileReference();
+        LSMComponentFileReferences relMergeFileRefs = fileManager
+                .getRelMergeFileReference(firstFile.getFile().getName(), lastFile.getFile().getName());
         ILSMIndexAccessorInternal accessor = new LSMBTreeAccessor(lsmHarness, opCtx);
-        ioScheduler.scheduleOperation(new LSMBTreeMergeOperation(accessor, mergingComponents, cursor, relMergeFileRefs
-                .getInsertIndexFileReference(), relMergeFileRefs.getBloomFilterFileReference(), callback, fileManager
-                .getBaseDir()));
+        ioScheduler.scheduleOperation(new LSMBTreeMergeOperation(accessor, mergingComponents, cursor,
+                relMergeFileRefs.getInsertIndexFileReference(), relMergeFileRefs.getBloomFilterFileReference(),
+                callback, fileManager.getBaseDir()));
     }
 
     // This function should only be used when a transaction fail. it doesn't
@@ -510,7 +515,7 @@
             frameTupleWriterFactory = ((LSMBTreeDiskComponent) component).getBTree().getLeafFrameFactory()
                     .getTupleWriterFactory();
             bulkLoader = (BTreeBulkLoader) ((LSMBTreeDiskComponent) component).getBTree().createBulkLoader(fillFactor,
-                    verifyInput, numElementsHint, false);
+                    verifyInput, numElementsHint, false, true);
 
             int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElementsHint);
             BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
@@ -624,12 +629,6 @@
         return new LSMBTreeAccessor(lsmHarness, createOpContext(searchCallback, version));
     }
 
-    // This method creates the appropriate opContext for the targeted version
-    public ExternalBTreeOpContext createOpContext(ISearchOperationCallback searchCallback, int targetVersion) {
-        return new ExternalBTreeOpContext(insertLeafFrameFactory, deleteLeafFrameFactory, searchCallback,
-                componentFactory.getBloomFilterKeyFields().length, cmpFactories, targetVersion);
-    }
-
     @Override
     public ILSMIndexAccessorInternal createAccessor(ISearchOperationCallback searchCallback, int targetIndexVersion)
             throws HyracksDataException {
@@ -652,7 +651,7 @@
     }
 
     @Override
-    public IFreePageManager getFreePageManager() {
+    public IMetaDataPageManager getMetaManager() {
         return null;
     }
 
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeOpContext.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeOpContext.java
index e8face1..d63671e 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeOpContext.java
@@ -30,6 +30,7 @@
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
 
 public class ExternalBTreeOpContext implements ILSMIndexOperationContext {
@@ -46,10 +47,12 @@
     private final List<ILSMComponent> componentsToBeReplicated;
     private final int targetIndexVersion;
     public ISearchPredicate searchPredicate;
+    public LSMBTreeCursorInitialState searchInitialState;
 
     public ExternalBTreeOpContext(ITreeIndexFrameFactory insertLeafFrameFactory,
             ITreeIndexFrameFactory deleteLeafFrameFactory, ISearchOperationCallback searchCallback,
-            int numBloomFilterKeyFields, IBinaryComparatorFactory[] cmpFactories, int targetIndexVersion) {
+            int numBloomFilterKeyFields, IBinaryComparatorFactory[] cmpFactories, int targetIndexVersion,
+            ILSMHarness lsmHarness) {
         if (cmpFactories != null) {
             this.cmp = MultiComparator.create(cmpFactories);
         } else {
@@ -71,6 +74,8 @@
         this.componentsToBeReplicated = new LinkedList<ILSMComponent>();
         this.searchCallback = searchCallback;
         this.targetIndexVersion = targetIndexVersion;
+        searchInitialState = new LSMBTreeCursorInitialState(insertLeafFrameFactory, cmp, bloomFilterCmp, lsmHarness,
+                null, searchCallback, null);
     }
 
     @Override
@@ -86,6 +91,7 @@
         componentsToBeReplicated.clear();
     }
 
+    @Override
     public IndexOperation getOperation() {
         return op;
     }
@@ -130,10 +136,10 @@
     public ISearchPredicate getSearchPredicate() {
         return searchPredicate;
     }
-    
+
     @Override
     public List<ILSMComponent> getComponentsToBeReplicated() {
         return componentsToBeReplicated;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java
index ad78f6b..a4f355f 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java
@@ -35,19 +35,7 @@
 import org.apache.hyracks.storage.am.btree.impls.BTree;
 import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeBulkLoader;
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
-import org.apache.hyracks.storage.am.common.api.IIndexCursor;
-import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
-import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.ITreeIndex;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITwoPCIndexBulkLoader;
-import org.apache.hyracks.storage.am.common.api.IndexException;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.api.*;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
@@ -63,11 +51,11 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.ITwoPCIndex;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
 import org.apache.hyracks.storage.am.lsm.common.impls.ExternalIndexHarness;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor;
 import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -327,13 +315,8 @@
             throws HyracksDataException, IndexException {
         ExternalBTreeWithBuddyOpContext ctx = (ExternalBTreeWithBuddyOpContext) ictx;
         List<ILSMComponent> operationalComponents = ictx.getComponentHolder();
-
-        LSMBTreeWithBuddyCursorInitialState initialState = new LSMBTreeWithBuddyCursorInitialState(
-                btreeInteriorFrameFactory, btreeLeafFrameFactory, buddyBtreeLeafFrameFactory, lsmHarness,
-                MultiComparator.create(btreeCmpFactories), MultiComparator.create(buddyBtreeCmpFactories),
-                ctx.searchCallback, operationalComponents);
-
-        cursor.open(initialState, pred);
+        ctx.searchInitialState.setOperationalComponents(operationalComponents);
+        cursor.open(ctx.searchInitialState, pred);
     }
 
     @Override
@@ -352,8 +335,8 @@
         BTree firstTree = ((LSMBTreeWithBuddyDiskComponent) mergingDiskComponents.get(0)).getBTree();
         BTree lastTree = ((LSMBTreeWithBuddyDiskComponent) mergingDiskComponents.get(mergingDiskComponents.size() - 1))
                 .getBTree();
-        FileReference firstFile = diskFileMapProvider.lookupFileName(firstTree.getFileId());
-        FileReference lastFile = diskFileMapProvider.lookupFileName(lastTree.getFileId());
+        FileReference firstFile = firstTree.getFileReference();
+        FileReference lastFile = lastTree.getFileReference();
         LSMComponentFileReferences fileRefs = fileManager.getRelMergeFileReference(firstFile.getFile().getName(),
                 lastFile.getFile().getName());
         return fileRefs;
@@ -374,8 +357,8 @@
         // which list to check against and we need to synchronize for this
         boolean keepDeleteTuples = false;
         if (version == 0) {
-            keepDeleteTuples = mergingComponents.get(mergingComponents.size() - 1) != diskComponents.get(diskComponents
-                    .size() - 1);
+            keepDeleteTuples = mergingComponents.get(mergingComponents.size() - 1) != diskComponents
+                    .get(diskComponents.size() - 1);
         } else {
             keepDeleteTuples = mergingComponents.get(mergingComponents.size() - 1) != secondDiskComponents
                     .get(secondDiskComponents.size() - 1);
@@ -389,7 +372,8 @@
     // This method creates the appropriate opContext for the targeted version
     public ExternalBTreeWithBuddyOpContext createOpContext(ISearchOperationCallback searchCallback, int targetVersion) {
         return new ExternalBTreeWithBuddyOpContext(btreeCmpFactories, buddyBtreeCmpFactories, searchCallback,
-                targetVersion);
+                targetVersion, lsmHarness, btreeInteriorFrameFactory, btreeLeafFrameFactory,
+                buddyBtreeLeafFrameFactory);
     }
 
     @Override
@@ -421,8 +405,8 @@
 
             long numElements = 0L;
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
-                numElements += ((LSMBTreeWithBuddyDiskComponent) mergeOp.getMergingComponents().get(i))
-                        .getBloomFilter().getNumElements();
+                numElements += ((LSMBTreeWithBuddyDiskComponent) mergeOp.getMergingComponents().get(i)).getBloomFilter()
+                        .getNumElements();
             }
 
             int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElements);
@@ -503,14 +487,8 @@
     public void markAsValid(ILSMComponent lsmComponent) throws HyracksDataException {
         LSMBTreeWithBuddyDiskComponent component = (LSMBTreeWithBuddyDiskComponent) lsmComponent;
         // Flush the bloom filter first.
-        int fileId = component.getBloomFilter().getFileId();
-        IBufferCache bufferCache = component.getBTree().getBufferCache();
-        int startPage = 0;
-        int maxPage = component.getBloomFilter().getNumPages();
-        forceFlushDirtyPages(bufferCache, fileId, startPage, maxPage);
-        forceFlushDirtyPages(component.getBTree());
+        markAsValidInternal(component.getBTree().getBufferCache(), component.getBloomFilter());
         markAsValidInternal(component.getBTree());
-        forceFlushDirtyPages(component.getBuddyBTree());
         markAsValidInternal(component.getBuddyBTree());
     }
 
@@ -590,7 +568,7 @@
     }
 
     @Override
-    public IFreePageManager getFreePageManager() {
+    public IMetaDataPageManager getMetaManager() {
         // This method should never be called for disk only indexes
         return null;
     }
@@ -621,17 +599,12 @@
             FileReference insertFileRef, FileReference deleteFileRef, FileReference bloomFilterFileRef,
             boolean createComponent) throws HyracksDataException, IndexException {
         // Create new instance.
-        LSMBTreeWithBuddyDiskComponent component = (LSMBTreeWithBuddyDiskComponent) factory
-                .createLSMComponentInstance(new LSMComponentFileReferences(insertFileRef, deleteFileRef,
-                        bloomFilterFileRef));
+        LSMBTreeWithBuddyDiskComponent component = (LSMBTreeWithBuddyDiskComponent) factory.createLSMComponentInstance(
+                new LSMComponentFileReferences(insertFileRef, deleteFileRef, bloomFilterFileRef));
         if (createComponent) {
-            component.getBTree().create();
-            component.getBuddyBTree().create();
             component.getBloomFilter().create();
         }
 
-        component.getBTree().activate();
-        component.getBuddyBTree().activate();
         component.getBloomFilter().activate();
         return component;
     }
@@ -696,9 +669,9 @@
 
             // Create the three loaders
             btreeBulkLoader = (BTreeBulkLoader) ((LSMBTreeWithBuddyDiskComponent) component).getBTree()
-                    .createBulkLoader(fillFactor, verifyInput, numElementsHint, false);
+                    .createBulkLoader(fillFactor, verifyInput, numElementsHint, false, true);
             buddyBtreeBulkLoader = (BTreeBulkLoader) ((LSMBTreeWithBuddyDiskComponent) component).getBuddyBTree()
-                    .createBulkLoader(fillFactor, verifyInput, numElementsHint, false);
+                    .createBulkLoader(fillFactor, verifyInput, numElementsHint, false, true);
             int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElementsHint);
             BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
                     bloomFilterFalsePositiveRate);
@@ -886,16 +859,29 @@
     public boolean isPrimaryIndex() {
         return false;
     }
-    
+
     @Override
     public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) {
         Set<String> files = new HashSet<String>();
-
         LSMBTreeWithBuddyDiskComponent component = (LSMBTreeWithBuddyDiskComponent) lsmComponent;
-        files.add(component.getBTree().getFileReference().toString());
-        files.add(component.getBuddyBTree().getFileReference().toString());
-        files.add(component.getBloomFilter().getFileReference().toString());
-
+        files.add(component.getBTree().getFileReference().getFile().getAbsolutePath());
+        files.add(component.getBuddyBTree().getFileReference().getFile().getAbsolutePath());
+        files.add(component.getBloomFilter().getFileReference().getFile().getAbsolutePath());
         return files;
     }
-}
\ No newline at end of file
+
+    @Override
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        if (!appendOnly) {
+            throw new IndexException("LSM Indices do not support in-place inserts");
+        } else {
+            return createBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex);
+        }
+    }
+
+    @Override
+    public void allocateMemoryComponents() throws HyracksDataException {
+        //do nothing since external index never use memory components
+    }
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddyOpContext.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddyOpContext.java
index 42b37c3..a837301 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddyOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddyOpContext.java
@@ -25,9 +25,12 @@
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
+import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
 
 public class ExternalBTreeWithBuddyOpContext implements ILSMIndexOperationContext {
@@ -40,11 +43,12 @@
     public final ISearchOperationCallback searchCallback;
     private final int targetIndexVersion;
     public ISearchPredicate searchPredicate;
+    public LSMBTreeWithBuddyCursorInitialState searchInitialState;
 
     public ExternalBTreeWithBuddyOpContext(IBinaryComparatorFactory[] btreeCmpFactories,
             IBinaryComparatorFactory[] buddyBtreeCmpFactories, ISearchOperationCallback searchCallback,
-            int targetIndexVersion) {
-
+            int targetIndexVersion, ILSMHarness lsmHarness, ITreeIndexFrameFactory btreeInteriorFrameFactory,
+            ITreeIndexFrameFactory btreeLeafFrameFactory, ITreeIndexFrameFactory buddyBtreeLeafFrameFactory) {
         this.componentHolder = new LinkedList<ILSMComponent>();
         this.componentsToBeMerged = new LinkedList<ILSMComponent>();
         this.componentsToBeReplicated = new LinkedList<ILSMComponent>();
@@ -52,8 +56,12 @@
         this.targetIndexVersion = targetIndexVersion;
         this.bTreeCmp = MultiComparator.create(btreeCmpFactories);
         this.buddyBTreeCmp = MultiComparator.create(buddyBtreeCmpFactories);
+        searchInitialState = new LSMBTreeWithBuddyCursorInitialState(btreeInteriorFrameFactory, btreeLeafFrameFactory,
+                buddyBtreeLeafFrameFactory, lsmHarness, MultiComparator.create(btreeCmpFactories),
+                MultiComparator.create(buddyBtreeCmpFactories), NoOpOperationCallback.INSTANCE, null);
     }
 
+    @Override
     public void setOperation(IndexOperation newOp) {
         reset();
         this.op = newOp;
@@ -123,4 +131,4 @@
     public List<ILSMComponent> getComponentsToBeReplicated() {
         return componentsToBeReplicated;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
index 663d2f7..13c6949 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
@@ -37,13 +37,12 @@
 import org.apache.hyracks.storage.am.btree.impls.BTree;
 import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
 import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeBulkLoader;
-import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
 import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
 import org.apache.hyracks.storage.am.common.api.IIndexCursor;
 import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
@@ -73,7 +72,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
-import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager;
+import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
@@ -113,21 +112,21 @@
         super(virtualBufferCaches, diskBTreeFactory.getBufferCache(), fileManager, diskFileMapProvider,
                 bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, filterFrameFactory,
                 filterManager, filterFields, durable);
-        int i = 0;
-        for (IVirtualBufferCache virtualBufferCache : virtualBufferCaches) {
-            LSMBTreeMemoryComponent mutableComponent = new LSMBTreeMemoryComponent(new BTree(virtualBufferCache,
-                    virtualBufferCache.getFileMapProvider(), new VirtualFreePageManager(
-                            virtualBufferCache.getNumPages()), interiorFrameFactory, insertLeafFrameFactory,
-                    cmpFactories, fieldCount, new FileReference(new File(fileManager.getBaseDir() + "_virtual_" + i))),
-                    virtualBufferCache, i == 0 ? true : false, filterFactory == null ? null
-                            : filterFactory.createLSMComponentFilter());
-            memoryComponents.add(mutableComponent);
-            ++i;
-        }
-
         this.insertLeafFrameFactory = insertLeafFrameFactory;
         this.deleteLeafFrameFactory = deleteLeafFrameFactory;
         this.cmpFactories = cmpFactories;
+        int i = 0;
+        for (IVirtualBufferCache virtualBufferCache : virtualBufferCaches) {
+            LSMBTreeMemoryComponent mutableComponent = new LSMBTreeMemoryComponent(
+                    new BTree(virtualBufferCache, virtualBufferCache.getFileMapProvider(),
+                            new VirtualMetaDataPageManager(virtualBufferCache.getNumPages()), interiorFrameFactory,
+                            insertLeafFrameFactory, cmpFactories, fieldCount,
+                            new FileReference(new File(fileManager.getBaseDir() + "_virtual_" + i))),
+                    virtualBufferCache, i == 0 ? true : false,
+                    filterFactory == null ? null : filterFactory.createLSMComponentFilter());
+            memoryComponents.add(mutableComponent);
+            ++i;
+        }
         componentFactory = new LSMBTreeDiskComponentFactory(diskBTreeFactory, bloomFilterFactory, filterFactory);
         bulkLoadComponentFactory = new LSMBTreeDiskComponentFactory(bulkLoadBTreeFactory, bloomFilterFactory,
                 filterFactory);
@@ -170,12 +169,6 @@
         if (isActivated) {
             throw new HyracksDataException("Failed to activate the index since it is already activated.");
         }
-        for (ILSMComponent c : memoryComponents) {
-            LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-            ((IVirtualBufferCache) mutableComponent.getBTree().getBufferCache()).open();
-            mutableComponent.getBTree().create();
-            mutableComponent.getBTree().activate();
-        }
         List<ILSMComponent> immutableComponents = diskComponents;
         immutableComponents.clear();
         List<LSMComponentFileReferences> validFileReferences;
@@ -220,15 +213,10 @@
             LSMBTreeDiskComponent component = (LSMBTreeDiskComponent) c;
             BTree btree = component.getBTree();
             BloomFilter bloomFilter = component.getBloomFilter();
-            btree.deactivate();
+            btree.deactivateCloseHandle();
             bloomFilter.deactivate();
         }
-        for (ILSMComponent c : memoryComponents) {
-            LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-            mutableComponent.getBTree().deactivate();
-            mutableComponent.getBTree().destroy();
-            ((IVirtualBufferCache) mutableComponent.getBTree().getBufferCache()).close();
-        }
+        deallocateMemoryComponents();
         isActivated = false;
     }
 
@@ -262,12 +250,8 @@
             throw new HyracksDataException("Failed to clear the index since it is not activated.");
         }
 
+        clearMemoryComponents();
         List<ILSMComponent> immutableComponents = diskComponents;
-        for (ILSMComponent c : memoryComponents) {
-            LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-            mutableComponent.getBTree().clear();
-            mutableComponent.reset();
-        }
         for (ILSMComponent c : immutableComponents) {
             LSMBTreeDiskComponent component = (LSMBTreeDiskComponent) c;
             component.getBloomFilter().deactivate();
@@ -284,40 +268,23 @@
         List<ILSMComponent> operationalComponents = ctx.getComponentHolder();
         int cmc = currentMutableComponentId.get();
         ctx.setCurrentMutableComponentId(cmc);
-        int numMutableComponents = memoryComponents.size();
         operationalComponents.clear();
         switch (ctx.getOperation()) {
             case UPDATE:
-            case UPSERT:
             case PHYSICALDELETE:
             case FLUSH:
             case DELETE:
                 operationalComponents.add(memoryComponents.get(cmc));
                 break;
             case INSERT:
-                for (int i = 0; i < numMutableComponents - 1; i++) {
-                    ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
-                    LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-                    if (mutableComponent.isReadable()) {
-                        // Make sure newest components are added first
-                        operationalComponents.add(0, mutableComponent);
-                    }
-                }
-                // The current mutable component is always added
-                operationalComponents.add(0, memoryComponents.get(cmc));
+            case UPSERT:
+                addOperationalMutableComponents(operationalComponents);
                 operationalComponents.addAll(immutableComponents);
                 break;
             case SEARCH:
-                for (int i = 0; i < numMutableComponents - 1; i++) {
-                    ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
-                    LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-                    if (mutableComponent.isReadable()) {
-                        // Make sure newest components are added first
-                        operationalComponents.add(0, mutableComponent);
-                    }
+                if (memoryComponentsAllocated) {
+                    addOperationalMutableComponents(operationalComponents);
                 }
-                // The current mutable component is always added
-                operationalComponents.add(0, memoryComponents.get(cmc));
                 if (filterManager != null) {
                     for (ILSMComponent c : immutableComponents) {
                         if (c.getLSMComponentFilter().satisfy(
@@ -371,19 +338,17 @@
         }
         if (ctx.filterTuple != null) {
             ctx.filterTuple.reset(tuple);
-            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter()
-                    .update(ctx.filterTuple, ctx.filterCmp);
+            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter().update(ctx.filterTuple,
+                    ctx.filterCmp);
         }
     }
 
     private boolean insert(ITupleReference tuple, LSMBTreeOpContext ctx) throws HyracksDataException, IndexException {
-        ILSMComponent c = ctx.getComponentHolder().get(0);
-        LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-        MultiComparator comparator = MultiComparator.create(mutableComponent.getBTree().getComparatorFactories());
-        LSMBTreePointSearchCursor searchCursor = new LSMBTreePointSearchCursor(ctx);
-        IIndexCursor memCursor = new BTreeRangeSearchCursor(ctx.currentMutableBTreeOpCtx.leafFrame, false);
-        RangePredicate predicate = new RangePredicate(tuple, tuple, true, true, comparator, comparator);
-
+        LSMBTreePointSearchCursor searchCursor = ctx.insertSearchCursor;
+        IIndexCursor memCursor = ctx.memCursor;
+        RangePredicate predicate = (RangePredicate) ctx.getSearchPredicate();
+        predicate.setHighKey(tuple);
+        predicate.setLowKey(tuple);
         if (needKeyDupCheck) {
             // first check the inmemory component
             ctx.currentMutableBTreeAccessor.search(memCursor, predicate);
@@ -424,7 +389,6 @@
                 ctx.getComponentHolder().add(0, firstComponent);
             }
         }
-
         ctx.currentMutableBTreeAccessor.upsertIfConditionElseInsert(tuple, AntimatterAwareTupleAcceptor.INSTANCE);
         return true;
     }
@@ -434,10 +398,8 @@
             throws HyracksDataException, IndexException {
         LSMBTreeOpContext ctx = (LSMBTreeOpContext) ictx;
         List<ILSMComponent> operationalComponents = ctx.getComponentHolder();
-
-        LSMBTreeCursorInitialState initialState = new LSMBTreeCursorInitialState(insertLeafFrameFactory, ctx.cmp,
-                ctx.bloomFilterCmp, lsmHarness, pred, ctx.searchCallback, operationalComponents);
-        cursor.open(initialState, pred);
+        ctx.searchInitialState.reset(pred, operationalComponents);
+        cursor.open(ctx.searchInitialState, pred);
     }
 
     @Override
@@ -450,9 +412,9 @@
         opCtx.setOperation(IndexOperation.FLUSH);
         opCtx.getComponentHolder().add(flushingComponent);
         ILSMIndexAccessorInternal flushAccessor = new LSMBTreeAccessor(lsmHarness, opCtx);
-        ioScheduler.scheduleOperation(new LSMBTreeFlushOperation(flushAccessor, flushingComponent, componentFileRefs
-                .getInsertIndexFileReference(), componentFileRefs.getBloomFilterFileReference(), callback, fileManager
-                .getBaseDir()));
+        ioScheduler.scheduleOperation(new LSMBTreeFlushOperation(flushAccessor, flushingComponent,
+                componentFileRefs.getInsertIndexFileReference(), componentFileRefs.getBloomFilterFileReference(),
+                callback, fileManager.getBaseDir()));
     }
 
     @Override
@@ -482,9 +444,9 @@
 
         LSMBTreeDiskComponent component = createDiskComponent(componentFactory, flushOp.getBTreeFlushTarget(),
                 flushOp.getBloomFilterFlushTarget(), true);
-        IIndexBulkLoader bulkLoader = component.getBTree().createBulkLoader(1.0f, false, numElements, false);
-        IIndexBulkLoader builder = component.getBloomFilter().createBuilder(numElements,
-                bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements());
+        IIndexBulkLoader bulkLoader = component.getBTree().createBulkLoader(1.0f, false, numElements, false, true);
+        IIndexBulkLoader builder = component.getBloomFilter().createBuilder(numElements, bloomFilterSpec.getNumHashes(),
+                bloomFilterSpec.getNumBucketsPerElements());
 
         IIndexCursor scanCursor = accessor.createSearchCursor(false);
         accessor.search(scanCursor, nullPred);
@@ -498,7 +460,6 @@
             scanCursor.close();
             builder.end();
         }
-        bulkLoader.end();
 
         if (component.getLSMComponentFilter() != null) {
             List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
@@ -507,6 +468,9 @@
             filterManager.updateFilterInfo(component.getLSMComponentFilter(), filterTuples);
             filterManager.writeFilterInfo(component.getLSMComponentFilter(), component.getBTree());
         }
+
+        bulkLoader.end();
+
         return component;
     }
 
@@ -517,21 +481,21 @@
         opCtx.setOperation(IndexOperation.MERGE);
         List<ILSMComponent> mergingComponents = ctx.getComponentHolder();
         boolean returnDeletedTuples = false;
-        if (ctx.getComponentHolder().get(ctx.getComponentHolder().size() - 1) != diskComponents.get(diskComponents
-                .size() - 1)) {
+        if (ctx.getComponentHolder().get(ctx.getComponentHolder().size() - 1) != diskComponents
+                .get(diskComponents.size() - 1)) {
             returnDeletedTuples = true;
         }
         ITreeIndexCursor cursor = new LSMBTreeRangeSearchCursor(opCtx, returnDeletedTuples);
         BTree firstBTree = ((LSMBTreeDiskComponent) mergingComponents.get(0)).getBTree();
         BTree lastBTree = ((LSMBTreeDiskComponent) mergingComponents.get(mergingComponents.size() - 1)).getBTree();
-        FileReference firstFile = diskFileMapProvider.lookupFileName(firstBTree.getFileId());
-        FileReference lastFile = diskFileMapProvider.lookupFileName(lastBTree.getFileId());
-        LSMComponentFileReferences relMergeFileRefs = fileManager.getRelMergeFileReference(firstFile.getFile()
-                .getName(), lastFile.getFile().getName());
+        FileReference firstFile = firstBTree.getFileReference();
+        FileReference lastFile = lastBTree.getFileReference();
+        LSMComponentFileReferences relMergeFileRefs = fileManager
+                .getRelMergeFileReference(firstFile.getFile().getName(), lastFile.getFile().getName());
         ILSMIndexAccessorInternal accessor = new LSMBTreeAccessor(lsmHarness, opCtx);
-        ioScheduler.scheduleOperation(new LSMBTreeMergeOperation(accessor, mergingComponents, cursor, relMergeFileRefs
-                .getInsertIndexFileReference(), relMergeFileRefs.getBloomFilterFileReference(), callback, fileManager
-                .getBaseDir()));
+        ioScheduler.scheduleOperation(new LSMBTreeMergeOperation(accessor, mergingComponents, cursor,
+                relMergeFileRefs.getInsertIndexFileReference(), relMergeFileRefs.getBloomFilterFileReference(),
+                callback, fileManager.getBaseDir()));
     }
 
     @Override
@@ -555,7 +519,8 @@
         LSMBTreeDiskComponent mergedComponent = createDiskComponent(componentFactory, mergeOp.getBTreeMergeTarget(),
                 mergeOp.getBloomFilterMergeTarget(), true);
 
-        IIndexBulkLoader bulkLoader = mergedComponent.getBTree().createBulkLoader(1.0f, false, numElements, false);
+        IIndexBulkLoader bulkLoader = mergedComponent.getBTree().createBulkLoader(1.0f, false, numElements, false,
+                true);
         IIndexBulkLoader builder = mergedComponent.getBloomFilter().createBuilder(numElements,
                 bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements());
         try {
@@ -569,8 +534,6 @@
             cursor.close();
             builder.end();
         }
-        bulkLoader.end();
-
         if (mergedComponent.getLSMComponentFilter() != null) {
             List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
@@ -581,23 +544,23 @@
             filterManager.writeFilterInfo(mergedComponent.getLSMComponentFilter(), mergedComponent.getBTree());
         }
 
+        bulkLoader.end();
+
         return mergedComponent;
     }
 
     protected LSMBTreeDiskComponent createDiskComponent(LSMBTreeDiskComponentFactory factory,
             FileReference btreeFileRef, FileReference bloomFilterFileRef, boolean createComponent)
-            throws HyracksDataException, IndexException {
+                    throws HyracksDataException, IndexException {
         // Create new BTree instance.
         LSMBTreeDiskComponent component = (LSMBTreeDiskComponent) factory
                 .createLSMComponentInstance(new LSMComponentFileReferences(btreeFileRef, null, bloomFilterFileRef));
-        if (createComponent) {
-            component.getBTree().create();
-            component.getBloomFilter().create();
-        }
         // BTree will be closed during cleanup of merge().
-        component.getBTree().activate();
+        if (!createComponent) {
+            component.getBTree().activate();
+        }
         component.getBloomFilter().activate();
-        if (component.getLSMComponentFilter() != null) {
+        if (component.getLSMComponentFilter() != null && !createComponent) {
             filterManager.readFilterInfo(component.getLSMComponentFilter(), component.getBTree());
         }
         return component;
@@ -624,13 +587,7 @@
         // The order of forcing the dirty page to be flushed is critical. The
         // bloom filter must be always done first.
         LSMBTreeDiskComponent component = (LSMBTreeDiskComponent) lsmComponent;
-        // Flush the bloom filter first.
-        int fileId = component.getBloomFilter().getFileId();
-        IBufferCache bufferCache = component.getBTree().getBufferCache();
-        int startPage = 0;
-        int maxPage = component.getBloomFilter().getNumPages();
-        forceFlushDirtyPages(bufferCache, fileId, startPage, maxPage);
-        forceFlushDirtyPages(component.getBTree());
+        markAsValidInternal(component.getBTree().getBufferCache(), component.getBloomFilter());
         markAsValidInternal(component.getBTree());
     }
 
@@ -645,8 +602,8 @@
         public final PermutingTupleReference filterTuple;
         public final MultiComparator filterCmp;
 
-        public LSMBTreeBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint, boolean checkIfEmptyIndex)
-                throws TreeIndexException, HyracksDataException {
+        public LSMBTreeBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+                boolean checkIfEmptyIndex) throws TreeIndexException, HyracksDataException {
             if (checkIfEmptyIndex && !isEmptyIndex()) {
                 throw new TreeIndexException("Cannot load an index that is not empty");
             }
@@ -656,7 +613,7 @@
                 throw new TreeIndexException(e);
             }
             bulkLoader = (BTreeBulkLoader) ((LSMBTreeDiskComponent) component).getBTree().createBulkLoader(fillFactor,
-                    verifyInput, numElementsHint, false);
+                    verifyInput, numElementsHint, false, true);
 
             int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElementsHint);
             BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
@@ -702,12 +659,11 @@
             }
         }
 
-        protected void cleanupArtifacts() throws HyracksDataException, IndexException {
+        protected void cleanupArtifacts() throws HyracksDataException {
             if (!cleanedUpArtifacts) {
                 cleanedUpArtifacts = true;
-                // We make sure to end the bloom filter load to release latches.
                 if (!endedBloomFilterLoad) {
-                    builder.end();
+                    builder.abort();
                     endedBloomFilterLoad = true;
                 }
                 ((LSMBTreeDiskComponent) component).getBTree().deactivate();
@@ -724,13 +680,14 @@
                     builder.end();
                     endedBloomFilterLoad = true;
                 }
-                bulkLoader.end();
 
                 if (component.getLSMComponentFilter() != null) {
                     filterManager.writeFilterInfo(component.getLSMComponentFilter(),
                             ((LSMBTreeDiskComponent) component).getBTree());
                 }
 
+                bulkLoader.end();
+
                 if (isEmptyComponent) {
                     cleanupArtifacts();
                 } else {
@@ -738,13 +695,25 @@
                 }
             }
         }
+
+        @Override
+        public void abort() throws HyracksDataException {
+            if (bulkLoader != null) {
+                bulkLoader.abort();
+            }
+
+            if (builder != null) {
+                builder.abort();
+            }
+
+        }
     }
 
     public LSMBTreeOpContext createOpContext(IModificationOperationCallback modificationCallback,
             ISearchOperationCallback searchCallback) {
         return new LSMBTreeOpContext(memoryComponents, insertLeafFrameFactory, deleteLeafFrameFactory,
                 modificationCallback, searchCallback, componentFactory.getBloomFilterKeyFields().length, btreeFields,
-                filterFields);
+                filterFields, lsmHarness);
     }
 
     @Override
@@ -801,10 +770,10 @@
     }
 
     @Override
-    public IFreePageManager getFreePageManager() {
+    public IMetaDataPageManager getMetaManager() {
         LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) memoryComponents
                 .get(currentMutableComponentId.get());
-        return mutableComponent.getBTree().getFreePageManager();
+        return mutableComponent.getBTree().getMetaManager();
     }
 
     @Override
@@ -834,10 +803,7 @@
 
     @Override
     public void validate() throws HyracksDataException {
-        for (ILSMComponent c : memoryComponents) {
-            LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
-            mutableComponent.getBTree().validate();
-        }
+        validateMemoryComponents();
         List<ILSMComponent> immutableComponents = diskComponents;
         for (ILSMComponent c : immutableComponents) {
             BTree btree = ((LSMBTreeDiskComponent) c).getBTree();
@@ -856,14 +822,84 @@
     }
 
     @Override
-    public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) {
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        try {
+            return new LSMBTreeBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex);
+        } catch (HyracksDataException e) {
+            throw new TreeIndexException(e);
+        }
+    }
 
+    @Override
+    public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) {
         Set<String> files = new HashSet<String>();
         LSMBTreeDiskComponent component = (LSMBTreeDiskComponent) lsmComponent;
-
-        files.add(component.getBTree().getFileReference().toString());
-        files.add(component.getBloomFilter().getFileReference().toString());
-        
+        files.add(component.getBTree().getFileReference().getFile().getAbsolutePath());
+        files.add(component.getBloomFilter().getFileReference().getFile().getAbsolutePath());
         return files;
     }
+
+    @Override
+    public synchronized void allocateMemoryComponents() throws HyracksDataException {
+        if (!isActivated) {
+            throw new HyracksDataException("Failed to allocate memory components since the index is not active");
+        }
+        if (memoryComponentsAllocated) {
+            return;
+        }
+        for (ILSMComponent c : memoryComponents) {
+            LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
+            ((IVirtualBufferCache) mutableComponent.getBTree().getBufferCache()).open();
+            mutableComponent.getBTree().create();
+            mutableComponent.getBTree().activate();
+        }
+        memoryComponentsAllocated = true;
+    }
+
+    private void addOperationalMutableComponents(List<ILSMComponent> operationalComponents) {
+        int cmc = currentMutableComponentId.get();
+        int numMutableComponents = memoryComponents.size();
+        for (int i = 0; i < numMutableComponents - 1; i++) {
+            ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
+            LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
+            if (mutableComponent.isReadable()) {
+                // Make sure newest components are added first
+                operationalComponents.add(0, mutableComponent);
+            }
+        }
+        // The current mutable component is always added
+        operationalComponents.add(0, memoryComponents.get(cmc));
+    }
+
+    private synchronized void clearMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
+                mutableComponent.getBTree().clear();
+                mutableComponent.reset();
+            }
+        }
+    }
+
+    private synchronized void validateMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
+                mutableComponent.getBTree().validate();
+            }
+        }
+    }
+
+    private synchronized void deallocateMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent) c;
+                mutableComponent.getBTree().deactivate();
+                mutableComponent.getBTree().destroy();
+                ((IVirtualBufferCache) mutableComponent.getBTree().getBufferCache()).close();
+            }
+            memoryComponentsAllocated = false;
+        }
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeCursorInitialState.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeCursorInitialState.java
index c91bc1c..15dc5a4 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeCursorInitialState.java
@@ -37,10 +37,10 @@
     private final MultiComparator bloomFilterCmp;
     private final ILSMHarness lsmHarness;
 
-    private final ISearchPredicate predicate;
+    private ISearchPredicate predicate;
     private ISearchOperationCallback searchCallback;
 
-    private final List<ILSMComponent> operationalComponents;
+    private List<ILSMComponent> operationalComponents;
 
     public LSMBTreeCursorInitialState(ITreeIndexFrameFactory leafFrameFactory, MultiComparator cmp,
             MultiComparator bloomFilterCmp, ILSMHarness lsmHarness, ISearchPredicate predicate,
@@ -102,4 +102,10 @@
     public void setOriginialKeyComparator(MultiComparator originalCmp) {
         this.cmp = originalCmp;
     }
-}
\ No newline at end of file
+
+    // make the cursor initial state re-usable
+    public void reset(ISearchPredicate predicate, List<ILSMComponent> operationalComponents) {
+        this.predicate = predicate;
+        this.operationalComponents = operationalComponents;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
index c3031c6..2be4e4a 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
@@ -40,7 +40,7 @@
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public class LSMBTreeFileManager extends AbstractLSMIndexFileManager {
-    private static final String BTREE_STRING = "b";
+    public static final String BTREE_STRING = "b";
 
     private final TreeIndexFactory<? extends ITreeIndex> btreeFactory;
 
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
index 1f56d55..e833283 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
@@ -26,6 +26,8 @@
 import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
 import org.apache.hyracks.storage.am.btree.impls.BTreeOpContext;
+import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
+import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
@@ -35,6 +37,7 @@
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
 
 public final class LSMBTreeOpContext implements ILSMIndexOperationContext {
@@ -51,8 +54,8 @@
     public IndexOperation op;
     public final MultiComparator cmp;
     public final MultiComparator bloomFilterCmp;
-    public final IModificationOperationCallback modificationCallback;
-    public final ISearchOperationCallback searchCallback;
+    public IModificationOperationCallback modificationCallback;
+    public ISearchOperationCallback searchCallback;
     private final List<ILSMComponent> componentHolder;
     private final List<ILSMComponent> componentsToBeMerged;
     private final List<ILSMComponent> componentsToBeReplicated;
@@ -60,10 +63,14 @@
     public final MultiComparator filterCmp;
     public final PermutingTupleReference filterTuple;
     public ISearchPredicate searchPredicate;
+    public BTreeRangeSearchCursor memCursor;
+    public LSMBTreeCursorInitialState searchInitialState;
+    public LSMBTreePointSearchCursor insertSearchCursor;
 
     public LSMBTreeOpContext(List<ILSMComponent> mutableComponents, ITreeIndexFrameFactory insertLeafFrameFactory,
             ITreeIndexFrameFactory deleteLeafFrameFactory, IModificationOperationCallback modificationCallback,
-            ISearchOperationCallback searchCallback, int numBloomFilterKeyFields, int[] btreeFields, int[] filterFields) {
+            ISearchOperationCallback searchCallback, int numBloomFilterKeyFields, int[] btreeFields, int[] filterFields,
+            ILSMHarness lsmHarness) {
         LSMBTreeMemoryComponent c = (LSMBTreeMemoryComponent) mutableComponents.get(0);
         IBinaryComparatorFactory cmpFactories[] = c.getBTree().getComparatorFactories();
         if (cmpFactories[0] != null) {
@@ -110,6 +117,14 @@
             filterCmp = null;
             filterTuple = null;
         }
+        searchPredicate = new RangePredicate(null, null, true, true, cmp, cmp);
+        if (insertLeafFrame != null) {
+            memCursor = new BTreeRangeSearchCursor(insertLeafFrame, false);
+        }
+
+        searchInitialState = new LSMBTreeCursorInitialState(insertLeafFrameFactory, cmp, bloomFilterCmp, lsmHarness,
+                null, searchCallback, null);
+        insertSearchCursor = new LSMBTreePointSearchCursor(this);
     }
 
     @Override
@@ -135,6 +150,7 @@
         componentsToBeReplicated.clear();
     }
 
+    @Override
     public IndexOperation getOperation() {
         return op;
     }
@@ -199,4 +215,4 @@
     public List<ILSMComponent> getComponentsToBeReplicated() {
         return componentsToBeReplicated;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java
index 8d442d6..2fb96c3 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java
@@ -25,11 +25,10 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
+import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
 import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.common.api.ICursorInitialState;
-import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.IIndexCursor;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
@@ -46,13 +45,13 @@
 
 public class LSMBTreePointSearchCursor implements ITreeIndexCursor {
 
-    private IIndexCursor[] rangeCursors;
+    private BTreeRangeSearchCursor[] rangeCursors;
     private final ILSMIndexOperationContext opCtx;
     private ISearchOperationCallback searchCallback;
     private RangePredicate predicate;
     private boolean includeMutableComponent;
     private int numBTrees;
-    private IIndexAccessor[] btreeAccessors;
+    private BTreeAccessor[] btreeAccessors;
     private ILSMHarness lsmHarness;
     private boolean nextHasBeenCalled;
     private boolean foundTuple;
@@ -151,25 +150,49 @@
         searchCallback = lsmInitialState.getSearchOperationCallback();
         predicate = (RangePredicate) lsmInitialState.getSearchPredicate();
         numBTrees = operationalComponents.size();
-        rangeCursors = new IIndexCursor[numBTrees];
-        btreeAccessors = new IIndexAccessor[numBTrees];
+        if (rangeCursors == null || rangeCursors.length != numBTrees) {
+            // object creation: should be relatively low
+            rangeCursors = new BTreeRangeSearchCursor[numBTrees];
+            btreeAccessors = new BTreeAccessor[numBTrees];
+        }
         includeMutableComponent = false;
 
         for (int i = 0; i < numBTrees; i++) {
             ILSMComponent component = operationalComponents.get(i);
             BTree btree;
-            IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getLeafFrameFactory().createFrame();
             if (component.getType() == LSMComponentType.MEMORY) {
                 includeMutableComponent = true;
                 // No need for a bloom filter for the in-memory BTree.
-                rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
-                btree = (BTree) ((LSMBTreeMemoryComponent) component).getBTree();
+                if (rangeCursors[i] == null || rangeCursors[i].isBloomFilterAware()) {
+                    // create a new one
+                    IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getLeafFrameFactory().createFrame();
+                    rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
+                } else {
+                    // reset
+                    rangeCursors[i].reset();
+                }
+                btree = ((LSMBTreeMemoryComponent) component).getBTree();
             } else {
-                rangeCursors[i] = new BloomFilterAwareBTreePointSearchCursor(leafFrame, false,
-                        ((LSMBTreeDiskComponent) component).getBloomFilter());
-                btree = (BTree) ((LSMBTreeDiskComponent) component).getBTree();
+                if (rangeCursors[i] != null && rangeCursors[i].isBloomFilterAware()) {
+                    // can re-use cursor
+                    ((BloomFilterAwareBTreePointSearchCursor) rangeCursors[i])
+                            .resetBloomFilter(((LSMBTreeDiskComponent) component).getBloomFilter());
+                    rangeCursors[i].reset();
+                } else {
+                    // create new cursor <should be relatively rare>
+                    IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getLeafFrameFactory().createFrame();
+                    rangeCursors[i] = new BloomFilterAwareBTreePointSearchCursor(leafFrame, false,
+                            ((LSMBTreeDiskComponent) component).getBloomFilter());
+                }
+                btree = ((LSMBTreeDiskComponent) component).getBTree();
             }
-            btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            if (btreeAccessors[i] == null) {
+                btreeAccessors[i] = (BTreeAccessor) btree.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+            } else {
+                // re-use
+                btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            }
         }
         nextHasBeenCalled = false;
         foundTuple = false;
@@ -210,13 +233,11 @@
     @Override
     public void setBufferCache(IBufferCache bufferCache) {
         // do nothing
-
     }
 
     @Override
     public void setFileId(int fileId) {
         // do nothing
-
     }
 
     @Override
@@ -228,4 +249,4 @@
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java
index a148eac..2e85fe9 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java
@@ -27,14 +27,13 @@
 import org.apache.hyracks.dataflow.common.util.TupleUtils;
 import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
+import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
 import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.common.api.ICursorInitialState;
-import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.IIndexCursor;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
@@ -48,7 +47,7 @@
 
     private ISearchOperationCallback searchCallback;
     private RangePredicate predicate;
-    private IIndexAccessor[] btreeAccessors;
+    private BTreeAccessor[] btreeAccessors;
     private ArrayTupleBuilder tupleBuilder;
     private boolean proceed = true;
 
@@ -75,6 +74,7 @@
         proceed = false;
     }
 
+    @Override
     protected void checkPriorityQueue() throws HyracksDataException, IndexException {
         while (!outputPriorityQueue.isEmpty() || needPush == true) {
             if (!outputPriorityQueue.isEmpty()) {
@@ -178,8 +178,8 @@
     }
 
     @Override
-    public void open(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException,
-            IndexException {
+    public void open(ICursorInitialState initialState, ISearchPredicate searchPred)
+            throws HyracksDataException, IndexException {
         LSMBTreeCursorInitialState lsmInitialState = (LSMBTreeCursorInitialState) initialState;
         cmp = lsmInitialState.getOriginalKeyComparator();
         operationalComponents = lsmInitialState.getOperationalComponents();
@@ -192,21 +192,36 @@
         includeMutableComponent = false;
 
         int numBTrees = operationalComponents.size();
-        rangeCursors = new IIndexCursor[numBTrees];
-
-        btreeAccessors = new ITreeIndexAccessor[numBTrees];
+        if (rangeCursors == null || rangeCursors.length != numBTrees) {
+            // object creation: should be relatively low
+            rangeCursors = new IIndexCursor[numBTrees];
+            btreeAccessors = new BTreeAccessor[numBTrees];
+        }
         for (int i = 0; i < numBTrees; i++) {
             ILSMComponent component = operationalComponents.get(i);
             BTree btree;
-            IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getLeafFrameFactory().createFrame();
-            rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
+            if (rangeCursors[i] == null) {
+                // create, should be relatively rare
+                IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getLeafFrameFactory().createFrame();
+                rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
+            } else {
+                // re-use
+                rangeCursors[i].reset();
+            }
             if (component.getType() == LSMComponentType.MEMORY) {
                 includeMutableComponent = true;
-                btree = (BTree) ((LSMBTreeMemoryComponent) component).getBTree();
+                btree = ((LSMBTreeMemoryComponent) component).getBTree();
             } else {
-                btree = (BTree) ((LSMBTreeDiskComponent) component).getBTree();
+                btree = ((LSMBTreeDiskComponent) component).getBTree();
             }
-            btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+
+            if (btreeAccessors[i] == null) {
+                btreeAccessors[i] = (BTreeAccessor) btree.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+            } else {
+                // re-use
+                btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            }
             btreeAccessors[i].search(rangeCursors[i], searchPred);
         }
         setPriorityQueueComparator();
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeSearchCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeSearchCursor.java
index 68cf4e7..5d5501d 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeSearchCursor.java
@@ -137,4 +137,4 @@
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java
index d8c07fa..dab48f7 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java
@@ -24,168 +24,171 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
+import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
 import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.common.api.ICursorInitialState;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.LSMComponentType;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.LSMComponentType;
 import org.apache.hyracks.storage.am.lsm.common.impls.BloomFilterAwareBTreePointSearchCursor;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 
-public abstract class LSMBTreeWithBuddyAbstractCursor implements
-		ITreeIndexCursor {
+public abstract class LSMBTreeWithBuddyAbstractCursor implements ITreeIndexCursor {
 
-	protected boolean open;
-	protected ITreeIndexCursor[] btreeCursors;
-	protected ITreeIndexCursor[] buddyBtreeCursors;
-	protected ITreeIndexAccessor[] btreeAccessors;
-	protected ITreeIndexAccessor[] buddyBtreeAccessors;
-	protected MultiComparator btreeCmp;
-	protected MultiComparator buddyBtreeCmp;
-	protected int numberOfTrees;
-	protected RangePredicate btreeRangePredicate;
-	protected RangePredicate buddyBtreeRangePredicate;
-	protected ITupleReference frameTuple;
-	protected boolean includeMutableComponent;
-	protected ILSMHarness lsmHarness;
-	protected boolean foundNext;
-	protected final ILSMIndexOperationContext opCtx;
+    protected boolean open;
+    protected BTreeRangeSearchCursor[] btreeCursors;
+    protected BTreeRangeSearchCursor[] buddyBtreeCursors;
+    protected BTreeAccessor[] btreeAccessors;
+    protected BTreeAccessor[] buddyBtreeAccessors;
+    protected MultiComparator btreeCmp;
+    protected MultiComparator buddyBtreeCmp;
+    protected int numberOfTrees;
+    protected RangePredicate btreeRangePredicate;
+    protected RangePredicate buddyBtreeRangePredicate;
+    protected ITupleReference frameTuple;
+    protected boolean includeMutableComponent;
+    protected ILSMHarness lsmHarness;
+    protected boolean foundNext;
+    protected final ILSMIndexOperationContext opCtx;
 
-	protected List<ILSMComponent> operationalComponents;
+    protected List<ILSMComponent> operationalComponents;
 
-	public LSMBTreeWithBuddyAbstractCursor(ILSMIndexOperationContext opCtx) {
-		super();
-		this.opCtx = opCtx;
-	}
+    public LSMBTreeWithBuddyAbstractCursor(ILSMIndexOperationContext opCtx) {
+        super();
+        this.opCtx = opCtx;
+        buddyBtreeRangePredicate = new RangePredicate(null, null, true, true, null, null);
+    }
 
-	public ITreeIndexCursor getCursor(int cursorIndex) {
-		return btreeCursors[cursorIndex];
-	}
+    public ITreeIndexCursor getCursor(int cursorIndex) {
+        return btreeCursors[cursorIndex];
+    }
 
-	@Override
-	public void open(ICursorInitialState initialState,
-			ISearchPredicate searchPred) throws IndexException,
-			HyracksDataException {
+    @Override
+    public void open(ICursorInitialState initialState, ISearchPredicate searchPred)
+            throws IndexException, HyracksDataException {
 
-		LSMBTreeWithBuddyCursorInitialState lsmInitialState = (LSMBTreeWithBuddyCursorInitialState) initialState;
-		btreeCmp = lsmInitialState.getBTreeCmp();
-		buddyBtreeCmp = lsmInitialState.getBuddyBTreeCmp();
+        LSMBTreeWithBuddyCursorInitialState lsmInitialState = (LSMBTreeWithBuddyCursorInitialState) initialState;
+        btreeCmp = lsmInitialState.getBTreeCmp();
+        buddyBtreeCmp = lsmInitialState.getBuddyBTreeCmp();
 
-		operationalComponents = lsmInitialState.getOperationalComponents();
-		lsmHarness = lsmInitialState.getLSMHarness();
-		numberOfTrees = operationalComponents.size();
+        operationalComponents = lsmInitialState.getOperationalComponents();
+        lsmHarness = lsmInitialState.getLSMHarness();
+        numberOfTrees = operationalComponents.size();
 
-		btreeCursors = new ITreeIndexCursor[numberOfTrees];
-		buddyBtreeCursors = new ITreeIndexCursor[numberOfTrees];
-		btreeAccessors = new ITreeIndexAccessor[numberOfTrees];
-		buddyBtreeAccessors = new ITreeIndexAccessor[numberOfTrees];
+        if (btreeCursors == null || btreeCursors.length != numberOfTrees) {
+            // need to re-use the following four instead of re-creating
+            btreeCursors = new BTreeRangeSearchCursor[numberOfTrees];
+            buddyBtreeCursors = new BTreeRangeSearchCursor[numberOfTrees];
+            btreeAccessors = new BTreeAccessor[numberOfTrees];
+            buddyBtreeAccessors = new BTreeAccessor[numberOfTrees];
+        }
 
-		includeMutableComponent = false;
+        includeMutableComponent = false;
 
-		for (int i = 0; i < numberOfTrees; i++) {
-			ILSMComponent component = operationalComponents.get(i);
-			BTree btree;
-			BTree buddyBtree;
-			if (component.getType() == LSMComponentType.MEMORY) {
-				// This is not needed at the moment but is implemented anyway
-				includeMutableComponent = true;
-				// No need for a bloom filter for the in-memory BTree.
-				buddyBtreeCursors[i] = new BTreeRangeSearchCursor(
-						(IBTreeLeafFrame) lsmInitialState
-								.getBuddyBTreeLeafFrameFactory().createFrame(),
-						false);
-				btree = ((LSMBTreeWithBuddyMemoryComponent) component)
-						.getBTree();
-				buddyBtree = ((LSMBTreeWithBuddyMemoryComponent) component)
-						.getBuddyBTree();
-			} else {
-				buddyBtreeCursors[i] = new BloomFilterAwareBTreePointSearchCursor(
-						(IBTreeLeafFrame) lsmInitialState
-								.getBuddyBTreeLeafFrameFactory().createFrame(),
-						false,
-						((LSMBTreeWithBuddyDiskComponent) operationalComponents
-								.get(i)).getBloomFilter());
-				btree = ((LSMBTreeWithBuddyDiskComponent) component).getBTree();
-				buddyBtree = (BTree) ((LSMBTreeWithBuddyDiskComponent) component)
-						.getBuddyBTree();
-			}
-			IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState
-					.getBTreeLeafFrameFactory().createFrame();
-			btreeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
-			btreeAccessors[i] = btree.createAccessor(
-					NoOpOperationCallback.INSTANCE,
-					NoOpOperationCallback.INSTANCE);
-			buddyBtreeAccessors[i] = buddyBtree.createAccessor(
-					NoOpOperationCallback.INSTANCE,
-					NoOpOperationCallback.INSTANCE);
-		}
-		btreeRangePredicate = (RangePredicate) searchPred;
-		buddyBtreeRangePredicate = new RangePredicate(null, null, true, true,
-				buddyBtreeCmp, buddyBtreeCmp);
+        for (int i = 0; i < numberOfTrees; i++) {
+            ILSMComponent component = operationalComponents.get(i);
+            BTree btree;
+            BTree buddyBtree;
+            if (component.getType() == LSMComponentType.MEMORY) {
+                // This is not needed at the moment but is implemented anyway
+                includeMutableComponent = true;
+                // No need for a bloom filter for the in-memory BTree.
+                if (buddyBtreeCursors[i] == null || buddyBtreeCursors[i].isBloomFilterAware()) {
+                    buddyBtreeCursors[i] = new BTreeRangeSearchCursor(
+                            (IBTreeLeafFrame) lsmInitialState.getBuddyBTreeLeafFrameFactory().createFrame(), false);
+                } else {
+                    buddyBtreeCursors[i].reset();
+                }
+                btree = ((LSMBTreeWithBuddyMemoryComponent) component).getBTree();
+                buddyBtree = ((LSMBTreeWithBuddyMemoryComponent) component).getBuddyBTree();
+            } else {
+                if (buddyBtreeCursors[i] == null || !buddyBtreeCursors[i].isBloomFilterAware()) {
+                    buddyBtreeCursors[i] = new BloomFilterAwareBTreePointSearchCursor(
+                            (IBTreeLeafFrame) lsmInitialState.getBuddyBTreeLeafFrameFactory().createFrame(), false,
+                            ((LSMBTreeWithBuddyDiskComponent) operationalComponents.get(i)).getBloomFilter());
+                } else {
+                    buddyBtreeCursors[i].reset();
+                }
+                btree = ((LSMBTreeWithBuddyDiskComponent) component).getBTree();
+                buddyBtree = ((LSMBTreeWithBuddyDiskComponent) component).getBuddyBTree();
+            }
+            IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame();
+            if (btreeAccessors[i] == null) {
+                btreeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false);
+                btreeAccessors[i] = (BTreeAccessor) btree.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+                buddyBtreeAccessors[i] = (BTreeAccessor) buddyBtree.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+            } else {
+                btreeCursors[i].reset();
+                btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+                buddyBtreeAccessors[i].reset(buddyBtree, NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+            }
+        }
+        btreeRangePredicate = (RangePredicate) searchPred;
+        buddyBtreeRangePredicate.reset(null, null, true, true, buddyBtreeCmp, buddyBtreeCmp);
+        open = true;
+    }
 
-		open = true;
-	}
+    @Override
+    public void close() throws HyracksDataException {
+        if (!open) {
+            return;
+        }
+        try {
+            if (btreeCursors != null && buddyBtreeCursors != null) {
+                for (int i = 0; i < numberOfTrees; i++) {
+                    btreeCursors[i].close();
+                    buddyBtreeCursors[i].close();
+                }
+            }
+            btreeCursors = null;
+            buddyBtreeCursors = null;
+        } finally {
+            lsmHarness.endSearch(opCtx);
+        }
+        foundNext = false;
+        open = false;
+    }
 
-	@Override
-	public void close() throws HyracksDataException {
-		if (!open) {
-			return;
-		}
-		try {
-			if (btreeCursors != null && buddyBtreeCursors != null) {
-				for (int i = 0; i < numberOfTrees; i++) {
-					btreeCursors[i].close();
-					buddyBtreeCursors[i].close();
-				}
-			}
-			btreeCursors = null;
-			buddyBtreeCursors = null;
-		} finally {
-			lsmHarness.endSearch(opCtx);
-		}
-		foundNext = false;
-		open = false;
-	}
+    @Override
+    public ITupleReference getTuple() {
+        return frameTuple;
+    }
 
-	@Override
-	public ITupleReference getTuple() {
-		return frameTuple;
-	}
+    @Override
+    public ICachedPage getPage() {
+        // Do nothing
+        return null;
+    }
 
-	@Override
-	public ICachedPage getPage() {
-		// Do nothing
-		return null;
-	}
+    @Override
+    public void setBufferCache(IBufferCache bufferCache) {
+        // Do nothing
+    }
 
-	@Override
-	public void setBufferCache(IBufferCache bufferCache) {
-		// Do nothing
-	}
+    @Override
+    public void setFileId(int fileId) {
+        // Do nothing
+    }
 
-	@Override
-	public void setFileId(int fileId) {
-		// Do nothing
-	}
+    @Override
+    public boolean exclusiveLatchNodes() {
+        return false;
+    }
 
-	@Override
-	public boolean exclusiveLatchNodes() {
-		return false;
-	}
-
-	@Override
-	public void markCurrentTupleAsUpdated() throws HyracksDataException {
-		throw new HyracksDataException(
-				"Updating tuples is not supported with this cursor.");
-	}
+    @Override
+    public void markCurrentTupleAsUpdated() throws HyracksDataException {
+        throw new HyracksDataException("Updating tuples is not supported with this cursor.");
+    }
 
 }
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java
index 0c8e7a4..a2fe232 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyCursorInitialState.java
@@ -29,89 +29,88 @@
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 
 public class LSMBTreeWithBuddyCursorInitialState implements ICursorInitialState {
-	private final ITreeIndexFrameFactory btreeInteriorFrameFactory;
-	private final ITreeIndexFrameFactory btreeLeafFrameFactory;
-	private final ITreeIndexFrameFactory buddyBtreeLeafFrameFactory;
-	private MultiComparator btreeCmp;
-	private MultiComparator buddyBtreeCmp;
-	private final ILSMHarness lsmHarness;
+    private final ITreeIndexFrameFactory btreeInteriorFrameFactory;
+    private final ITreeIndexFrameFactory btreeLeafFrameFactory;
+    private final ITreeIndexFrameFactory buddyBtreeLeafFrameFactory;
+    private MultiComparator btreeCmp;
+    private MultiComparator buddyBtreeCmp;
+    private final ILSMHarness lsmHarness;
 
-	private ISearchOperationCallback searchCallback;
-	private final List<ILSMComponent> operationalComponents;
+    private ISearchOperationCallback searchCallback;
+    private List<ILSMComponent> operationalComponents;
 
-	public LSMBTreeWithBuddyCursorInitialState(
-			ITreeIndexFrameFactory btreeInteriorFrameFactory,
-			ITreeIndexFrameFactory btreeLeafFrameFactory,
-			ITreeIndexFrameFactory buddyBtreeLeafFrameFactory,
-			ILSMHarness lsmHarness,
-			MultiComparator btreeCmp, MultiComparator buddyBtreeCmp,
-			ISearchOperationCallback searchCallback,
-			List<ILSMComponent> operationalComponents) {
-		this.btreeLeafFrameFactory = btreeLeafFrameFactory;
-		this.btreeInteriorFrameFactory = btreeInteriorFrameFactory;
-		this.buddyBtreeLeafFrameFactory = buddyBtreeLeafFrameFactory;
-		this.btreeCmp = btreeCmp;
-		this.buddyBtreeCmp = buddyBtreeCmp;
-		this.lsmHarness = lsmHarness;
-		this.searchCallback = searchCallback;
-		this.operationalComponents = operationalComponents;
-	}
+    public LSMBTreeWithBuddyCursorInitialState(ITreeIndexFrameFactory btreeInteriorFrameFactory,
+            ITreeIndexFrameFactory btreeLeafFrameFactory, ITreeIndexFrameFactory buddyBtreeLeafFrameFactory,
+            ILSMHarness lsmHarness, MultiComparator btreeCmp, MultiComparator buddyBtreeCmp,
+            ISearchOperationCallback searchCallback, List<ILSMComponent> operationalComponents) {
+        this.btreeLeafFrameFactory = btreeLeafFrameFactory;
+        this.btreeInteriorFrameFactory = btreeInteriorFrameFactory;
+        this.buddyBtreeLeafFrameFactory = buddyBtreeLeafFrameFactory;
+        this.btreeCmp = btreeCmp;
+        this.buddyBtreeCmp = buddyBtreeCmp;
+        this.lsmHarness = lsmHarness;
+        this.searchCallback = searchCallback;
+        this.operationalComponents = operationalComponents;
+    }
 
-	public ITreeIndexFrameFactory getBTreeInteriorFrameFactory() {
-		return btreeInteriorFrameFactory;
-	}
+    public ITreeIndexFrameFactory getBTreeInteriorFrameFactory() {
+        return btreeInteriorFrameFactory;
+    }
 
-	public ITreeIndexFrameFactory getBTreeLeafFrameFactory() {
-		return btreeLeafFrameFactory;
-	}
+    public ITreeIndexFrameFactory getBTreeLeafFrameFactory() {
+        return btreeLeafFrameFactory;
+    }
 
-	public ITreeIndexFrameFactory getBuddyBTreeLeafFrameFactory() {
-		return buddyBtreeLeafFrameFactory;
-	}
+    public ITreeIndexFrameFactory getBuddyBTreeLeafFrameFactory() {
+        return buddyBtreeLeafFrameFactory;
+    }
 
-	public MultiComparator getBTreeCmp() {
-		return btreeCmp;
-	}
+    public MultiComparator getBTreeCmp() {
+        return btreeCmp;
+    }
 
-	public MultiComparator getBuddyBTreeCmp() {
-		return buddyBtreeCmp;
-	}
+    public MultiComparator getBuddyBTreeCmp() {
+        return buddyBtreeCmp;
+    }
 
-	public List<ILSMComponent> getOperationalComponents() {
-		return operationalComponents;
-	}
+    public List<ILSMComponent> getOperationalComponents() {
+        return operationalComponents;
+    }
 
-	public ILSMHarness getLSMHarness() {
-		return lsmHarness;
-	}
+    public ILSMHarness getLSMHarness() {
+        return lsmHarness;
+    }
 
-	@Override
-	public ICachedPage getPage() {
-		return null;
-	}
+    @Override
+    public ICachedPage getPage() {
+        return null;
+    }
 
-	@Override
-	public void setPage(ICachedPage page) {
-	}
+    @Override
+    public void setPage(ICachedPage page) {
+    }
 
-	@Override
-	public ISearchOperationCallback getSearchOperationCallback() {
-		return searchCallback;
-	}
+    @Override
+    public ISearchOperationCallback getSearchOperationCallback() {
+        return searchCallback;
+    }
 
-	@Override
-	public void setSearchOperationCallback(
-			ISearchOperationCallback searchCallback) {
-		this.searchCallback = searchCallback;
-	}
+    @Override
+    public void setSearchOperationCallback(ISearchOperationCallback searchCallback) {
+        this.searchCallback = searchCallback;
+    }
 
-	@Override
-	public MultiComparator getOriginalKeyComparator() {
-		return btreeCmp;
-	}
+    @Override
+    public MultiComparator getOriginalKeyComparator() {
+        return btreeCmp;
+    }
 
-	@Override
-	public void setOriginialKeyComparator(MultiComparator originalCmp) {
-		this.btreeCmp = originalCmp;
-	}
+    @Override
+    public void setOriginialKeyComparator(MultiComparator originalCmp) {
+        this.btreeCmp = originalCmp;
+    }
+
+    public void setOperationalComponents(List<ILSMComponent> operationalComponents) {
+        this.operationalComponents = operationalComponents;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java
index df5addb..ed39630 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyFileManager.java
@@ -39,8 +39,8 @@
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public class LSMBTreeWithBuddyFileManager extends AbstractLSMIndexFileManager {
-    private static final String BUDDY_BTREE_STRING = "buddy";
-    private static final String BTREE_STRING = "b";
+    public static final String BUDDY_BTREE_STRING = "buddy";
+    public static final String BTREE_STRING = "b";
 
     private final TreeIndexFactory<? extends ITreeIndex> btreeFactory;
     private final TreeIndexFactory<? extends ITreeIndex> buddyBtreeFactory;
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
index 8ab4d25..6e04dd6 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
@@ -29,13 +29,13 @@
 public class LSMBTreeWithBuddySearchCursor extends LSMBTreeWithBuddyAbstractCursor{
 	private int currentCursor;
     private PermutingTupleReference buddyBTreeTuple;
-    
+
     public LSMBTreeWithBuddySearchCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields) {
         super(opCtx);
         currentCursor = 0;
         this.buddyBTreeTuple = new PermutingTupleReference(buddyBTreeFields);
     }
-    
+
     @Override
     public void close() throws HyracksDataException {
         super.close();
@@ -61,7 +61,7 @@
             lsmHarness.endSearch(opCtx);
         }
     }
-    
+
     private void searchNextCursor() throws HyracksDataException {
         if (currentCursor < numberOfTrees) {
             try {
@@ -72,7 +72,7 @@
             }
         }
     }
-    
+
     @Override
     public boolean hasNext() throws HyracksDataException, IndexException {
         if (foundNext) {
@@ -110,7 +110,7 @@
         }
         return false;
     }
-    
+
     @Override
     public void next() throws HyracksDataException {
         foundNext = false;
@@ -121,4 +121,4 @@
         super.open(initialState, searchPred);
         searchNextCursor();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java
index 030f3d4..11828a2 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySortedCursor.java
@@ -30,6 +30,7 @@
 	// TODO: This class can be removed and instead use a search cursor that uses
 	// a logic similar
 	// to the one in LSMRTreeWithAntiMatterTuplesSearchCursor
+    // currently, this cursor is only used when doing merge operations.
 	private boolean[] depletedBtreeCursors;
 	private int foundIn = -1;
 	private PermutingTupleReference buddyBtreeTuple;
@@ -64,7 +65,7 @@
 					depletedBtreeCursors[i] = true;
 				}
 			}
-		} catch (IndexException e) {
+		} catch (Exception e) {
 			e.printStackTrace();
 			throw new HyracksDataException(
 					"error while reseting the btrees of the lsm btree with buddy btree",
@@ -166,4 +167,4 @@
 		}
 	}
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java
index fe84387..0f0edd2 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java
@@ -78,4 +78,4 @@
 		setPriorityQueueComparator();
 		initPriorityQueue();
 	}
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java
index d615c9d..b9f281b 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java
@@ -27,7 +27,7 @@
 		// Third parameter is never used locally, just give false.
 	    super(typeTraits, numKeyFields, false);
 	}
-	
+
 	@Override
     public int writeTuple(ITupleReference tuple, byte[] targetBuf, int targetOff) {
 		int tupleSize = bytesRequired(tuple);
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java
index 842ee62..eb03e7a 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java
@@ -27,7 +27,7 @@
 	private static final long serialVersionUID = 1L;
 	private final ITypeTraits[] typeTraits;
 	private final int numKeyFields;
-	
+
 	public LSMBTreeCopyTupleWriterFactory(ITypeTraits[] typeTraits, int numKeyFields) {
 		super(typeTraits);
 		this.typeTraits = typeTraits;
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java
index ebe38a7..6eb104b 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java
@@ -33,7 +33,7 @@
     // antimatter tuple.
     private boolean resetFieldCount = false;
     private final int numKeyFields;
-    
+
     public LSMBTreeTupleReference(ITypeTraits[] typeTraits, int numKeyFields) {
 		super(typeTraits);
 		this.numKeyFields = numKeyFields;
@@ -51,7 +51,7 @@
         // Don't change the fieldCount in reset calls.
         resetFieldCount = false;
     }
-    
+
     @Override
     public void resetByTupleOffset(ByteBuffer buf, int tupleStartOff) {
         this.buf = buf;
@@ -69,12 +69,12 @@
         }
         super.resetByTupleOffset(buf, tupleStartOff);
     }
-    
+
     @Override
     public void resetByTupleIndex(ITreeIndexFrame frame, int tupleIndex) {
         resetByTupleOffset(frame.getBuffer(), frame.getTupleOffset(tupleIndex));
     }
-    
+
 	@Override
 	protected int getNullFlagsBytes() {
 		// +1.0 is for matter/antimatter bit.
@@ -90,7 +90,7 @@
 		}
 		return false;
 	}
-	
+
     public int getTupleStart() {
     	return tupleStartOff;
     }
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java
index fe93b69..f3b372f 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java
@@ -28,7 +28,7 @@
 	private static final long serialVersionUID = 1L;
 	private final int numKeyFields;
 	private final boolean isDelete;
-	
+
 	public LSMBTreeTupleWriterFactory(ITypeTraits[] typeTraits, int numKeyFields, boolean isDelete) {
 		super(typeTraits);
 		this.numKeyFields = numKeyFields;
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeUtils.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeUtils.java
index e8e54ff..332ea78 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeUtils.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeUtils.java
@@ -28,11 +28,11 @@
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.common.api.IFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.api.IMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.freepage.LinkedListMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.am.lsm.btree.impls.ExternalBTree;
 import org.apache.hyracks.storage.am.lsm.btree.impls.ExternalBTreeWithBuddy;
@@ -74,7 +74,7 @@
         ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
         ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        IFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        IMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
 
         TreeIndexFactory<BTree> diskBTreeFactory = new BTreeFactory(diskBufferCache, diskFileMapProvider,
@@ -123,7 +123,7 @@
         ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
         ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        IFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        IMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
         // This is the tuple writer that can do both inserts and deletes
         LSMBTreeRefrencingTupleWriterFactory referencingTupleWriterFactory = new LSMBTreeRefrencingTupleWriterFactory(
@@ -168,7 +168,8 @@
             buddyBtreeCmpFactories[i] = cmpFactories[buddyBTreeFields[i]];
         }
 
-        TypeAwareTupleWriterFactory buddyBtreeTupleWriterFactory = new TypeAwareTupleWriterFactory(buddyBtreeTypeTraits);
+        TypeAwareTupleWriterFactory buddyBtreeTupleWriterFactory = new TypeAwareTupleWriterFactory(
+                buddyBtreeTypeTraits);
         ITreeIndexFrameFactory buddyBtreeInteriorFrameFactory = new BTreeNSMInteriorFrameFactory(
                 buddyBtreeTupleWriterFactory);
         ITreeIndexFrameFactory buddyBtreeLeafFrameFactory = new BTreeNSMLeafFrameFactory(buddyBtreeTupleWriterFactory);
@@ -181,7 +182,7 @@
         ITreeIndexFrameFactory copyTupleLeafFrameFactory = new BTreeNSMLeafFrameFactory(copyTupleWriterFactory);
         ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        IFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        IMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
 
         TreeIndexFactory<BTree> diskBTreeFactory = new BTreeFactory(diskBufferCache, diskFileMapProvider,
diff --git a/hyracks/hyracks-storage-am-lsm-common/pom.xml b/hyracks/hyracks-storage-am-lsm-common/pom.xml
index 453ff2c..b16405a 100644
--- a/hyracks/hyracks-storage-am-lsm-common/pom.xml
+++ b/hyracks/hyracks-storage-am-lsm-common/pom.xml
@@ -40,19 +40,7 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java
index 93d7b9d..b847876 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java
@@ -19,7 +19,6 @@
 package org.apache.hyracks.storage.am.lsm.common.api;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMOperationType;
 
 public interface ILSMComponent {
 
@@ -45,6 +44,6 @@
     public LSMComponentType getType();
 
     public ComponentState getState();
-    
+
     public ILSMComponentFilter getLSMComponentFilter();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java
index 1490d41..4c159b7 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java
@@ -38,7 +38,7 @@
     public boolean isMaxTupleSet();
 
     public ITupleReference getMinTuple();
-    
+
     public ITupleReference getMaxTuple();
 
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterManager.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterManager.java
index 1a64865..20598ca 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterManager.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterManager.java
@@ -22,7 +22,9 @@
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
 import org.apache.hyracks.storage.am.common.api.ITreeIndex;
+import org.apache.hyracks.storage.am.common.impls.AbstractTreeIndex.AbstractTreeIndexBulkLoader;
 
 public interface ILSMComponentFilterManager {
 
@@ -31,6 +33,7 @@
 
     public boolean readFilterInfo(ILSMComponentFilter filter, ITreeIndex treeIndex) throws HyracksDataException;
 
-    public void writeFilterInfo(ILSMComponentFilter filter, ITreeIndex treeIndex) throws HyracksDataException;
+    public void writeFilterInfo(ILSMComponentFilter filter, ITreeIndex treeIndex)
+            throws HyracksDataException;
 
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
index d0d7c26..4c4ed28 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.hyracks.storage.am.lsm.common.api;
 
 import java.util.List;
+
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.common.api.IIndexCursor;
@@ -28,8 +28,8 @@
 
 public interface ILSMHarness {
 
-    public void forceModify(ILSMIndexOperationContext ctx, ITupleReference tuple) throws HyracksDataException,
-            IndexException;
+    public void forceModify(ILSMIndexOperationContext ctx, ITupleReference tuple)
+            throws HyracksDataException, IndexException;
 
     public boolean modify(ILSMIndexOperationContext ctx, boolean tryOperation, ITupleReference tuple)
             throws HyracksDataException, IndexException;
@@ -45,22 +45,21 @@
     public void scheduleFullMerge(ILSMIndexOperationContext ctx, ILSMIOOperationCallback callback)
             throws HyracksDataException, IndexException;
 
-    public void merge(ILSMIndexOperationContext ctx, ILSMIOOperation operation) throws HyracksDataException,
-            IndexException;
+    public void merge(ILSMIndexOperationContext ctx, ILSMIOOperation operation)
+            throws HyracksDataException, IndexException;
 
     public void scheduleFlush(ILSMIndexOperationContext ctx, ILSMIOOperationCallback callback)
             throws HyracksDataException;
 
-    public void flush(ILSMIndexOperationContext ctx, ILSMIOOperation operation) throws HyracksDataException,
-            IndexException;
+    public void flush(ILSMIndexOperationContext ctx, ILSMIOOperation operation)
+            throws HyracksDataException, IndexException;
 
     public void addBulkLoadedComponent(ILSMComponent index) throws HyracksDataException, IndexException;
 
     public ILSMOperationTracker getOperationTracker();
-    
-    public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload)
-            throws HyracksDataException;
-    
-    public void endReplication(ILSMIndexOperationContext ctx) throws HyracksDataException;
 
+    public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload,
+            LSMOperationType opType) throws HyracksDataException;
+
+    public void endReplication(ILSMIndexOperationContext ctx) throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
index 82f17a8..6315124 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
@@ -21,7 +21,6 @@
 import java.util.List;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMOperationType;
 
 public interface ILSMIOOperationCallback {
 
@@ -34,7 +33,7 @@
     /**
      * This method is called on an IO operation sometime after the operation was completed.
      * (i.e. IO operations could be flush or merge operations.)
-     * 
+     *
      * @param oldComponents
      * @param newComponent
      * @throws HyracksDataException
@@ -46,7 +45,7 @@
      * This method is called on an IO operation when the operation needs any cleanup works
      * regardless that the IO operation was executed or not. Once the IO operation is executed,
      * this method should be called after ILSMIOOperationCallback.afterOperation() was called.
-     * 
+     *
      * @param newComponent
      * @throws HyracksDataException
      */
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java
index 6c6dc9e..439a020 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.hyracks.storage.am.lsm.common.api;
 
 import java.util.List;
@@ -43,7 +42,7 @@
 
     /**
      * Deletes the tuple from the memory component only.
-     * 
+     *
      * @throws HyracksDataException
      * @throws IndexException
      */
@@ -54,7 +53,7 @@
      * If the insert would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (insert was successful).
-     * 
+     *
      * @param tuple
      *            Tuple to be inserted.
      * @throws HyracksDataException
@@ -70,7 +69,7 @@
      * If the delete would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (delete was successful).
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
@@ -85,7 +84,7 @@
      * If the update would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (update was successful).
-     * 
+     *
      * @param tuple
      *            Tuple whose match in the index is to be update with the given
      *            tuples contents.
@@ -103,7 +102,7 @@
      * If the operation would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (insert/update was successful).
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
@@ -118,6 +117,7 @@
     public void forceInsert(ITupleReference tuple) throws HyracksDataException, IndexException;
 
     public void forceDelete(ITupleReference tuple) throws HyracksDataException, IndexException;
-    
-    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload) throws HyracksDataException;
+
+    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload, LSMOperationType opType)
+            throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java
index 9b15820..4df1180 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java
@@ -26,7 +26,7 @@
 
     /**
      * Force a flush of the in-memory component.
-     * 
+     *
      * @throws HyracksDataException
      * @throws TreeIndexException
      */
@@ -34,7 +34,7 @@
 
     /**
      * Merge all on-disk components.
-     * 
+     *
      * @throws HyracksDataException
      * @throws TreeIndexException
      */
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
index 298e53f..e97913f 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
@@ -47,7 +47,7 @@
     public String getBaseDir();
 
     // Deletes invalid files, and returns list of valid files from baseDir.
-    // The returned valid files are correctly sorted (based on the recency of data). 
+    // The returned valid files are correctly sorted (based on the recency of data).
     public List<LSMComponentFileReferences> cleanupAndGetValidFiles() throws HyracksDataException, IndexException;
 
     public Comparator<String> getFileNameComparator();
@@ -60,7 +60,7 @@
 
     /**
      * Rename files of a transaction removing the transaction prefix and return the component file reference in order to be committed
-     * 
+     *
      * @return the renamed component file references
      * @throws HyracksDataException
      */
@@ -68,7 +68,7 @@
 
     /**
      * Recover transaction files without returning them
-     * 
+     *
      * @throws HyracksDataException
      */
     public void recoverTransaction() throws HyracksDataException;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java
index 3f08406..e69c714 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.hyracks.storage.am.lsm.common.api;
 
 import java.util.List;
@@ -76,7 +75,7 @@
     public void addInactiveDiskComponent(ILSMComponent diskComponent);
 
     /**
-     * Persistent the LSM component
+     * Persist the LSM component
      *
      * @param lsmComponent
      *            , the component to be persistent
@@ -85,8 +84,15 @@
     public void markAsValid(ILSMComponent lsmComponent) throws HyracksDataException;
 
     public boolean isCurrentMutableComponentEmpty() throws HyracksDataException;
-    
-    public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload,
-            ReplicationOperation operation) throws HyracksDataException;
 
+    public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload,
+            ReplicationOperation operation, LSMOperationType opType) throws HyracksDataException;
+
+    /**
+     * Allocates the memory components of an LSM index in the buffer cache.
+     * @throws HyracksDataException
+     */
+    public void allocateMemoryComponents() throws HyracksDataException;
+
+    public boolean isMemoryComponentsAllocated();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexOperationContext.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexOperationContext.java
index 08bcfee..99f981d 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexOperationContext.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexOperationContext.java
@@ -39,6 +39,6 @@
     public void setSearchPredicate(ISearchPredicate searchPredicate);
 
     public ISearchPredicate getSearchPredicate();
-    
+
     public List<ILSMComponent> getComponentsToBeReplicated();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexReplicationJob.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexReplicationJob.java
index b32093e..c64439e 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexReplicationJob.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexReplicationJob.java
@@ -24,4 +24,11 @@
 public interface ILSMIndexReplicationJob extends IReplicationJob {
 
     public void endReplication() throws HyracksDataException;
+
+    public ILSMIndexOperationContext getLSMIndexOperationContext();
+
+    public ILSMIndex getLSMIndex();
+
+    public LSMOperationType getLSMOpType();
+
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java
index fcb4bb1..d2d86e6 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java
@@ -27,7 +27,7 @@
 
 public interface ILSMMergePolicyFactory extends Serializable {
     // Having two methods to create the merge policy with two different signatures is hacky, but we do it now
-    // because we want to have an access to the IIndexLifecycleManager inside some of the merge policies. However, 
+    // because we want to have an access to the IIndexLifecycleManager inside some of the merge policies. However,
     // in order to get the IIndexLifecycleManager instance, we need to cast to IAsterixAppRuntimeContext which exist
     // in asterix and cannot be seen in hyracks. Thus we pass IHyracksTaskContext and let the merge policy do the casting.
     public ILSMMergePolicy createMergePolicy(Map<String, String> configuration, IHyracksTaskContext ctx);
@@ -37,4 +37,4 @@
     public String getName();
 
     public Set<String> getPropertiesNames();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java
index 96d4fbe..e523f52 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java
@@ -22,13 +22,12 @@
 import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMOperationType;
 
 /**
  * This interface exposes methods for tracking and setting the status of operations for the purpose
  * of coordinating flushes/merges in {@link ILSMIndex}.
  * Note that 'operation' below refers to {@link IIndexAccessor} methods.
- * 
+ *
  * @author zheilbron
  */
 public interface ILSMOperationTracker {
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java
index 4d6c403..95e95e4 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java
@@ -34,42 +34,42 @@
      */
     public IIndexBulkLoader createTransactionBulkLoader(float fillLevel, boolean verifyInput, long numElementsHint,
             boolean checkIfEmptyIndex) throws TreeIndexException;
-    
+
     /**
      * This function is used to commit the previous transaction if it was resulted in creating any components
      */
     public void commitTransaction() throws TreeIndexException, HyracksDataException, IndexException;
-    
+
     /**
      * This function is used to abort the last transaction
      */
     public void abortTransaction() throws TreeIndexException;
-    
+
     /**
      * This function is used to recover a transaction if the system crashed after the decision to commit
      */
     public void recoverTransaction() throws TreeIndexException;
-    
+
     /**
      * This function is used to add the committed disk component to the appropriate list and reflect the changes
      */
     public void commitTransactionDiskComponent(ILSMComponent newComponent) throws IndexException, HyracksDataException;
-    
+
     /**
      * This function is used to create a version specific accessor to search a specific version
      */
     public ILSMIndexAccessorInternal createAccessor(ISearchOperationCallback searchCallback, int targetIndexVersion) throws HyracksDataException;
-    
+
     /**
      * This function is used to get the first components list
      */
     public List<ILSMComponent> getFirstComponentList();
-    
+
     /**
      * This function is used to get teh second components list
      */
     public List<ILSMComponent> getSecondComponentList();
-    
+
     /**
      * This function is used to get the current version id of the index
      */
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IVirtualBufferCacheProvider.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IVirtualBufferCacheProvider.java
index b5fc198..2e2bb2c 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IVirtualBufferCacheProvider.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/IVirtualBufferCacheProvider.java
@@ -22,7 +22,8 @@
 import java.util.List;
 
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 
 public interface IVirtualBufferCacheProvider extends Serializable {
-    public List<IVirtualBufferCache> getVirtualBufferCaches(IHyracksTaskContext ctx);
+    public List<IVirtualBufferCache> getVirtualBufferCaches(IHyracksTaskContext ctx, IFileSplitProvider fileSplitProvider);
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMOperationType.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
similarity index 94%
rename from hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMOperationType.java
rename to hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
index c439e0c..b083770 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMOperationType.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.lsm.common.impls;
+package org.apache.hyracks.storage.am.lsm.common.api;
 
 public enum LSMOperationType {
     SEARCH,
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java
index 50f7be0..25f2382 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexInsertUpdateDeleteOperatorNodePushable.java
@@ -120,6 +120,6 @@
         for (int i = startTupleIndex; i < endTupleIndex; i++) {
             FrameUtils.appendToWriter(writer, appender, accessor, i);
         }
-        appender.flush(writer, true);
+        appender.write(writer, true);
     }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexCompactOperatorDescriptor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexCompactOperatorDescriptor.java
index 01da96b..6835d33 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexCompactOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexCompactOperatorDescriptor.java
@@ -55,4 +55,4 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         return new LSMIndexCompactOperatorNodePushable(this, ctx, partition);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexInsertUpdateDeleteOperatorDescriptor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexInsertUpdateDeleteOperatorDescriptor.java
index b172864..2a088d0 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexInsertUpdateDeleteOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMTreeIndexInsertUpdateDeleteOperatorDescriptor.java
@@ -22,17 +22,19 @@
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.dataflow.IOperatorNodePushable;
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.INullWriterFactory;
 import org.apache.hyracks.api.dataflow.value.IRecordDescriptorProvider;
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.IOperatorDescriptorRegistry;
 import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 import org.apache.hyracks.storage.am.common.api.IIndexLifecycleManagerProvider;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFactory;
+import org.apache.hyracks.storage.am.common.api.ISearchOperationCallbackFactory;
 import org.apache.hyracks.storage.am.common.api.ITupleFilterFactory;
 import org.apache.hyracks.storage.am.common.dataflow.AbstractTreeIndexOperatorDescriptor;
 import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
-import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.common.IStorageManagerInterface;
 import org.apache.hyracks.storage.common.file.NoOpLocalResourceFactoryProvider;
@@ -49,19 +51,21 @@
             IFileSplitProvider fileSplitProvider, ITypeTraits[] typeTraits,
             IBinaryComparatorFactory[] comparatorFactories, int[] bloomFilterKeyFields, int[] fieldPermutation,
             IndexOperation op, IIndexDataflowHelperFactory dataflowHelperFactory,
-            ITupleFilterFactory tupleFilterFactory, IModificationOperationCallbackFactory modificationOpCallbackProvider) {
+            ITupleFilterFactory tupleFilterFactory, INullWriterFactory nullWriterFactory,
+            IModificationOperationCallbackFactory modificationOpCallbackProvider,
+            ISearchOperationCallbackFactory searchOpCallbackProvider) {
         super(spec, 1, 1, recDesc, storageManager, lifecycleManagerProvider, fileSplitProvider, typeTraits,
-                comparatorFactories, bloomFilterKeyFields, dataflowHelperFactory, tupleFilterFactory, false,
-                false, null,
-                NoOpLocalResourceFactoryProvider.INSTANCE, NoOpOperationCallbackFactory.INSTANCE, modificationOpCallbackProvider);
+                comparatorFactories, bloomFilterKeyFields, dataflowHelperFactory, tupleFilterFactory, false, false,
+                nullWriterFactory, NoOpLocalResourceFactoryProvider.INSTANCE, searchOpCallbackProvider,
+                modificationOpCallbackProvider);
         this.fieldPermutation = fieldPermutation;
         this.op = op;
     }
 
     @Override
     public IOperatorNodePushable createPushRuntime(IHyracksTaskContext ctx,
-            IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
+            IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException {
         return new LSMIndexInsertUpdateDeleteOperatorNodePushable(this, ctx, partition, fieldPermutation,
                 recordDescProvider, op);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualMetaDataPageManager.java
similarity index 69%
rename from hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
rename to hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualMetaDataPageManager.java
index d62bc84..cd28f0f 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualMetaDataPageManager.java
@@ -22,15 +22,17 @@
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.common.api.IVirtualFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IVirtualMetaDataPageManager;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
+import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 
-public class VirtualFreePageManager implements IVirtualFreePageManager {
+public class VirtualMetaDataPageManager implements IVirtualMetaDataPageManager {
     protected final int capacity;
     protected final AtomicInteger currentPageId = new AtomicInteger();
 
-    public VirtualFreePageManager(int capacity) {
+    public VirtualMetaDataPageManager(int capacity) {
         // We start the currentPageId from 1, because the BTree uses
         // the first page as metadata page, and the second page as root page.
         // (when returning free pages we first increment, then get)
@@ -94,8 +96,8 @@
 
     @Override
     public int getFirstMetadataPage() {
-        // Method doesn't make sense for this free page manager.
-        return -1;
+        //MD page in a virtual context is always 0, because it is by nature an in-place modification tree
+        return 0;
     }
 
     @Override
@@ -117,4 +119,49 @@
         }
 
     }
+
+    @Override
+    public void init(ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException {
+        // Method doesn't make sense for this free page manager.
+    }
+
+    @Override
+    public int getFilterPageId() throws HyracksDataException {
+        // Method doesn't make sense for this free page manager.
+        return 0;
+    }
+
+    @Override
+    public void setFilterPageId(int filterPageId) throws HyracksDataException {
+        // Method doesn't make sense for this free page manager.
+    }
+
+    @Override
+    public long getLSN() throws HyracksDataException {
+        // Method doesn't make sense for this free page manager.
+        return -1;
+    }
+
+    @Override
+    public void setLSN(long lsn) throws HyracksDataException {
+        // Method doesn't make sense for this free page manager.
+    }
+
+    public void setFilterPage(ICachedPage page) {
+        // Method doesn't make sense for this free page manager.
+    }
+
+    public ICachedPage getFilterPage() {
+        return null;
+    }
+
+    @Override
+    public boolean appendOnlyMode() {
+        return false;
+    }
+
+    @Override
+    public long getLSNOffset() throws HyracksDataException {
+        return IMetaDataPageManager.INVALID_LSN_OFFSET;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
index a832b4a..54ec029 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
@@ -20,6 +20,7 @@
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public abstract class AbstractDiskLSMComponent extends AbstractLSMComponent {
 
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java
index 3a7c632..441dda1 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java
@@ -31,6 +31,7 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.replication.IReplicationJob.ReplicationExecutionType;
 import org.apache.hyracks.api.replication.IReplicationJob.ReplicationOperation;
+import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter;
 import org.apache.hyracks.storage.am.common.api.ITreeIndex;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
@@ -45,6 +46,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
@@ -75,6 +77,7 @@
 
     protected boolean isActivated;
     protected final AtomicBoolean[] flushRequests;
+    protected boolean memoryComponentsAllocated = false;
 
     public AbstractLSMIndex(List<IVirtualBufferCache> virtualBufferCaches, IBufferCache diskBufferCache,
             ILSMIndexFileManager fileManager, IFileMapProvider diskFileMapProvider,
@@ -132,67 +135,12 @@
         filterFields = null;
     }
 
-    protected void forceFlushDirtyPages(ITreeIndex treeIndex) throws HyracksDataException {
-        int fileId = treeIndex.getFileId();
-        IBufferCache bufferCache = treeIndex.getBufferCache();
-        // Flush all dirty pages of the tree.
-        // By default, metadata and data are flushed asynchronously in the buffercache.
-        // This means that the flush issues writes to the OS, but the data may still lie in filesystem buffers.
-        ITreeIndexMetaDataFrame metadataFrame = treeIndex.getFreePageManager().getMetaDataFrameFactory().createFrame();
-        int startPage = 0;
-        int maxPage = treeIndex.getFreePageManager().getMaxPage(metadataFrame);
-        forceFlushDirtyPages(bufferCache, fileId, startPage, maxPage);
-    }
-
-    protected void forceFlushDirtyPages(IBufferCache bufferCache, int fileId, int startPageId, int endPageId)
-            throws HyracksDataException {
-        for (int i = startPageId; i <= endPageId; i++) {
-            ICachedPage page = bufferCache.tryPin(BufferedFileHandle.getDiskPageId(fileId, i));
-            // If tryPin returns null, it means the page is not cached, and therefore cannot be dirty.
-            if (page == null) {
-                continue;
-            }
-            try {
-                bufferCache.flushDirtyPage(page);
-            } finally {
-                bufferCache.unpin(page);
-            }
-        }
-        // Forces all pages of given file to disk. This guarantees the data makes it to disk.
-        // If the index is not durable, then the flush is not necessary.
-        if (durable) {
-            bufferCache.force(fileId, true);
-        }
-    }
-
     protected void markAsValidInternal(ITreeIndex treeIndex) throws HyracksDataException {
         int fileId = treeIndex.getFileId();
         IBufferCache bufferCache = treeIndex.getBufferCache();
-        ITreeIndexMetaDataFrame metadataFrame = treeIndex.getFreePageManager().getMetaDataFrameFactory().createFrame();
-        // Mark the component as a valid component by flushing the metadata page to disk
-        int metadataPageId = treeIndex.getFreePageManager().getFirstMetadataPage();
-        ICachedPage metadataPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, metadataPageId), false);
-        metadataPage.acquireWriteLatch();
-        try {
-            metadataFrame.setPage(metadataPage);
-            metadataFrame.setValid(true);
-        } finally {
-            metadataPage.releaseWriteLatch(true);
-            bufferCache.unpin(metadataPage);
-        }
-
+        treeIndex.getMetaManager().close();
         // WARNING: flushing the metadata page should be done after releasing the write latch; otherwise, the page
         // won't be flushed to disk because it won't be dirty until the write latch has been released.
-        metadataPage = bufferCache.tryPin(BufferedFileHandle.getDiskPageId(fileId, metadataPageId));
-        if (metadataPage != null) {
-            try {
-                // Flush the single modified page to disk.
-                bufferCache.flushDirtyPage(metadataPage);
-            } finally {
-                bufferCache.unpin(metadataPage);
-            }
-        }
-
         // Force modified metadata page to disk.
         // If the index is not durable, then the flush is not necessary.
         if (durable) {
@@ -200,6 +148,12 @@
         }
     }
 
+    protected void markAsValidInternal(IBufferCache bufferCache, BloomFilter filter) throws HyracksDataException {
+        if(durable){
+            bufferCache.force(filter.getFileId(),true);
+        }
+    }
+
     @Override
     public void addComponent(ILSMComponent c) throws HyracksDataException {
         diskComponents.add(0, c);
@@ -303,12 +257,12 @@
     public void addInactiveDiskComponent(ILSMComponent diskComponent) {
         inactiveDiskComponents.add(diskComponent);
     }
-    
+
     public abstract Set<String> getLSMComponentPhysicalFiles(ILSMComponent newComponent);
 
     @Override
     public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload,
-            ReplicationOperation operation) throws HyracksDataException {
+            ReplicationOperation operation, LSMOperationType opType) throws HyracksDataException {
         //get set of files to be replicated for this component
         Set<String> componentFiles = new HashSet<String>();
 
@@ -325,13 +279,18 @@
         }
 
         //create replication job and submit it
-        LSMIndexReplicationJob job = new LSMIndexReplicationJob(this, ctx, componentFiles, operation,
-                executionType);
+        LSMIndexReplicationJob job = new LSMIndexReplicationJob(this, ctx, componentFiles, operation, executionType,
+                opType);
         try {
-            diskBufferCache.getIIOReplicationManager().submitJob(job);
+            diskBufferCache.getIOReplicationManager().submitJob(job);
         } catch (IOException e) {
             throw new HyracksDataException(e);
         }
+    }
 
+    public abstract void allocateMemoryComponents() throws HyracksDataException;
+
+    public boolean isMemoryComponentsAllocated() {
+        return memoryComponentsAllocated;
     }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java
index e0a48d7..c5fccdc 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndexFileManager.java
@@ -46,7 +46,7 @@
 
 public abstract class AbstractLSMIndexFileManager implements ILSMIndexFileManager {
 
-    protected static final String SPLIT_STRING = "_";
+    public static final String SPLIT_STRING = "_";
     protected static final String BLOOM_FILTER_STRING = "f";
     protected static final String TRANSACTION_PREFIX = ".T";
 
@@ -82,8 +82,11 @@
         IBufferCache bufferCache = treeIndex.getBufferCache();
         treeIndex.activate();
         try {
-            int metadataPage = treeIndex.getFreePageManager().getFirstMetadataPage();
-            ITreeIndexMetaDataFrame metadataFrame = treeIndex.getFreePageManager().getMetaDataFrameFactory()
+            int metadataPage = treeIndex.getMetaManager().getFirstMetadataPage();
+            if(metadataPage <0 ){
+                return false;
+            }
+            ITreeIndexMetaDataFrame metadataFrame = treeIndex.getMetaManager().getMetaDataFrameFactory()
                     .createFrame();
             ICachedPage page = bufferCache.pin(BufferedFileHandle.getDiskPageId(treeIndex.getFileId(), metadataPage),
                     false);
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
index 29fc1e3..4b8fc9b 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
@@ -23,12 +23,13 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public abstract class AbstractMemoryLSMComponent extends AbstractLSMComponent {
 
-    private int writerCount;
     private final IVirtualBufferCache vbc;
     private final AtomicBoolean isModified;
+    private int writerCount;
     private boolean requestedToBeActive;
 
     public AbstractMemoryLSMComponent(IVirtualBufferCache vbc, boolean isActive, ILSMComponentFilter filter) {
@@ -89,7 +90,7 @@
             case REPLICATE:
             case SEARCH:
                 if (state == ComponentState.READABLE_WRITABLE || state == ComponentState.READABLE_UNWRITABLE
-                || state == ComponentState.READABLE_UNWRITABLE_FLUSHING) {
+                        || state == ComponentState.READABLE_UNWRITABLE_FLUSHING) {
                     readerCount++;
                 } else {
                     return false;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java
index 668618f..2899849 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java
@@ -44,7 +44,7 @@
     private final Map<String, PriorityQueue<ILSMIOOperation>> waitingFlushOperations = new HashMap<String, PriorityQueue<ILSMIOOperation>>();
 
     public void init(ThreadFactory threadFactory) {
-        // Creating an executor with the same configuration of Executors.newCachedThreadPool. 
+        // Creating an executor with the same configuration of Executors.newCachedThreadPool.
         executor = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,
                 new SynchronousQueue<Runnable>(), threadFactory) {
 
@@ -101,4 +101,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BTreeFactory.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BTreeFactory.java
index a6838f5..c6712c1 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BTreeFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BTreeFactory.java
@@ -20,9 +20,10 @@
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.common.api.IFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.api.IMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -31,7 +32,7 @@
 public class BTreeFactory extends TreeIndexFactory<BTree> {
 
     public BTreeFactory(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
-            IFreePageManagerFactory freePageManagerFactory, ITreeIndexFrameFactory interiorFrameFactory,
+            IMetadataManagerFactory freePageManagerFactory, ITreeIndexFrameFactory interiorFrameFactory,
             ITreeIndexFrameFactory leafFrameFactory, IBinaryComparatorFactory[] cmpFactories, int fieldCount) {
         super(bufferCache, fileMapProvider, freePageManagerFactory, interiorFrameFactory, leafFrameFactory,
                 cmpFactories, fieldCount);
@@ -39,8 +40,12 @@
 
     @Override
     public BTree createIndexInstance(FileReference file) throws IndexException {
-        return new BTree(bufferCache, fileMapProvider, freePageManagerFactory.createFreePageManager(),
-                interiorFrameFactory, leafFrameFactory, cmpFactories, fieldCount, file);
+        try {
+            return new BTree(bufferCache, fileMapProvider, freePageManagerFactory.createFreePageManager(),
+                    interiorFrameFactory, leafFrameFactory, cmpFactories, fieldCount, file);
+        } catch (HyracksDataException e) {
+            throw new IndexException(e);
+        }
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
index 6e169a84..a9a2129 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
@@ -23,6 +23,7 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public class BlockingIOOperationCallbackWrapper implements ILSMIOOperationCallback {
 
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BloomFilterAwareBTreePointSearchCursor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BloomFilterAwareBTreePointSearchCursor.java
index 9c484cd..f84aeb5 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BloomFilterAwareBTreePointSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BloomFilterAwareBTreePointSearchCursor.java
@@ -25,7 +25,7 @@
 import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 
 public class BloomFilterAwareBTreePointSearchCursor extends BTreeRangeSearchCursor {
-    private final BloomFilter bloomFilter;
+    private BloomFilter bloomFilter;
     private long[] hashes = new long[2];
 
     public BloomFilterAwareBTreePointSearchCursor(IBTreeLeafFrame frame, boolean exclusiveLatchNodes,
@@ -41,4 +41,13 @@
         }
         return false;
     }
-}
\ No newline at end of file
+
+    @Override
+    public boolean isBloomFilterAware() {
+        return true;
+    }
+
+    public void resetBloomFilter(BloomFilter bloomFilter) {
+        this.bloomFilter = bloomFilter;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java
index 5721c07..8e39223 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ExternalIndexHarness.java
@@ -37,11 +37,13 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.ITwoPCIndex;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public class ExternalIndexHarness extends LSMHarness {
     private static final Logger LOGGER = Logger.getLogger(ExternalIndexHarness.class.getName());
 
-    public ExternalIndexHarness(ILSMIndexInternal lsmIndex, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, boolean replicationEnabled) {
+    public ExternalIndexHarness(ILSMIndexInternal lsmIndex, ILSMMergePolicy mergePolicy,
+            ILSMOperationTracker opTracker, boolean replicationEnabled) {
         super(lsmIndex, mergePolicy, opTracker, replicationEnabled);
     }
 
@@ -119,7 +121,8 @@
                             if (replicationEnabled) {
                                 componentsToBeReplicated.clear();
                                 componentsToBeReplicated.add(c);
-                                lsmIndex.scheduleReplication(null, componentsToBeReplicated, false, ReplicationOperation.DELETE);
+                                lsmIndex.scheduleReplication(null, componentsToBeReplicated, false,
+                                        ReplicationOperation.DELETE, opType);
                             }
                             ((AbstractDiskLSMComponent) c).destroy();
                             break;
@@ -137,7 +140,7 @@
                             if (replicationEnabled) {
                                 componentsToBeReplicated.clear();
                                 componentsToBeReplicated.add(newComponent);
-                                triggerReplication(componentsToBeReplicated, false);
+                                triggerReplication(componentsToBeReplicated, false, opType);
                             }
                             mergePolicy.diskComponentAdded(lsmIndex, fullMergeIsRequested.get());
                         }
@@ -241,7 +244,7 @@
             if (replicationEnabled) {
                 componentsToBeReplicated.clear();
                 componentsToBeReplicated.add(c);
-                triggerReplication(componentsToBeReplicated, true);
+                triggerReplication(componentsToBeReplicated, true, LSMOperationType.MERGE);
             }
             // Enter the component
             enterComponent(c);
@@ -334,7 +337,7 @@
             if (replicationEnabled) {
                 componentsToBeReplicated.clear();
                 componentsToBeReplicated.add(diskComponent);
-                lsmIndex.scheduleReplication(null, componentsToBeReplicated, false, ReplicationOperation.DELETE);
+                lsmIndex.scheduleReplication(null, componentsToBeReplicated, false, ReplicationOperation.DELETE, null);
             }
             ((AbstractDiskLSMComponent) diskComponent).destroy();
         }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/IndexFactory.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/IndexFactory.java
index 9afcee7..8897a2f 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/IndexFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/IndexFactory.java
@@ -20,7 +20,7 @@
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
 import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.storage.am.common.api.IFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.api.IMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.api.IIndex;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -30,10 +30,10 @@
 
     protected final IBufferCache bufferCache;
     protected final IFileMapProvider fileMapProvider;
-    protected final IFreePageManagerFactory freePageManagerFactory;
+    protected final IMetadataManagerFactory freePageManagerFactory;
 
     public IndexFactory(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
-            IFreePageManagerFactory freePageManagerFactory) {
+            IMetadataManagerFactory freePageManagerFactory) {
         this.bufferCache = bufferCache;
         this.fileMapProvider = fileMapProvider;
         this.freePageManagerFactory = freePageManagerFactory;
@@ -44,4 +44,4 @@
     public IBufferCache getBufferCache() {
         return bufferCache;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java
index 95fddfc..8e98087 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java
@@ -28,7 +28,7 @@
     // This FileReference for the delete index (if any). For example, this will be the the FileReference of the buddy BTree in one component of the LSM-RTree.
     private final FileReference deleteIndexFileReference;
 
-    // This FileReference for the bloom filter (if any). 
+    // This FileReference for the bloom filter (if any).
     private final FileReference bloomFilterFileReference;
 
     public LSMComponentFileReferences(FileReference insertIndexFileReference, FileReference deleteIndexFileReference,
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFilterManager.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFilterManager.java
index a9961c9..d0d7e69 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFilterManager.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFilterManager.java
@@ -23,8 +23,10 @@
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.common.api.ITreeIndex;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
+import org.apache.hyracks.storage.am.common.api.ITreeIndex;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFrame;
@@ -54,29 +56,39 @@
     }
 
     @Override
-    public void writeFilterInfo(ILSMComponentFilter filter, ITreeIndex treeIndex) throws HyracksDataException {
+    public void writeFilterInfo(ILSMComponentFilter filter, ITreeIndex treeIndex ) throws HyracksDataException {
+        IMetaDataPageManager treeMetaManager = treeIndex.getMetaManager();
+        ICachedPage filterPage = null;
+        int componentFilterPageId = treeMetaManager.getFilterPageId();
+        boolean appendOnly = false;
         int fileId = treeIndex.getFileId();
-        ITreeIndexMetaDataFrame metadataFrame = treeIndex.getFreePageManager().getMetaDataFrameFactory().createFrame();
-
-        // Read the filter page from the first metadata page of the tree.
-        // If it is has not been created yet, then create a new one.
-        int metadataPageId = treeIndex.getFreePageManager().getFirstMetadataPage();
-        ICachedPage metadataPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, metadataPageId), false);
-        metadataPage.acquireWriteLatch();
-        int componentFilterPageId;
-        try {
-            metadataFrame.setPage(metadataPage);
-            componentFilterPageId = metadataFrame.getLSMComponentFilterPageId();
-            if (componentFilterPageId == -1) {
-                componentFilterPageId = treeIndex.getFreePageManager().getFreePage(metadataFrame);
+        if(componentFilterPageId == LinkedMetaDataPageManager.NO_FILTER_IN_PLACE){//in-place mode, no filter page yet
+            ITreeIndexMetaDataFrame metadataFrame = treeIndex.getMetaManager().getMetaDataFrameFactory().createFrame();
+            int metaPageId = treeMetaManager.getFirstMetadataPage();
+            ICachedPage metadataPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, metaPageId), false);
+            metadataPage.acquireWriteLatch();
+            try{
+                metadataFrame.setPage(metadataPage);
+                componentFilterPageId = treeIndex.getMetaManager().getFreePage(metadataFrame);
                 metadataFrame.setLSMComponentFilterPageId(componentFilterPageId);
             }
-        } finally {
-            metadataPage.releaseWriteLatch(true);
-            bufferCache.unpin(metadataPage);
+            finally{
+                metadataPage.releaseWriteLatch(true);
+                bufferCache.unpin(metadataPage);
+            }
+        }
+        else if (componentFilterPageId <= LinkedMetaDataPageManager.NO_FILTER_APPEND_ONLY){
+            appendOnly = true;
+            filterPage = treeMetaManager.getFilterPage();
+            if(filterPage == null){
+                treeMetaManager.setFilterPage(bufferCache.confiscatePage(IBufferCache.INVALID_DPID));
+                filterPage = treeMetaManager.getFilterPage();
+            }
+        }
+        else{// in place, not a new filter page
+            filterPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, componentFilterPageId), true);
         }
 
-        ICachedPage filterPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, componentFilterPageId), true);
         filterPage.acquireWriteLatch();
         try {
             ILSMComponentFilterFrame filterFrame = filterFrameFactory.createFrame();
@@ -90,32 +102,28 @@
             }
 
         } finally {
-            filterPage.releaseWriteLatch(true);
-            bufferCache.unpin(filterPage);
+            if(!appendOnly){
+                bufferCache.unpin(filterPage);
+                filterPage.releaseWriteLatch(true);
+            }
+            else{
+                filterPage.releaseWriteLatch(false);
+            }
         }
     }
 
     @Override
     public boolean readFilterInfo(ILSMComponentFilter filter, ITreeIndex treeIndex) throws HyracksDataException {
         int fileId = treeIndex.getFileId();
-        ITreeIndexMetaDataFrame metadataFrame = treeIndex.getFreePageManager().getMetaDataFrameFactory().createFrame();
 
-        int metadataPageId = treeIndex.getFreePageManager().getFirstMetadataPage();
-        ICachedPage metadataPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, metadataPageId), false);
-        metadataPage.acquireReadLatch();
-        int componentFilterPageId;
-        try {
-            metadataFrame.setPage(metadataPage);
-            componentFilterPageId = metadataFrame.getLSMComponentFilterPageId();
-            if (componentFilterPageId == -1) {
-                return false;
-            }
-        } finally {
-            metadataPage.releaseReadLatch();
-            bufferCache.unpin(metadataPage);
-        }
+        IMetaDataPageManager treeMetaManager = treeIndex.getMetaManager();
+
+        int componentFilterPageId = treeMetaManager.getFilterPageId();
+        if (componentFilterPageId < 0)
+            return false;
 
         ICachedPage filterPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, componentFilterPageId), true);
+
         filterPage.acquireReadLatch();
         try {
             ILSMComponentFilterFrame filterFrame = filterFrameFactory.createFrame();
@@ -135,4 +143,5 @@
         }
         return true;
     }
+
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index f78e6d3..21b0d8a 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -45,6 +45,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public class LSMHarness implements ILSMHarness {
     private static final Logger LOGGER = Logger.getLogger(LSMHarness.class.getName());
@@ -55,8 +56,9 @@
     protected final AtomicBoolean fullMergeIsRequested;
     protected final boolean replicationEnabled;
     protected List<ILSMComponent> componentsToBeReplicated;
-    
-    public LSMHarness(ILSMIndexInternal lsmIndex, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, boolean replicationEnabled) {
+
+    public LSMHarness(ILSMIndexInternal lsmIndex, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker,
+            boolean replicationEnabled) {
         this.lsmIndex = lsmIndex;
         this.opTracker = opTracker;
         this.mergePolicy = mergePolicy;
@@ -79,7 +81,8 @@
                         if (!((AbstractMemoryLSMComponent) flushingComponent).isModified()) {
                             //The mutable component has not been modified by any writer. There is nothing to flush.
                             //since the component is empty, set its state back to READABLE_WRITABLE
-                            if (((AbstractLSMIndex) lsmIndex).getCurrentMutableComponentState() == ComponentState.READABLE_UNWRITABLE) {
+                            if (((AbstractLSMIndex) lsmIndex)
+                                    .getCurrentMutableComponentState() == ComponentState.READABLE_UNWRITABLE) {
                                 ((AbstractLSMIndex) lsmIndex)
                                         .setCurrentMutableComponentState(ComponentState.READABLE_WRITABLE);
                             }
@@ -194,8 +197,8 @@
                         if (c.getType() == LSMComponentType.MEMORY) {
                             switch (c.getState()) {
                                 case READABLE_UNWRITABLE:
-                                    if (isMutableComponent
-                                            && (opType == LSMOperationType.MODIFICATION || opType == LSMOperationType.FORCE_MODIFICATION)) {
+                                    if (isMutableComponent && (opType == LSMOperationType.MODIFICATION
+                                            || opType == LSMOperationType.FORCE_MODIFICATION)) {
                                         lsmIndex.changeFlushStatusForCurrentMutableCompoent(true);
                                     }
                                     break;
@@ -230,7 +233,7 @@
                                 if (replicationEnabled) {
                                     componentsToBeReplicated.clear();
                                     componentsToBeReplicated.add(newComponent);
-                                    triggerReplication(componentsToBeReplicated, false);
+                                    triggerReplication(componentsToBeReplicated, false, opType);
                                 }
                                 mergePolicy.diskComponentAdded(lsmIndex, false);
                             }
@@ -242,7 +245,7 @@
                                 if (replicationEnabled) {
                                     componentsToBeReplicated.clear();
                                     componentsToBeReplicated.add(newComponent);
-                                    triggerReplication(componentsToBeReplicated, false);
+                                    triggerReplication(componentsToBeReplicated, false, opType);
                                 }
                                 mergePolicy.diskComponentAdded(lsmIndex, fullMergeIsRequested.get());
                             }
@@ -254,8 +257,8 @@
                     e.printStackTrace();
                     throw e;
                 } finally {
-                    if (failedOperation
-                            && (opType == LSMOperationType.MODIFICATION || opType == LSMOperationType.FORCE_MODIFICATION)) {
+                    if (failedOperation && (opType == LSMOperationType.MODIFICATION
+                            || opType == LSMOperationType.FORCE_MODIFICATION)) {
                         //When the operation failed, completeOperation() method must be called
                         //in order to decrement active operation count which was incremented in beforeOperation() method.
                         opTracker.completeOperation(lsmIndex, opType, ctx.getSearchOperationCallback(),
@@ -296,9 +299,9 @@
                     //schedule a replication job to delete these inactive disk components from replicas
                     if (replicationEnabled) {
                         lsmIndex.scheduleReplication(null, inactiveDiskComponentsToBeDeleted, false,
-                                ReplicationOperation.DELETE);
+                                ReplicationOperation.DELETE, opType);
                     }
-                    
+
                     for (ILSMComponent c : inactiveDiskComponentsToBeDeleted) {
                         ((AbstractDiskLSMComponent) c).destroy();
                     }
@@ -312,8 +315,8 @@
     }
 
     @Override
-    public void forceModify(ILSMIndexOperationContext ctx, ITupleReference tuple) throws HyracksDataException,
-            IndexException {
+    public void forceModify(ILSMIndexOperationContext ctx, ITupleReference tuple)
+            throws HyracksDataException, IndexException {
         LSMOperationType opType = LSMOperationType.FORCE_MODIFICATION;
         modify(ctx, false, tuple, opType);
     }
@@ -325,8 +328,11 @@
         return modify(ctx, tryOperation, tuple, opType);
     }
 
-    protected boolean modify(ILSMIndexOperationContext ctx, boolean tryOperation, ITupleReference tuple,
+    private boolean modify(ILSMIndexOperationContext ctx, boolean tryOperation, ITupleReference tuple,
             LSMOperationType opType) throws HyracksDataException, IndexException {
+        if (!lsmIndex.isMemoryComponentsAllocated()) {
+            lsmIndex.allocateMemoryComponents();
+        }
         boolean failedOperation = false;
         if (!getAndEnterComponents(ctx, opType, tryOperation)) {
             return false;
@@ -352,6 +358,7 @@
         ctx.setSearchPredicate(pred);
         getAndEnterComponents(ctx, opType, false);
         try {
+            ctx.getSearchOperationCallback().before(pred.getLowKey());
             lsmIndex.search(ctx, cursor, pred);
         } catch (HyracksDataException | IndexException e) {
             exitComponents(ctx, opType, null, true);
@@ -381,8 +388,8 @@
     }
 
     @Override
-    public void flush(ILSMIndexOperationContext ctx, ILSMIOOperation operation) throws HyracksDataException,
-            IndexException {
+    public void flush(ILSMIndexOperationContext ctx, ILSMIOOperation operation)
+            throws HyracksDataException, IndexException {
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info("Started a flush operation for index: " + lsmIndex + " ...");
         }
@@ -429,8 +436,8 @@
     }
 
     @Override
-    public void merge(ILSMIndexOperationContext ctx, ILSMIOOperation operation) throws HyracksDataException,
-            IndexException {
+    public void merge(ILSMIndexOperationContext ctx, ILSMIOOperation operation)
+            throws HyracksDataException, IndexException {
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info("Started a merge operation for index: " + lsmIndex + " ...");
         }
@@ -460,7 +467,7 @@
             if (replicationEnabled) {
                 componentsToBeReplicated.clear();
                 componentsToBeReplicated.add(c);
-                triggerReplication(componentsToBeReplicated, true);
+                triggerReplication(componentsToBeReplicated, true, LSMOperationType.MERGE);
             }
             mergePolicy.diskComponentAdded(lsmIndex, false);
         }
@@ -470,23 +477,24 @@
     public ILSMOperationTracker getOperationTracker() {
         return opTracker;
     }
-    
-    protected void triggerReplication(List<ILSMComponent> lsmComponents, boolean bulkload) throws HyracksDataException {
+
+    protected void triggerReplication(List<ILSMComponent> lsmComponents, boolean bulkload, LSMOperationType opType)
+            throws HyracksDataException {
         ILSMIndexAccessorInternal accessor = lsmIndex.createAccessor(NoOpOperationCallback.INSTANCE,
                 NoOpOperationCallback.INSTANCE);
-        accessor.scheduleReplication(lsmComponents, bulkload);
+        accessor.scheduleReplication(lsmComponents, bulkload, opType);
     }
-    
+
     @Override
-    public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload)
-            throws HyracksDataException {
+    public void scheduleReplication(ILSMIndexOperationContext ctx, List<ILSMComponent> lsmComponents, boolean bulkload,
+            LSMOperationType opType) throws HyracksDataException {
 
         //enter the LSM components to be replicated to prevent them from being deleted until they are replicated
         if (!getAndEnterComponents(ctx, LSMOperationType.REPLICATE, false)) {
             return;
         }
 
-        lsmIndex.scheduleReplication(ctx, lsmComponents, bulkload, ReplicationOperation.REPLICATE);
+        lsmIndex.scheduleReplication(ctx, lsmComponents, bulkload, ReplicationOperation.REPLICATE, opType);
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexReplicationJob.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexReplicationJob.java
index 3b7a0bc..18d25a8 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexReplicationJob.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexReplicationJob.java
@@ -22,25 +22,45 @@
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.replication.impl.AbstractReplicationJob;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexReplicationJob;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public class LSMIndexReplicationJob extends AbstractReplicationJob implements ILSMIndexReplicationJob {
 
-    private final AbstractLSMIndex lsmIndex;
-    private final ILSMIndexOperationContext ctx;
+    private final ILSMIndex lsmIndex;
+    private final ILSMIndexOperationContext operationContext;
+    private final LSMOperationType LSMOpType;
 
-    public LSMIndexReplicationJob(AbstractLSMIndex lsmIndex, ILSMIndexOperationContext ctx,
-            Set<String> filesToReplicate, ReplicationOperation operation, ReplicationExecutionType executionType) {
+    public LSMIndexReplicationJob(ILSMIndex lsmIndex, ILSMIndexOperationContext operationContext,
+            Set<String> filesToReplicate, ReplicationOperation operation, ReplicationExecutionType executionType,
+            LSMOperationType opType) {
         super(ReplicationJobType.LSM_COMPONENT, operation, executionType, filesToReplicate);
         this.lsmIndex = lsmIndex;
-        this.ctx = ctx;
+        this.operationContext = operationContext;
+        this.LSMOpType = opType;
     }
 
     @Override
     public void endReplication() throws HyracksDataException {
-        if (ctx != null) {
-            lsmIndex.lsmHarness.endReplication(ctx);
+        if (operationContext != null) {
+            ((AbstractLSMIndex) (lsmIndex)).lsmHarness.endReplication(operationContext);
         }
     }
+
+    @Override
+    public ILSMIndex getLSMIndex() {
+        return lsmIndex;
+    }
+
+    @Override
+    public ILSMIndexOperationContext getLSMIndexOperationContext() {
+        return operationContext;
+    }
+
+    @Override
+    public LSMOperationType getLSMOpType() {
+        return LSMOpType;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java
index 6273ea3..c4d2fcc 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMIndexSearchCursor.java
@@ -37,16 +37,17 @@
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 
 public abstract class LSMIndexSearchCursor implements ITreeIndexCursor {
+    protected final ILSMIndexOperationContext opCtx;
+    protected final boolean returnDeletedTuples;
     protected PriorityQueueElement outputElement;
     protected IIndexCursor[] rangeCursors;
+    protected PriorityQueueElement[] pqes;
     protected PriorityQueue<PriorityQueueElement> outputPriorityQueue;
     protected PriorityQueueComparator pqCmp;
     protected MultiComparator cmp;
     protected boolean needPush;
     protected boolean includeMutableComponent;
     protected ILSMHarness lsmHarness;
-    protected final ILSMIndexOperationContext opCtx;
-    protected final boolean returnDeletedTuples;
 
     protected List<ILSMComponent> operationalComponents;
 
@@ -63,9 +64,32 @@
 
     public void initPriorityQueue() throws HyracksDataException, IndexException {
         int pqInitSize = (rangeCursors.length > 0) ? rangeCursors.length : 1;
-        outputPriorityQueue = new PriorityQueue<PriorityQueueElement>(pqInitSize, pqCmp);
-        for (int i = 0; i < rangeCursors.length; i++) {
-            pushIntoPriorityQueue(new PriorityQueueElement(i));
+        if (outputPriorityQueue == null) {
+            outputPriorityQueue = new PriorityQueue<PriorityQueueElement>(pqInitSize, pqCmp);
+            pqes = new PriorityQueueElement[pqInitSize];
+            for (int i = 0; i < pqInitSize; i++) {
+                pqes[i] = new PriorityQueueElement(i);
+            }
+            for (int i = 0; i < rangeCursors.length; i++) {
+                pushIntoPriorityQueue(pqes[i]);
+            }
+        } else {
+            outputPriorityQueue.clear();
+            // did size change?
+            if (pqInitSize == pqes.length) {
+                // size is the same -> re-use
+                for (int i = 0; i < rangeCursors.length; i++) {
+                    pqes[i].reset(null);
+                    pushIntoPriorityQueue(pqes[i]);
+                }
+            } else {
+                // size changed (due to flushes, merges, etc) -> re-create
+                pqes = new PriorityQueueElement[pqInitSize];
+                for (int i = 0; i < rangeCursors.length; i++) {
+                    pqes[i] = new PriorityQueueElement(i);
+                    pushIntoPriorityQueue(pqes[i]);
+                }
+            }
         }
     }
 
@@ -161,7 +185,7 @@
     }
 
     protected void checkPriorityQueue() throws HyracksDataException, IndexException {
-        while (!outputPriorityQueue.isEmpty() || needPush == true) {
+        while (!outputPriorityQueue.isEmpty() || (needPush == true)) {
             if (!outputPriorityQueue.isEmpty()) {
                 PriorityQueueElement checkElement = outputPriorityQueue.peek();
                 // If there is no previous tuple or the previous tuple can be ignored
@@ -212,7 +236,7 @@
 
     public class PriorityQueueElement {
         private ITupleReference tuple;
-        private final int cursorIndex;
+        private int cursorIndex;
 
         public PriorityQueueElement(int cursorIndex) {
             tuple = null;
@@ -234,7 +258,7 @@
 
     public class PriorityQueueComparator implements Comparator<PriorityQueueElement> {
 
-        protected final MultiComparator cmp;
+        protected MultiComparator cmp;
 
         public PriorityQueueComparator(MultiComparator cmp) {
             this.cmp = cmp;
@@ -279,4 +303,4 @@
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
index 05dbfd9..3cca96e 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
@@ -33,6 +33,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessorInternal;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public abstract class LSMTreeIndexAccessor implements ILSMIndexAccessorInternal {
     protected ILSMHarness lsmHarness;
@@ -130,13 +131,13 @@
         ctx.getComponentsToBeMerged().addAll(components);
         lsmHarness.scheduleMerge(ctx, callback);
     }
-    
+
     @Override
-    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload) throws HyracksDataException {
+    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload, LSMOperationType opType) throws HyracksDataException {
         ctx.setOperation(IndexOperation.REPLICATE);
         ctx.getComponentsToBeReplicated().clear();
         ctx.getComponentsToBeReplicated().addAll(lsmComponents);
-        lsmHarness.scheduleReplication(ctx, lsmComponents, bulkload);
+        lsmHarness.scheduleReplication(ctx, lsmComponents, bulkload, opType);
     }
 
     @Override
@@ -162,4 +163,4 @@
         ctx.setOperation(IndexOperation.DELETE);
         lsmHarness.forceModify(ctx, tuple);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
index 551d8c5..122db2c 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
@@ -18,14 +18,19 @@
  */
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.replication.IIOReplicationManager;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 
 public class MultitenantVirtualBufferCache implements IVirtualBufferCache {
+    private static final Logger LOGGER = Logger.getLogger(ExternalIndexHarness.class.getName());
 
     private final IVirtualBufferCache vbc;
     private int openCount;
@@ -125,30 +130,64 @@
     //These 4 methods are not applicable here
     @Override
     public int createMemFile() throws HyracksDataException {
-        // TODO Auto-generated method stub
-        return 0;
+        throw new UnsupportedOperationException("Virtual Pages are not a valid concept in this context");
     }
 
     @Override
     public void deleteMemFile(int fileId) throws HyracksDataException {
-        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException("Virtual Pages are not a valid concept in this context");
+    }
+
+    @Override
+    public int getNumPagesOfFile(int fileId) throws HyracksDataException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void adviseWontNeed(ICachedPage page) {
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.log(Level.INFO, "Calling adviseWontNeed on " + this.getClass().getName()
+                    + " makes no sense as this BufferCache cannot evict pages");
+        }
+    }
+
+    @Override
+    public ICachedPage confiscatePage(long dpid) throws HyracksDataException {
+        return vbc.confiscatePage(dpid);
+    }
+
+    @Override
+    public void returnPage(ICachedPage page) {
+        vbc.returnPage(page);
+    }
+
+    @Override
+    public IFIFOPageQueue createFIFOQueue() {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
+    }
+
+    @Override
+    public void finishQueue() {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
+    }
+
+    @Override
+    public void copyPage(ICachedPage src, ICachedPage dst) {
 
     }
 
     @Override
-    public ICachedPage pinVirtual(long vpid) throws HyracksDataException {
-        // TODO Auto-generated method stub
-        return null;
+    public void setPageDiskId(ICachedPage page, long dpid) {
+
     }
 
     @Override
-    public ICachedPage unpinVirtual(long vpid, long dpid) throws HyracksDataException {
-        // TODO Auto-generated method stub
-        return null;
+    public void returnPage(ICachedPage page, boolean reinsert) {
+
     }
 
     @Override
-    public int getFileReferenceCount(int fileId) {
+    public int getFileReferenceCount(int fileId){
         return 0;
     }
 
@@ -158,7 +197,12 @@
     }
 
     @Override
-    public IIOReplicationManager getIIOReplicationManager() {
+    public IIOReplicationManager getIOReplicationManager() {
         return null;
     }
+
+    @Override
+    public void purgeHandle(int fileId) throws HyracksDataException {
+
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpIOOperationCallback.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpIOOperationCallback.java
index cba9bd6..0713d7d 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpIOOperationCallback.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpIOOperationCallback.java
@@ -26,6 +26,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackProvider;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public enum NoOpIOOperationCallback implements ILSMIOOperationCallback, ILSMIOOperationCallbackProvider, ILSMIOOperationCallbackFactory {
     INSTANCE;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java
index d277589..fd7c1f2 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java
@@ -25,6 +25,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTrackerProvider;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 /**
  * Operation tracker that does nothing.
@@ -58,7 +59,7 @@
             public void afterOperation(ILSMIndex index, LSMOperationType opType,
                     ISearchOperationCallback searchCallback, IModificationOperationCallback modificationCallback)
                     throws HyracksDataException {
-                // Do nothing.                        
+                // Do nothing.
             }
         };
     }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java
index 5570ef1..5b8da53 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java
@@ -48,7 +48,7 @@
         List<ILSMComponent> immutableComponents = new ArrayList<ILSMComponent>(index.getImmutableComponents());
         // Reverse the components order so that we look at components from oldest to newest.
         Collections.reverse(immutableComponents);
-       
+
         for (ILSMComponent c : immutableComponents) {
             if (c.getState() != ComponentState.READABLE_UNWRITABLE) {
                 return;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ThreadCountingTracker.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ThreadCountingTracker.java
index 1c5799c..9b255d7 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ThreadCountingTracker.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ThreadCountingTracker.java
@@ -28,6 +28,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexInternal;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 
 public class ThreadCountingTracker implements ILSMOperationTracker {
     private final AtomicInteger threadRefCount;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/TreeIndexFactory.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/TreeIndexFactory.java
index 646aa9c..7f11a8d 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/TreeIndexFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/TreeIndexFactory.java
@@ -20,7 +20,7 @@
 package org.apache.hyracks.storage.am.lsm.common.impls;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.storage.am.common.api.IFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.api.IMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndex;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -34,7 +34,7 @@
     protected final int fieldCount;
 
     public TreeIndexFactory(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
-            IFreePageManagerFactory freePageManagerFactory, ITreeIndexFrameFactory interiorFrameFactory,
+            IMetadataManagerFactory freePageManagerFactory, ITreeIndexFrameFactory interiorFrameFactory,
             ITreeIndexFrameFactory leafFrameFactory, IBinaryComparatorFactory[] cmpFactories, int fieldCount) {
         super(bufferCache, fileMapProvider, freePageManagerFactory);
         this.interiorFrameFactory = interiorFrameFactory;
@@ -42,4 +42,4 @@
         this.cmpFactories = cmpFactories;
         this.fieldCount = fieldCount;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
index c6d3045..6b8cf35 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
@@ -24,6 +24,8 @@
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
@@ -31,11 +33,15 @@
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue;
+import org.apache.hyracks.storage.common.buffercache.IQueueInfo;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.IFileMapManager;
 import org.apache.hyracks.storage.common.file.TransientFileMapManager;
 
 public class VirtualBufferCache implements IVirtualBufferCache {
+    private static final Logger LOGGER = Logger.getLogger(ExternalIndexHarness.class.getName());
+
     private static final int OVERFLOW_PADDING = 8;
 
     private final ICacheMemoryAllocator allocator;
@@ -90,7 +96,7 @@
         }
 
         for (int i = 0; i < buckets.length; i++) {
-            CacheBucket bucket = buckets[i];
+            final CacheBucket bucket = buckets[i];
             bucket.bucketLock.lock();
             try {
                 VirtualPage prev = null;
@@ -174,8 +180,7 @@
             }
 
             if (!newPage) {
-                throw new HyracksDataException("Page " + BufferedFileHandle.getPageId(dpid)
-                        + " does not exist in file "
+                throw new HyracksDataException("Page " + BufferedFileHandle.getPageId(dpid) + " does not exist in file "
                         + fileMapManager.lookupFileName(BufferedFileHandle.getFileId(dpid)));
             }
 
@@ -238,7 +243,7 @@
         }
         pages.trimToSize();
         pages.ensureCapacity(numPages + OVERFLOW_PADDING);
-        ByteBuffer[] buffers = allocator.allocate(pageSize, numPages);
+        ByteBuffer[] buffers = allocator.ensureAvailabilityThenAllocate(pageSize, numPages);
         for (int i = 0; i < numPages; i++) {
             pages.add(new VirtualPage(buffers[i]));
             buckets[i] = new CacheBucket();
@@ -345,32 +350,78 @@
         public void releaseWriteLatch(boolean markDirty) {
             latch.writeLock().unlock();
         }
+        public boolean confiscated() {
+            return false;
+        }
+
+        @Override
+        public IQueueInfo getQueueInfo() {
+            return null;
+        }
+
+        @Override
+        public void setQueueInfo(IQueueInfo queueInfo) {
+            throw new UnsupportedOperationException();
+        }
 
     }
 
     //These 4 methods aren't applicable here.
     @Override
     public int createMemFile() throws HyracksDataException {
-        // TODO Auto-generated method stub
         return 0;
     }
 
     @Override
     public void deleteMemFile(int fileId) throws HyracksDataException {
-        // TODO Auto-generated method stub
+    }
+
+    @Override
+    public int getNumPagesOfFile(int fileId) throws HyracksDataException {
+        return numPages;
+    }
+
+    @Override
+    public void adviseWontNeed(ICachedPage page) {
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.log(Level.INFO, "Calling adviseWontNeed on " + this.getClass().getName()
+                    + " makes no sense as this BufferCache cannot evict pages");
+        }
+    }
+
+    @Override
+    public void returnPage(ICachedPage page) {
 
     }
 
     @Override
-    public ICachedPage pinVirtual(long vpid) throws HyracksDataException {
-        // TODO Auto-generated method stub
-        return null;
+    public IFIFOPageQueue createFIFOQueue() {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
     }
 
     @Override
-    public ICachedPage unpinVirtual(long vpid, long dpid) throws HyracksDataException {
-        // TODO Auto-generated method stub
-        return null;
+    public void finishQueue() {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
+    }
+
+    @Override
+    public ICachedPage confiscatePage(long dpid) {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
+    }
+
+    @Override
+    public void copyPage(ICachedPage src, ICachedPage dst) {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
+    }
+
+    @Override
+    public void setPageDiskId(ICachedPage page, long dpid) {
+
+    }
+
+    @Override
+    public void returnPage(ICachedPage page, boolean reinsert) {
+        throw new UnsupportedOperationException("Virtual buffer caches don't have FIFO writers");
     }
 
     @Override
@@ -384,7 +435,12 @@
     }
 
     @Override
-    public IIOReplicationManager getIIOReplicationManager() {
+    public IIOReplicationManager getIOReplicationManager() {
         return null;
     }
+
+    @Override
+    public void purgeHandle(int fileId) throws HyracksDataException {
+
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/pom.xml b/hyracks/hyracks-storage-am-lsm-invertedindex/pom.xml
index 49f3211..0595533 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/pom.xml
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/pom.xml
@@ -17,9 +17,10 @@
  ! under the License.
  !-->
 
-<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-storage-am-lsm-invertedindex</artifactId>
+<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-storage-am-lsm-invertedindex</artifactId>
 
 	<parent>
 		<artifactId>hyracks</artifactId>
@@ -28,46 +29,38 @@
 		<relativePath>..</relativePath>
 	</parent>
 
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-      <comments>A business-friendly OSS license</comments>
-    </license>
-  </licenses>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+            <comments>A business-friendly OSS license</comments>
+        </license>
+    </licenses>
 
   <properties>
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-	<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>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.hyracks</groupId>
-			<artifactId>hyracks-storage-am-btree</artifactId>
-			<version>0.2.18-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hyracks</groupId>
-			<artifactId>hyracks-storage-am-lsm-common</artifactId>
-			<version>0.2.18-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-	    </dependency>
-	</dependencies>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-util</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-storage-am-btree</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-storage-am-lsm-common</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java
index a5ffe11..f39bab6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java
@@ -29,15 +29,15 @@
 
 public interface IInvertedIndex extends IIndex {
     public IInvertedListCursor createInvertedListCursor();
-    
+
     public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey, IIndexOperationContext ictx)
             throws HyracksDataException, IndexException;
-    
+
     public ITypeTraits[] getInvListTypeTraits();
-    
-    public IBinaryComparatorFactory[] getInvListCmpFactories();    
-    
+
+    public IBinaryComparatorFactory[] getInvListCmpFactories();
+
     public ITypeTraits[] getTokenTypeTraits();
-    
+
     public IBinaryComparatorFactory[] getTokenCmpFactories();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java
index 15af73a..3a902dd 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java
@@ -25,14 +25,14 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.IBinaryTokenizerFactory;
 
 public interface IInvertedIndexOperatorDescriptor extends IIndexOperatorDescriptor {
-    
+
     public ITypeTraits[] getInvListsTypeTraits();
-    
+
     public IBinaryComparatorFactory[] getInvListsComparatorFactories();
-    
+
     public ITypeTraits[] getTokenTypeTraits();
-    
+
     public IBinaryComparatorFactory[] getTokenComparatorFactories();
 
-    public IBinaryTokenizerFactory getTokenizerFactory();        
+    public IBinaryTokenizerFactory getTokenizerFactory();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java
index 2202ea8..c4269272 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java
@@ -41,6 +41,6 @@
     public List<ByteBuffer> getResultBuffers();
 
     public int getNumValidResultBuffers();
-    
+
     public void reset();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
index b44b193..9ec22d6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
@@ -48,7 +48,7 @@
     public int getStartOff();
 
     public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException, IndexException;
-    
+
     // for debugging
     @SuppressWarnings("rawtypes")
     public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException, IndexException;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/AbstractLSMInvertedIndexOperatorDescriptor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/AbstractLSMInvertedIndexOperatorDescriptor.java
index 27cfba1..1c16dfe 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/AbstractLSMInvertedIndexOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/AbstractLSMInvertedIndexOperatorDescriptor.java
@@ -91,4 +91,4 @@
     public ITypeTraits[] getInvListsTypeTraits() {
         return invListsTypeTraits;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/BinaryTokenizerOperatorNodePushable.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/BinaryTokenizerOperatorNodePushable.java
index 4a9ea27..002457b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/BinaryTokenizerOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/BinaryTokenizerOperatorNodePushable.java
@@ -66,11 +66,11 @@
 
     @Override
     public void open() throws HyracksDataException {
+        writer.open();
         accessor = new FrameTupleAccessor(inputRecDesc);
         builder = new ArrayTupleBuilder(outputRecDesc.getFieldCount());
         builderData = builder.getFieldData();
         appender = new FrameTupleAppender(new VSizeFrame(ctx), true);
-        writer.open();
     }
 
     @Override
@@ -81,10 +81,9 @@
         for (int i = 0; i < tupleCount; i++) {
             short numTokens = 0;
 
-            tokenizer.reset(
-                    accessor.getBuffer().array(),
-                    accessor.getTupleStartOffset(i) + accessor.getFieldSlotsLength()
-                            + accessor.getFieldStartOffset(i, docField), accessor.getFieldLength(i, docField));
+            tokenizer.reset(accessor.getBuffer().array(), accessor.getTupleStartOffset(i)
+                    + accessor.getFieldSlotsLength() + accessor.getFieldStartOffset(i, docField),
+                    accessor.getFieldLength(i, docField));
 
             if (addNumTokensKey) {
                 // Get the total number of tokens.
@@ -154,12 +153,20 @@
 
     @Override
     public void close() throws HyracksDataException {
-        appender.flush(writer, true);
-        writer.close();
+        try {
+            appender.write(writer, true);
+        } finally {
+            writer.close();
+        }
     }
 
     @Override
     public void fail() throws HyracksDataException {
         writer.fail();
     }
+
+    @Override
+    public void flush() throws HyracksDataException {
+        appender.flush(writer);
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexCompactOperator.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexCompactOperator.java
index c832511..613eaf0 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexCompactOperator.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexCompactOperator.java
@@ -56,4 +56,4 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         return new LSMIndexCompactOperatorNodePushable(this, ctx, partition);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelper.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelper.java
index 6c3621f..5abf4ef 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelper.java
@@ -91,4 +91,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelperFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelperFactory.java
index 7813ba9..b30bf5b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelperFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexDataflowHelperFactory.java
@@ -59,7 +59,7 @@
     public IndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition) {
         return new LSMInvertedIndexDataflowHelper(opDesc, ctx, partition,
-                virtualBufferCacheProvider.getVirtualBufferCaches(ctx), bloomFilterFalsePositiveRate,
+                virtualBufferCacheProvider.getVirtualBufferCaches(ctx, opDesc.getFileSplitProvider()), bloomFilterFalsePositiveRate,
                 mergePolicyFactory.createMergePolicy(mergePolicyProperties, ctx), opTrackerFactory,
                 ioSchedulerProvider.getIOScheduler(ctx), ioOpCallbackFactory, invertedIndexFields, filterTypeTraits,
                 filterCmpFactories, filterFields, filterFieldsForNonBulkLoadOps, invertedIndexFieldsForNonBulkLoadOps,
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexInsertUpdateDeleteOperator.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexInsertUpdateDeleteOperator.java
index bf2d32f..69770e6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexInsertUpdateDeleteOperator.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/LSMInvertedIndexInsertUpdateDeleteOperator.java
@@ -66,4 +66,4 @@
         return new LSMIndexInsertUpdateDeleteOperatorNodePushable(this, ctx, partition, fieldPermutation,
                 recordDescProvider, op);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelper.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelper.java
index 0f92fbe..a7489e7 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelper.java
@@ -91,4 +91,4 @@
             throw new HyracksDataException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelperFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelperFactory.java
index 91d461c..4a6194b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelperFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/dataflow/PartitionedLSMInvertedIndexDataflowHelperFactory.java
@@ -59,7 +59,7 @@
     public IndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition) {
         return new PartitionedLSMInvertedIndexDataflowHelper(opDesc, ctx, partition,
-                virtualBufferCacheProvider.getVirtualBufferCaches(ctx), bloomFilterFalsePositiveRate,
+                virtualBufferCacheProvider.getVirtualBufferCaches(ctx, opDesc.getFileSplitProvider()), bloomFilterFalsePositiveRate,
                 mergePolicyFactory.createMergePolicy(mergePolicyProperties, ctx), opTrackerFactory,
                 ioSchedulerProvider.getIOScheduler(ctx), ioOpCallbackFactory, invertedIndexFields, filterTypeTraits,
                 filterCmpFactories, filterFields, filterFieldsForNonBulkLoadOps, invertedIndexFieldsForNonBulkLoadOps,
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java
index ae7c9e8..14187f6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java
@@ -24,10 +24,10 @@
 public class InvertedIndexException extends IndexException {
     private static final long serialVersionUID = 1L;
 
-    public InvertedIndexException(Exception e) {        
+    public InvertedIndexException(Exception e) {
         super(e);
     }
-    
+
     public InvertedIndexException(String msg) {
         super(msg);
     }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
index 28b96db..204e874 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
@@ -46,7 +46,7 @@
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.IVirtualFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IVirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException;
 import org.apache.hyracks.storage.am.common.impls.AbstractSearchPredicate;
@@ -69,7 +69,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
-import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager;
+import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.impls.BTreeFactory;
 import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
@@ -109,14 +109,13 @@
             OnDiskInvertedIndexFactory diskInvIndexFactory, BTreeFactory deletedKeysBTreeFactory,
             BloomFilterFactory bloomFilterFactory, ILSMComponentFilterFactory filterFactory,
             ILSMComponentFilterFrameFactory filterFrameFactory, LSMComponentFilterManager filterManager,
-            double bloomFilterFalsePositiveRate, ILSMIndexFileManager fileManager,
-            IFileMapProvider diskFileMapProvider, ITypeTraits[] invListTypeTraits,
-            IBinaryComparatorFactory[] invListCmpFactories, ITypeTraits[] tokenTypeTraits,
-            IBinaryComparatorFactory[] tokenCmpFactories, IBinaryTokenizerFactory tokenizerFactory,
-            ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler,
-            ILSMIOOperationCallback ioOpCallback, int[] invertedIndexFields, int[] filterFields,
-            int[] filterFieldsForNonBulkLoadOps, int[] invertedIndexFieldsForNonBulkLoadOps, boolean durable)
-            throws IndexException {
+            double bloomFilterFalsePositiveRate, ILSMIndexFileManager fileManager, IFileMapProvider diskFileMapProvider,
+            ITypeTraits[] invListTypeTraits, IBinaryComparatorFactory[] invListCmpFactories,
+            ITypeTraits[] tokenTypeTraits, IBinaryComparatorFactory[] tokenCmpFactories,
+            IBinaryTokenizerFactory tokenizerFactory, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker,
+            ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, int[] invertedIndexFields,
+            int[] filterFields, int[] filterFieldsForNonBulkLoadOps, int[] invertedIndexFieldsForNonBulkLoadOps,
+            boolean durable) throws IndexException {
         super(virtualBufferCaches, diskInvIndexFactory.getBufferCache(), fileManager, diskFileMapProvider,
                 bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, filterFrameFactory,
                 filterManager, filterFields, durable);
@@ -136,14 +135,15 @@
         int i = 0;
         for (IVirtualBufferCache virtualBufferCache : virtualBufferCaches) {
             InMemoryInvertedIndex memInvIndex = createInMemoryInvertedIndex(virtualBufferCache,
-                    new VirtualFreePageManager(virtualBufferCache.getNumPages()), i);
-            BTree deleteKeysBTree = BTreeUtils.createBTree(virtualBufferCache, new VirtualFreePageManager(
-                    virtualBufferCache.getNumPages()), virtualBufferCache.getFileMapProvider(), invListTypeTraits,
-                    invListCmpFactories, BTreeLeafFrameType.REGULAR_NSM,
+                    new VirtualMetaDataPageManager(virtualBufferCache.getNumPages()), i);
+            BTree deleteKeysBTree = BTreeUtils.createBTree(virtualBufferCache,
+                    new VirtualMetaDataPageManager(virtualBufferCache.getNumPages()),
+                    virtualBufferCache.getFileMapProvider(), invListTypeTraits, invListCmpFactories,
+                    BTreeLeafFrameType.REGULAR_NSM,
                     new FileReference(new File(fileManager.getBaseDir() + "_virtual_del_" + i)));
             LSMInvertedIndexMemoryComponent mutableComponent = new LSMInvertedIndexMemoryComponent(memInvIndex,
-                    deleteKeysBTree, virtualBufferCache, i == 0 ? true : false, filterFactory == null ? null
-                            : filterFactory.createLSMComponentFilter());
+                    deleteKeysBTree, virtualBufferCache, i == 0 ? true : false,
+                    filterFactory == null ? null : filterFactory.createLSMComponentFilter());
             memoryComponents.add(mutableComponent);
             ++i;
         }
@@ -168,15 +168,6 @@
 
         try {
             List<ILSMComponent> immutableComponents = diskComponents;
-            for (ILSMComponent c : memoryComponents) {
-                LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
-                ((IVirtualBufferCache) mutableComponent.getInvIndex().getBufferCache()).open();
-                mutableComponent.getInvIndex().create();
-                mutableComponent.getInvIndex().activate();
-                mutableComponent.getDeletedKeysBTree().create();
-                mutableComponent.getDeletedKeysBTree().activate();
-            }
-
             immutableComponents.clear();
             List<LSMComponentFileReferences> validFileReferences = fileManager.cleanupAndGetValidFiles();
             for (LSMComponentFileReferences lsmComonentFileReference : validFileReferences) {
@@ -192,7 +183,6 @@
                 immutableComponents.add(component);
             }
             isActivated = true;
-            // TODO: Maybe we can make activate throw an index exception?
         } catch (IndexException e) {
             throw new HyracksDataException(e);
         }
@@ -204,12 +194,7 @@
             throw new HyracksDataException("Failed to clear the index since it is not activated.");
         }
 
-        for (ILSMComponent c : memoryComponents) {
-            LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
-            mutableComponent.getInvIndex().clear();
-            mutableComponent.getDeletedKeysBTree().clear();
-            mutableComponent.reset();
-        }
+        clearMemoryComponents();
         List<ILSMComponent> immutableComponents = diskComponents;
         for (ILSMComponent c : immutableComponents) {
             LSMInvertedIndexDiskComponent component = (LSMInvertedIndexDiskComponent) c;
@@ -228,8 +213,6 @@
         if (!isActivated) {
             throw new HyracksDataException("Failed to deactivate the index since it is already deactivated.");
         }
-
-        isActivated = false;
         if (flushOnExit) {
             BlockingIOOperationCallbackWrapper cb = new BlockingIOOperationCallbackWrapper(ioOpCallback);
             ILSMIndexAccessor accessor = createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
@@ -248,14 +231,8 @@
             component.getInvIndex().deactivate();
             component.getDeletedKeysBTree().deactivate();
         }
-        for (ILSMComponent c : memoryComponents) {
-            LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
-            mutableComponent.getInvIndex().deactivate();
-            mutableComponent.getDeletedKeysBTree().deactivate();
-            mutableComponent.getInvIndex().destroy();
-            mutableComponent.getDeletedKeysBTree().destroy();
-            ((IVirtualBufferCache) mutableComponent.getInvIndex().getBufferCache()).close();
-        }
+        deallocateMemoryComponents();
+        isActivated = false;
     }
 
     @Override
@@ -290,26 +267,18 @@
         List<ILSMComponent> operationalComponents = ctx.getComponentHolder();
         int cmc = currentMutableComponentId.get();
         ctx.setCurrentMutableComponentId(cmc);
-        int numMutableComponents = memoryComponents.size();
         operationalComponents.clear();
         switch (ctx.getOperation()) {
             case FLUSH:
             case DELETE:
             case INSERT:
+            case UPSERT:
                 operationalComponents.add(memoryComponents.get(cmc));
                 break;
             case SEARCH:
-                for (int i = 0; i < numMutableComponents - 1; i++) {
-                    ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
-                    LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
-                    if (mutableComponent.isReadable()) {
-                        // Make sure newest components are added first
-                        operationalComponents.add(0, mutableComponent);
-                    }
+                if (memoryComponentsAllocated) {
+                    addOperationalMutableComponents(operationalComponents);
                 }
-                // The current mutable component is always added
-                operationalComponents.add(0, memoryComponents.get(cmc));
-
                 if (filterManager != null) {
                     for (ILSMComponent c : immutableComponents) {
                         if (c.getLSMComponentFilter().satisfy(
@@ -322,7 +291,6 @@
                 } else {
                     operationalComponents.addAll(immutableComponents);
                 }
-
                 break;
             case MERGE:
                 operationalComponents.addAll(ctx.getComponentsToBeMerged());
@@ -370,8 +338,8 @@
             indexTuple = tuple;
         }
 
-        ctx.modificationCallback.before(indexTuple);
-        ctx.modificationCallback.found(null, indexTuple);
+        ctx.getModificationCallback().before(indexTuple);
+        ctx.getModificationCallback().found(null, indexTuple);
         switch (ctx.getOperation()) {
             case INSERT: {
                 // Insert into the in-memory inverted index.
@@ -396,8 +364,8 @@
         }
         if (ctx.filterTuple != null) {
             ctx.filterTuple.reset(tuple);
-            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter()
-                    .update(ctx.filterTuple, ctx.filterCmp);
+            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter().update(ctx.filterTuple,
+                    ctx.filterCmp);
         }
     }
 
@@ -406,7 +374,6 @@
             throws HyracksDataException, IndexException {
         List<ILSMComponent> operationalComponents = ictx.getComponentHolder();
         int numComponents = operationalComponents.size();
-        assert numComponents > 0;
         boolean includeMutableComponent = false;
         ArrayList<IIndexAccessor> indexAccessors = new ArrayList<IIndexAccessor>(numComponents);
         ArrayList<IIndexAccessor> deletedKeysBTreeAccessors = new ArrayList<IIndexAccessor>(numComponents);
@@ -418,9 +385,8 @@
                 IIndexAccessor invIndexAccessor = ((LSMInvertedIndexMemoryComponent) component).getInvIndex()
                         .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
                 indexAccessors.add(invIndexAccessor);
-                IIndexAccessor deletedKeysAccessor = ((LSMInvertedIndexMemoryComponent) component)
-                        .getDeletedKeysBTree().createAccessor(NoOpOperationCallback.INSTANCE,
-                                NoOpOperationCallback.INSTANCE);
+                IIndexAccessor deletedKeysAccessor = ((LSMInvertedIndexMemoryComponent) component).getDeletedKeysBTree()
+                        .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
                 deletedKeysBTreeAccessors.add(deletedKeysAccessor);
             } else {
                 IIndexAccessor invIndexAccessor = ((LSMInvertedIndexDiskComponent) component).getInvIndex()
@@ -450,8 +416,8 @@
             initState = new LSMInvertedIndexSearchCursorInitialState(keyCmp, keysOnlyTuple, indexAccessors,
                     deletedKeysBTreeAccessors,
                     ((LSMInvertedIndexMemoryComponent) memoryComponents.get(currentMutableComponentId.get()))
-                            .getDeletedKeysBTree().getLeafFrameFactory(), ictx, includeMutableComponent, lsmHarness,
-                    operationalComponents);
+                            .getDeletedKeysBTree().getLeafFrameFactory(),
+                    ictx, includeMutableComponent, lsmHarness, operationalComponents);
         } else {
             LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) memoryComponents
                     .get(currentMutableComponentId.get());
@@ -459,8 +425,9 @@
             MultiComparator tokensAndKeysCmp = MultiComparator.create(memInvIndex.getBTree().getComparatorFactories());
             initState = new LSMInvertedIndexRangeSearchCursorInitialState(tokensAndKeysCmp, keyCmp, keysOnlyTuple,
                     ((LSMInvertedIndexMemoryComponent) memoryComponents.get(currentMutableComponentId.get()))
-                            .getDeletedKeysBTree().getLeafFrameFactory(), includeMutableComponent, lsmHarness,
-                    indexAccessors, deletedKeysBTreeAccessors, pred, operationalComponents);
+                            .getDeletedKeysBTree().getLeafFrameFactory(),
+                    includeMutableComponent, lsmHarness, indexAccessors, deletedKeysBTreeAccessors, pred,
+                    operationalComponents);
         }
         return initState;
     }
@@ -488,8 +455,8 @@
         opCtx.setOperation(IndexOperation.FLUSH);
         opCtx.getComponentHolder().add(flushingComponent);
         ioScheduler.scheduleOperation(new LSMInvertedIndexFlushOperation(
-                new LSMInvertedIndexAccessor(lsmHarness, opCtx), flushingComponent, componentFileRefs
-                        .getInsertIndexFileReference(), componentFileRefs.getDeleteIndexFileReference(),
+                new LSMInvertedIndexAccessor(lsmHarness, opCtx), flushingComponent,
+                componentFileRefs.getInsertIndexFileReference(), componentFileRefs.getDeleteIndexFileReference(),
                 componentFileRefs.getBloomFilterFileReference(), callback, fileManager.getBaseDir()));
     }
 
@@ -514,7 +481,7 @@
         memBTreeAccessor.search(scanCursor, nullPred);
 
         // Bulk load the disk inverted index from the in-memory inverted index.
-        IIndexBulkLoader invIndexBulkLoader = diskInvertedIndex.createBulkLoader(1.0f, false, 0L, false);
+        IIndexBulkLoader invIndexBulkLoader = diskInvertedIndex.createBulkLoader(1.0f, false, 0L, false, true);
         try {
             while (scanCursor.hasNext()) {
                 scanCursor.next();
@@ -523,10 +490,18 @@
         } finally {
             scanCursor.close();
         }
+        if (component.getLSMComponentFilter() != null) {
+            List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
+            filterTuples.add(flushingComponent.getLSMComponentFilter().getMinTuple());
+            filterTuples.add(flushingComponent.getLSMComponentFilter().getMaxTuple());
+            filterManager.updateFilterInfo(component.getLSMComponentFilter(), filterTuples);
+            filterManager.writeFilterInfo(component.getLSMComponentFilter(),
+                    ((OnDiskInvertedIndex) component.getInvIndex()).getBTree());
+        }
         invIndexBulkLoader.end();
 
-        IIndexAccessor deletedKeysBTreeAccessor = flushingComponent.getDeletedKeysBTree().createAccessor(
-                NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+        IIndexAccessor deletedKeysBTreeAccessor = flushingComponent.getDeletedKeysBTree()
+                .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
         IIndexCursor btreeCountingCursor = ((BTreeAccessor) deletedKeysBTreeAccessor).createCountingSearchCursor();
         deletedKeysBTreeAccessor.search(btreeCountingCursor, nullPred);
         long numBTreeTuples = 0L;
@@ -540,44 +515,34 @@
             btreeCountingCursor.close();
         }
 
-        if (numBTreeTuples > 0) {
-            int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numBTreeTuples);
-            BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
-                    bloomFilterFalsePositiveRate);
+        int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numBTreeTuples);
+        BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
+                bloomFilterFalsePositiveRate);
 
-            // Create an BTree instance for the deleted keys.
-            BTree diskDeletedKeysBTree = component.getDeletedKeysBTree();
+        // Create an BTree instance for the deleted keys.
+        BTree diskDeletedKeysBTree = component.getDeletedKeysBTree();
 
-            // Create a scan cursor on the deleted keys BTree underlying the in-memory inverted index.
-            IIndexCursor deletedKeysScanCursor = deletedKeysBTreeAccessor.createSearchCursor(false);
-            deletedKeysBTreeAccessor.search(deletedKeysScanCursor, nullPred);
+        // Create a scan cursor on the deleted keys BTree underlying the in-memory inverted index.
+        IIndexCursor deletedKeysScanCursor = deletedKeysBTreeAccessor.createSearchCursor(false);
+        deletedKeysBTreeAccessor.search(deletedKeysScanCursor, nullPred);
 
-            // Bulk load the deleted-keys BTree.
-            IIndexBulkLoader deletedKeysBTreeBulkLoader = diskDeletedKeysBTree.createBulkLoader(1.0f, false, 0L, false);
-            IIndexBulkLoader builder = component.getBloomFilter().createBuilder(numBTreeTuples,
-                    bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements());
+        // Bulk load the deleted-keys BTree.
+        IIndexBulkLoader deletedKeysBTreeBulkLoader = diskDeletedKeysBTree.createBulkLoader(1.0f, false, 0L, false,
+                true);
+        IIndexBulkLoader builder = component.getBloomFilter().createBuilder(numBTreeTuples,
+                bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements());
 
-            try {
-                while (deletedKeysScanCursor.hasNext()) {
-                    deletedKeysScanCursor.next();
-                    deletedKeysBTreeBulkLoader.add(deletedKeysScanCursor.getTuple());
-                    builder.add(deletedKeysScanCursor.getTuple());
-                }
-            } finally {
-                deletedKeysScanCursor.close();
-                builder.end();
+        try {
+            while (deletedKeysScanCursor.hasNext()) {
+                deletedKeysScanCursor.next();
+                deletedKeysBTreeBulkLoader.add(deletedKeysScanCursor.getTuple());
+                builder.add(deletedKeysScanCursor.getTuple());
             }
-            deletedKeysBTreeBulkLoader.end();
+        } finally {
+            deletedKeysScanCursor.close();
+            builder.end();
         }
-
-        if (component.getLSMComponentFilter() != null) {
-            List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
-            filterTuples.add(flushingComponent.getLSMComponentFilter().getMinTuple());
-            filterTuples.add(flushingComponent.getLSMComponentFilter().getMaxTuple());
-            filterManager.updateFilterInfo(component.getLSMComponentFilter(), filterTuples);
-            filterManager.writeFilterInfo(component.getLSMComponentFilter(),
-                    ((OnDiskInvertedIndex) component.getInvIndex()).getBTree());
-        }
+        deletedKeysBTreeBulkLoader.end();
 
         return component;
     }
@@ -585,7 +550,8 @@
     @Override
     public void scheduleMerge(ILSMIndexOperationContext ctx, ILSMIOOperationCallback callback)
             throws HyracksDataException, IndexException {
-        LSMInvertedIndexOpContext ictx = createOpContext(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+        LSMInvertedIndexOpContext ictx = createOpContext(NoOpOperationCallback.INSTANCE,
+                NoOpOperationCallback.INSTANCE);
         ictx.setOperation(IndexOperation.MERGE);
         List<ILSMComponent> mergingComponents = ctx.getComponentHolder();
         IIndexCursor cursor = new LSMInvertedIndexRangeSearchCursor(ictx);
@@ -600,7 +566,7 @@
         String lastFileName = lastInvIndex.getBTree().getFileReference().getFile().getName();
 
         LSMComponentFileReferences relMergeFileRefs = fileManager.getRelMergeFileReference(firstFileName, lastFileName);
-        ILSMIndexAccessorInternal accessor = new LSMInvertedIndexAccessor(lsmHarness, ictx);
+        ILSMIndexAccessorInternal accessor = new LSMInvertedIndexAccessor(lsmHarness, ctx);
         ioScheduler.scheduleOperation(new LSMInvertedIndexMergeOperation(accessor, mergingComponents, cursor,
                 relMergeFileRefs.getInsertIndexFileReference(), relMergeFileRefs.getDeleteIndexFileReference(),
                 relMergeFileRefs.getBloomFilterFileReference(), callback, fileManager.getBaseDir()));
@@ -635,7 +601,7 @@
             search(opCtx, btreeCursor, mergePred);
 
             BTree btree = component.getDeletedKeysBTree();
-            IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false);
+            IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false, true);
 
             long numElements = 0L;
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
@@ -660,9 +626,13 @@
                 builder.end();
             }
             btreeBulkLoader.end();
+        } else {
+            BTree btree = component.getDeletedKeysBTree();
+            IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false, true);
+            btreeBulkLoader.end();
         }
 
-        IIndexBulkLoader invIndexBulkLoader = mergedDiskInvertedIndex.createBulkLoader(1.0f, true, 0L, false);
+        IIndexBulkLoader invIndexBulkLoader = mergedDiskInvertedIndex.createBulkLoader(1.0f, true, 0L, false, true);
         try {
             while (cursor.hasNext()) {
                 cursor.next();
@@ -672,8 +642,6 @@
         } finally {
             cursor.close();
         }
-        invIndexBulkLoader.end();
-
         if (component.getLSMComponentFilter() != null) {
             List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
@@ -684,6 +652,7 @@
             filterManager.writeFilterInfo(component.getLSMComponentFilter(),
                     ((OnDiskInvertedIndex) component.getInvIndex()).getBTree());
         }
+        invIndexBulkLoader.end();
 
         return component;
     }
@@ -698,7 +667,18 @@
     public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
             boolean checkIfEmptyIndex) throws IndexException {
         try {
-            return new LSMInvertedIndexBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex);
+            return new LSMInvertedIndexBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex, true);
+        } catch (HyracksDataException e) {
+            throw new IndexException(e);
+        }
+    }
+
+    @Override
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        try {
+            return new LSMInvertedIndexBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex,
+                    appendOnly);
         } catch (HyracksDataException e) {
             throw new IndexException(e);
         }
@@ -707,6 +687,7 @@
     public class LSMInvertedIndexBulkLoader implements IIndexBulkLoader {
         private final ILSMComponent component;
         private final IIndexBulkLoader invIndexBulkLoader;
+        private final IIndexBulkLoader deletedKeysBTreeBulkLoader;
         private boolean cleanedUpArtifacts = false;
         private boolean isEmptyComponent = true;
         public final PermutingTupleReference indexTuple;
@@ -714,7 +695,7 @@
         public final MultiComparator filterCmp;
 
         public LSMInvertedIndexBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
-                boolean checkIfEmptyIndex) throws IndexException, HyracksDataException {
+                boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException, HyracksDataException {
             if (checkIfEmptyIndex && !isEmptyIndex()) {
                 throw new IndexException("Cannot load an index that is not empty");
             }
@@ -726,7 +707,11 @@
                 throw new IndexException(e);
             }
             invIndexBulkLoader = ((LSMInvertedIndexDiskComponent) component).getInvIndex().createBulkLoader(fillFactor,
-                    verifyInput, numElementsHint, false);
+                    verifyInput, numElementsHint, false, true);
+
+            //validity of the component depends on the deleted keys file being there even if it's empty.
+            deletedKeysBTreeBulkLoader = ((LSMInvertedIndexDiskComponent) component).getDeletedKeysBTree()
+                    .createBulkLoader(fillFactor, verifyInput, numElementsHint, false, true);
 
             if (filterFields != null) {
                 indexTuple = new PermutingTupleReference(invertedIndexFields);
@@ -781,13 +766,13 @@
         @Override
         public void end() throws IndexException, HyracksDataException {
             if (!cleanedUpArtifacts) {
-                invIndexBulkLoader.end();
-
                 if (component.getLSMComponentFilter() != null) {
                     filterManager.writeFilterInfo(component.getLSMComponentFilter(),
                             (((OnDiskInvertedIndex) ((LSMInvertedIndexDiskComponent) component).getInvIndex())
                                     .getBTree()));
                 }
+                invIndexBulkLoader.end();
+                deletedKeysBTreeBulkLoader.end();
 
                 if (isEmptyComponent) {
                     cleanupArtifacts();
@@ -796,31 +781,41 @@
                 }
             }
         }
+
+        @Override
+        public void abort() throws HyracksDataException {
+            if (invIndexBulkLoader != null) {
+                invIndexBulkLoader.abort();
+            }
+
+            if (deletedKeysBTreeBulkLoader != null) {
+                deletedKeysBTreeBulkLoader.abort();
+            }
+        }
     }
 
     protected InMemoryInvertedIndex createInMemoryInvertedIndex(IVirtualBufferCache virtualBufferCache,
-            IVirtualFreePageManager virtualFreePageManager, int id) throws IndexException {
+            IVirtualMetaDataPageManager virtualFreePageManager, int id) throws IndexException {
         return InvertedIndexUtils.createInMemoryBTreeInvertedindex(virtualBufferCache, virtualFreePageManager,
                 invListTypeTraits, invListCmpFactories, tokenTypeTraits, tokenCmpFactories, tokenizerFactory,
                 new FileReference(new File(fileManager.getBaseDir() + "_virtual_vocab_" + id)));
     }
 
     protected LSMInvertedIndexDiskComponent createDiskInvIndexComponent(ILSMComponentFactory factory,
-            FileReference dictBTreeFileRef, FileReference btreeFileRef, FileReference bloomFilterFileRef, boolean create)
-            throws HyracksDataException, IndexException {
-        LSMInvertedIndexDiskComponent component = (LSMInvertedIndexDiskComponent) factory
-                .createLSMComponentInstance(new LSMComponentFileReferences(dictBTreeFileRef, btreeFileRef,
-                        bloomFilterFileRef));
+            FileReference dictBTreeFileRef, FileReference btreeFileRef, FileReference bloomFilterFileRef,
+            boolean create) throws HyracksDataException, IndexException {
+        LSMInvertedIndexDiskComponent component = (LSMInvertedIndexDiskComponent) factory.createLSMComponentInstance(
+                new LSMComponentFileReferences(dictBTreeFileRef, btreeFileRef, bloomFilterFileRef));
         if (create) {
-            component.getInvIndex().create();
-            component.getDeletedKeysBTree().create();
             component.getBloomFilter().create();
+            component.getBloomFilter().activate();
+        } else {
+            component.getInvIndex().activate();
+            component.getDeletedKeysBTree().activate();
+            component.getBloomFilter().activate();
         }
         // Will be closed during cleanup of merge().
-        component.getInvIndex().activate();
-        component.getDeletedKeysBTree().activate();
-        component.getBloomFilter().activate();
-        if (component.getLSMComponentFilter() != null) {
+        if (component.getLSMComponentFilter() != null && !create) {
             filterManager.readFilterInfo(component.getLSMComponentFilter(),
                     ((OnDiskInvertedIndex) component.getInvIndex()).getBTree());
         }
@@ -885,42 +880,24 @@
         return tokenizerFactory;
     }
 
-    protected void forceFlushInvListsFileDirtyPages(OnDiskInvertedIndex invIndex) throws HyracksDataException {
-        int fileId = invIndex.getInvListsFileId();
-        IBufferCache bufferCache = invIndex.getBufferCache();
-        int startPageId = 0;
-        int maxPageId = invIndex.getInvListsMaxPageId();
-        forceFlushDirtyPages(bufferCache, fileId, startPageId, maxPageId);
-    }
-
     @Override
     public void markAsValid(ILSMComponent lsmComponent) throws HyracksDataException {
         LSMInvertedIndexDiskComponent invIndexComponent = (LSMInvertedIndexDiskComponent) lsmComponent;
         OnDiskInvertedIndex invIndex = (OnDiskInvertedIndex) invIndexComponent.getInvIndex();
-        // Flush the bloom filter first.
-        int fileId = invIndexComponent.getBloomFilter().getFileId();
         IBufferCache bufferCache = invIndex.getBufferCache();
-        int startPage = 0;
-        int maxPage = invIndexComponent.getBloomFilter().getNumPages();
-        forceFlushDirtyPages(bufferCache, fileId, startPage, maxPage);
+        markAsValidInternal(invIndex.getBufferCache(), invIndexComponent.getBloomFilter());
 
         // Flush inverted index second.
-        forceFlushDirtyPages(invIndex.getBTree());
-        forceFlushInvListsFileDirtyPages(invIndex);
+        bufferCache.force(invIndex.getInvListsFileId(), true);
         markAsValidInternal(invIndex.getBTree());
 
         // Flush deleted keys BTree.
-        forceFlushDirtyPages(invIndexComponent.getDeletedKeysBTree());
         markAsValidInternal(invIndexComponent.getDeletedKeysBTree());
     }
 
     @Override
     public void validate() throws HyracksDataException {
-        for (ILSMComponent c : memoryComponents) {
-            LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
-            mutableComponent.getInvIndex().validate();
-            mutableComponent.getDeletedKeysBTree().validate();
-        }
+        validateMemoryComponents();
         List<ILSMComponent> immutableComponents = diskComponents;
         for (ILSMComponent c : immutableComponents) {
             LSMInvertedIndexDiskComponent component = (LSMInvertedIndexDiskComponent) c;
@@ -947,15 +924,81 @@
     @Override
     public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) {
         Set<String> files = new HashSet<String>();
-
         LSMInvertedIndexDiskComponent invIndexComponent = (LSMInvertedIndexDiskComponent) lsmComponent;
         OnDiskInvertedIndex invIndex = (OnDiskInvertedIndex) invIndexComponent.getInvIndex();
-
-        files.add(invIndex.getInvListsFile().toString());
-        files.add(invIndex.getBTree().toString());
-        files.add(invIndexComponent.getBloomFilter().getFileReference().toString());
-        files.add(invIndexComponent.getDeletedKeysBTree().getFileReference().toString());
-
+        files.add(invIndex.getInvListsFile().getFile().getAbsolutePath());
+        files.add(invIndex.getBTree().getFileReference().getFile().getAbsolutePath());
+        files.add(invIndexComponent.getBloomFilter().getFileReference().getFile().getAbsolutePath());
+        files.add(invIndexComponent.getDeletedKeysBTree().getFileReference().getFile().getAbsolutePath());
         return files;
     }
+
+    @Override
+    public synchronized void allocateMemoryComponents() throws HyracksDataException {
+        if (!isActivated) {
+            throw new HyracksDataException("Failed to allocate memory components since the index is not active.");
+        }
+        if (memoryComponentsAllocated) {
+            return;
+        }
+        for (ILSMComponent c : memoryComponents) {
+            LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
+            ((IVirtualBufferCache) mutableComponent.getInvIndex().getBufferCache()).open();
+            mutableComponent.getInvIndex().create();
+            mutableComponent.getInvIndex().activate();
+            mutableComponent.getDeletedKeysBTree().create();
+            mutableComponent.getDeletedKeysBTree().activate();
+        }
+        memoryComponentsAllocated = true;
+    }
+
+    private void addOperationalMutableComponents(List<ILSMComponent> operationalComponents) {
+        int cmc = currentMutableComponentId.get();
+        int numMutableComponents = memoryComponents.size();
+        for (int i = 0; i < numMutableComponents - 1; i++) {
+            ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
+            LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
+            if (mutableComponent.isReadable()) {
+                // Make sure newest components are added first
+                operationalComponents.add(0, mutableComponent);
+            }
+        }
+        // The current mutable component is always added
+        operationalComponents.add(0, memoryComponents.get(cmc));
+    }
+
+    private synchronized void clearMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
+                mutableComponent.getInvIndex().clear();
+                mutableComponent.getDeletedKeysBTree().clear();
+                mutableComponent.reset();
+            }
+        }
+    }
+
+    private synchronized void validateMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
+                mutableComponent.getInvIndex().validate();
+                mutableComponent.getDeletedKeysBTree().validate();
+            }
+        }
+    }
+
+    private synchronized void deallocateMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) c;
+                mutableComponent.getInvIndex().deactivate();
+                mutableComponent.getDeletedKeysBTree().deactivate();
+                mutableComponent.getInvIndex().destroy();
+                mutableComponent.getDeletedKeysBTree().destroy();
+                ((IVirtualBufferCache) mutableComponent.getInvIndex().getBufferCache()).close();
+            }
+            memoryComponentsAllocated = false;
+        }
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java
index e2307ac..4c4a552 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexAccessor.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.hyracks.storage.am.lsm.invertedindex.impls;
 
 import java.util.List;
@@ -33,6 +32,7 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessorInternal;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexAccessor;
 import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
 
@@ -100,13 +100,14 @@
         ctx.getComponentsToBeMerged().addAll(components);
         lsmHarness.scheduleMerge(ctx, callback);
     }
-    
+
     @Override
-    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload) throws HyracksDataException {
+    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload, LSMOperationType opType)
+            throws HyracksDataException {
         ctx.setOperation(IndexOperation.REPLICATE);
         ctx.getComponentsToBeReplicated().clear();
         ctx.getComponentsToBeReplicated().addAll(lsmComponents);
-        lsmHarness.scheduleReplication(ctx, lsmComponents, bulkload);
+        lsmHarness.scheduleReplication(ctx, lsmComponents, bulkload, opType);
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java
index 89b5d26..6c699da 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFileManager.java
@@ -38,9 +38,9 @@
 
 // TODO: Refactor for better code sharing with other file managers.
 public class LSMInvertedIndexFileManager extends AbstractLSMIndexFileManager implements IInvertedIndexFileNameMapper {
-    private static final String DICT_BTREE_SUFFIX = "b";
-    private static final String INVLISTS_SUFFIX = "i";
-    private static final String DELETED_KEYS_BTREE_SUFFIX = "d";
+    public static final String DICT_BTREE_SUFFIX = "b";
+    public static final String INVLISTS_SUFFIX = "i";
+    public static final String DELETED_KEYS_BTREE_SUFFIX = "d";
 
     // We only need a BTree factory because the inverted indexes consistency is validated against its dictionary BTree.
     private final BTreeFactory btreeFactory;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
index 0a368c6..7cbf544 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
@@ -119,4 +119,4 @@
     public LSMIOOpertionType getIOOpertionType() {
         return LSMIOOpertionType.MERGE;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexOpContext.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexOpContext.java
index 49b1b03..c511a67 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexOpContext.java
@@ -44,8 +44,8 @@
     private final List<ILSMComponent> componentsToBeMerged;
     private final List<ILSMComponent> componentsToBeReplicated;
 
-    public final IModificationOperationCallback modificationCallback;
-    public final ISearchOperationCallback searchCallback;
+    private IModificationOperationCallback modificationCallback;
+    private ISearchOperationCallback searchCallback;
 
     // Tuple that only has the inverted-index elements (aka keys), projecting away the document fields.
     public PermutingTupleReference keysOnlyTuple;
@@ -79,10 +79,10 @@
         for (int i = 0; i < mutableComponents.size(); i++) {
             LSMInvertedIndexMemoryComponent mutableComponent = (LSMInvertedIndexMemoryComponent) mutableComponents
                     .get(i);
-            mutableInvIndexAccessors[i] = (IInvertedIndexAccessor) mutableComponent.getInvIndex().createAccessor(
-                    NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
-            deletedKeysBTreeAccessors[i] = mutableComponent.getDeletedKeysBTree().createAccessor(
-                    NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            mutableInvIndexAccessors[i] = (IInvertedIndexAccessor) mutableComponent.getInvIndex()
+                    .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            deletedKeysBTreeAccessors[i] = mutableComponent.getDeletedKeysBTree()
+                    .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
         }
 
         assert mutableComponents.size() > 0;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexSearchCursorInitialState.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexSearchCursorInitialState.java
index 91058af..274e399 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexSearchCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexSearchCursorInitialState.java
@@ -48,11 +48,10 @@
 
     private final List<ILSMComponent> operationalComponents;
 
-    public LSMInvertedIndexSearchCursorInitialState(final MultiComparator keyCmp,
-            PermutingTupleReference keysOnlyTuple, List<IIndexAccessor> indexAccessors,
-            List<IIndexAccessor> deletedKeysBTreeAccessors, ITreeIndexFrameFactory deletedKeysBtreeLeafFrameFactory,
-            IIndexOperationContext ctx, boolean includeMemComponent, ILSMHarness lsmHarness,
-            List<ILSMComponent> operationalComponents) {
+    public LSMInvertedIndexSearchCursorInitialState(final MultiComparator keyCmp, PermutingTupleReference keysOnlyTuple,
+            List<IIndexAccessor> indexAccessors, List<IIndexAccessor> deletedKeysBTreeAccessors,
+            ITreeIndexFrameFactory deletedKeysBtreeLeafFrameFactory, IIndexOperationContext ctx,
+            boolean includeMemComponent, ILSMHarness lsmHarness, List<ILSMComponent> operationalComponents) {
         this.keyCmp = keyCmp;
         this.keysOnlyTuple = keysOnlyTuple;
         this.indexAccessors = indexAccessors;
@@ -62,7 +61,7 @@
         this.operationalComponents = operationalComponents;
         this.lsmHarness = lsmHarness;
         this.ctx = (LSMInvertedIndexOpContext) ctx;
-        this.searchCallback = this.ctx.searchCallback;
+        this.searchCallback = this.ctx.getSearchOperationCallback();
     }
 
     @Override
@@ -121,7 +120,7 @@
     public List<IIndexAccessor> getDeletedKeysBTreeAccessors() {
         return deletedKeysBTreeAccessors;
     }
-    
+
     public ITreeIndexFrameFactory getgetDeletedKeysBTreeLeafFrameFactory() {
         return deletedKeysBtreeLeafFrameFactory;
     }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/PartitionedLSMInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/PartitionedLSMInvertedIndex.java
index 3d1808e..7aecbd1 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/PartitionedLSMInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/PartitionedLSMInvertedIndex.java
@@ -26,7 +26,7 @@
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory;
-import org.apache.hyracks.storage.am.common.api.IVirtualFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IVirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFactory;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFrameFactory;
@@ -67,7 +67,7 @@
 
     @Override
     protected InMemoryInvertedIndex createInMemoryInvertedIndex(IVirtualBufferCache virtualBufferCache,
-            IVirtualFreePageManager virtualFreePageManager, int id) throws IndexException {
+            IVirtualMetaDataPageManager virtualFreePageManager, int id) throws IndexException {
         return InvertedIndexUtils.createPartitionedInMemoryBTreeInvertedindex(virtualBufferCache,
                 virtualFreePageManager, invListTypeTraits, invListCmpFactories, tokenTypeTraits, tokenCmpFactories,
                 tokenizerFactory, new FileReference(new File(fileManager.getBaseDir() + "_virtual_vocab_" + id)));
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java
index 20d1172..0e26874 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java
@@ -28,13 +28,8 @@
 import org.apache.hyracks.storage.am.btree.impls.BTree;
 import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
 import org.apache.hyracks.storage.am.btree.util.BTreeUtils;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
-import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
-import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
-import org.apache.hyracks.storage.am.common.api.IndexException;
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.exceptions.TreeIndexDuplicateKeyException;
 import org.apache.hyracks.storage.am.common.exceptions.TreeIndexNonExistentKeyException;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
@@ -56,7 +51,7 @@
     protected final ITypeTraits[] btreeTypeTraits;
     protected final IBinaryComparatorFactory[] btreeCmpFactories;
 
-    public InMemoryInvertedIndex(IBufferCache virtualBufferCache, IFreePageManager virtualFreePageManager,
+    public InMemoryInvertedIndex(IBufferCache virtualBufferCache, IMetaDataPageManager virtualFreePageManager,
             ITypeTraits[] invListTypeTraits, IBinaryComparatorFactory[] invListCmpFactories,
             ITypeTraits[] tokenTypeTraits, IBinaryComparatorFactory[] tokenCmpFactories,
             IBinaryTokenizerFactory tokenizerFactory, FileReference btreeFileRef) throws BTreeException {
@@ -211,4 +206,10 @@
     public boolean hasMemoryComponents() {
         return true;
     }
+
+    @Override
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        throw new UnsupportedOperationException("Bulk load not supported by in-memory inverted index.");
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java
index 4fef746..cf6dff3 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java
@@ -35,7 +35,7 @@
     public IndexOperation op;
     public final BTree btree;
 
-    // Needed for search operations,    
+    // Needed for search operations,
     public RangePredicate btreePred;
     public BTreeAccessor btreeAccessor;
     public MultiComparator btreeCmp;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndex.java
index 1bdb4a8..39dcd4a 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndex.java
@@ -28,12 +28,8 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.btree.exceptions.BTreeException;
 import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
-import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
-import org.apache.hyracks.storage.am.common.api.IndexException;
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndexSearcher;
 import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedListCursor;
@@ -50,7 +46,7 @@
     protected short minPartitionIndex = Short.MAX_VALUE;
     protected short maxPartitionIndex = Short.MIN_VALUE;
 
-    public PartitionedInMemoryInvertedIndex(IBufferCache memBufferCache, IFreePageManager memFreePageManager,
+    public PartitionedInMemoryInvertedIndex(IBufferCache memBufferCache, IMetaDataPageManager memFreePageManager,
             ITypeTraits[] invListTypeTraits, IBinaryComparatorFactory[] invListCmpFactories,
             ITypeTraits[] tokenTypeTraits, IBinaryComparatorFactory[] tokenCmpFactories,
             IBinaryTokenizerFactory tokenizerFactory, FileReference btreeFileRef) throws BTreeException {
@@ -76,13 +72,16 @@
 
     public void updatePartitionIndexes(short numTokens) {
         partitionIndexLock.writeLock().lock();
-        if (numTokens < minPartitionIndex) {
-            minPartitionIndex = numTokens;
+        try {
+            if (numTokens < minPartitionIndex) {
+                minPartitionIndex = numTokens;
+            }
+            if (numTokens > maxPartitionIndex) {
+                maxPartitionIndex = numTokens;
+            }
+        } finally {
+            partitionIndexLock.writeLock().unlock();
         }
-        if (numTokens > maxPartitionIndex) {
-            maxPartitionIndex = numTokens;
-        }
-        partitionIndexLock.writeLock().unlock();
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
index 40ce89a..b5989b9 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
@@ -33,7 +33,6 @@
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.util.TupleUtils;
 import org.apache.hyracks.storage.am.btree.frames.BTreeLeafFrameType;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
@@ -62,6 +61,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.search.TOccurrenceSearcher;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
+import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
@@ -75,7 +75,7 @@
 public class OnDiskInvertedIndex implements IInvertedIndex {
     protected final IHyracksCommonContext ctx = new DefaultHyracksCommonContext();
 
-    // Schema of BTree tuples, set in constructor.    
+    // Schema of BTree tuples, set in constructor.
     protected final int invListStartPageIdField;
     protected final int invListEndPageIdField;
     protected final int invListStartOffField;
@@ -110,6 +110,7 @@
     // Last page id of inverted-lists file (inclusive). Set during bulk load.
     protected int invListsMaxPageId = -1;
     protected boolean isOpen = false;
+    protected boolean wasOpen = false;
 
     public OnDiskInvertedIndex(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
             IInvertedListBuilder invListBuilder, ITypeTraits[] invListTypeTraits,
@@ -136,11 +137,16 @@
 
     @Override
     public synchronized void create() throws HyracksDataException {
+        create(false);
+    }
+
+    public synchronized void create(boolean appendOnly) throws HyracksDataException {
         if (isOpen) {
             throw new HyracksDataException("Failed to create since index is already open.");
         }
-        btree.create();
-
+        if (!appendOnly) {
+            btree.create();
+        }
         boolean fileIsMapped = false;
         synchronized (fileMapProvider) {
             fileIsMapped = fileMapProvider.isMapped(invListsFile);
@@ -164,11 +170,16 @@
 
     @Override
     public synchronized void activate() throws HyracksDataException {
+        activate(false);
+    }
+
+    public synchronized void activate(boolean appendOnly) throws HyracksDataException {
         if (isOpen) {
             throw new HyracksDataException("Failed to activate the index since it is already activated.");
         }
-
-        btree.activate();
+        if (!appendOnly) {
+            btree.activate();
+        }
         boolean fileIsMapped = false;
         synchronized (fileMapProvider) {
             fileIsMapped = fileMapProvider.isMapped(invListsFile);
@@ -189,11 +200,12 @@
         }
 
         isOpen = true;
+        wasOpen = true;
     }
 
     @Override
     public synchronized void deactivate() throws HyracksDataException {
-        if (!isOpen) {
+        if (!isOpen && wasOpen) {
             throw new HyracksDataException("Failed to deactivate the index since it is already deactivated.");
         }
 
@@ -302,8 +314,11 @@
         private final boolean verifyInput;
         private final MultiComparator allCmp;
 
+        private IFIFOPageQueue queue;
+
         public OnDiskInvertedIndexBulkLoader(float btreeFillFactor, boolean verifyInput, long numElementsHint,
-                boolean checkIfEmptyIndex, int startPageId, int fileId) throws IndexException, HyracksDataException {
+                boolean checkIfEmptyIndex, int startPageId, boolean appendOnly) throws IndexException,
+                HyracksDataException {
             this.verifyInput = verifyInput;
             this.tokenCmp = MultiComparator.create(btree.getComparatorFactories());
             this.invListCmp = MultiComparator.create(invListCmpFactories);
@@ -316,24 +331,26 @@
             this.btreeTupleReference = new ArrayTupleReference();
             this.lastTupleBuilder = new ArrayTupleBuilder(numTokenFields + numInvListKeys);
             this.lastTuple = new ArrayTupleReference();
+            if (appendOnly) {
+                create(appendOnly);
+                activate(appendOnly);
+            }
             this.btreeBulkloader = btree.createBulkLoader(btreeFillFactor, verifyInput, numElementsHint,
-                    checkIfEmptyIndex);
+                    checkIfEmptyIndex, appendOnly);
             currentPageId = startPageId;
-            currentPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), true);
-            currentPage.acquireWriteLatch();
+            currentPage = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, currentPageId));
             invListBuilder.setTargetBuffer(currentPage.getBuffer().array(), 0);
+            queue = bufferCache.createFIFOQueue();
         }
 
         public void pinNextPage() throws HyracksDataException {
-            currentPage.releaseWriteLatch(true);
-            bufferCache.unpin(currentPage);
+            queue.put(currentPage);
             currentPageId++;
-            currentPage = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), true);
-            currentPage.acquireWriteLatch();
+            currentPage = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId, currentPageId));
         }
 
         private void createAndInsertBTreeTuple() throws IndexException, HyracksDataException {
-            // Build tuple.        
+            // Build tuple.
             btreeTupleBuilder.reset();
             DataOutput output = btreeTupleBuilder.getDataOutput();
             // Add key fields.
@@ -432,10 +449,17 @@
             btreeBulkloader.end();
 
             if (currentPage != null) {
-                currentPage.releaseWriteLatch(true);
-                bufferCache.unpin(currentPage);
+                queue.put(currentPage);
             }
             invListsMaxPageId = currentPageId;
+            bufferCache.finishQueue();
+        }
+
+        @Override
+        public void abort() throws HyracksDataException {
+            if(btreeBulkloader != null){
+                btreeBulkloader.abort();
+            }
         }
     }
 
@@ -587,13 +611,26 @@
             boolean checkIfEmptyIndex) throws IndexException {
         try {
             return new OnDiskInvertedIndexBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex,
-                    rootPageId, fileId);
+                    rootPageId, false);
         } catch (HyracksDataException e) {
             throw new InvertedIndexException(e);
         }
     }
 
     @Override
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        try {
+            return new OnDiskInvertedIndexBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex,
+                    rootPageId, appendOnly);
+
+        } catch (HyracksDataException e) {
+            throw new InvertedIndexException(e);
+        }
+
+    }
+
+    @Override
     public void validate() throws HyracksDataException {
         btree.validate();
         // Scan the btree and validate the order of elements in each inverted-list.
@@ -686,4 +723,5 @@
     public boolean hasMemoryComponents() {
         return true;
     }
+
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
index bec70a1..bd6ce9b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
@@ -45,7 +45,7 @@
     private final IIndexOperationContext opCtx;
     private final IInvertedListCursor invListCursor;
     private boolean unpinNeeded;
-    
+
     private final IIndexCursor btreeCursor;
     private RangePredicate btreePred;
 
@@ -76,7 +76,7 @@
             btreeAccessor.search(btreeCursor, btreePred);
         } catch (IndexException e) {
             throw new HyracksDataException(e);
-        }        
+        }
         invListCursor.pinPages();
         unpinNeeded = true;
     }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java
index 3449a62..12dd319 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java
@@ -41,7 +41,7 @@
     private final IFrameTupleAccessor fta;
     private final FixedSizeTupleReference frameTuple;
     private final PermutingTupleReference resultTuple;
-    
+
     public OnDiskInvertedIndexSearchCursor(IInvertedIndexSearcher invIndexSearcher, int numInvListFields) {
         this.invIndexSearcher = invIndexSearcher;
         this.fta = invIndexSearcher.createResultFrameTupleAccessor();
@@ -64,7 +64,7 @@
             fta.reset(resultBuffers.get(0));
         }
     }
-    
+
     @Override
     public boolean hasNext() {
         if (currentBufferIndex < numResultBuffers && tupleIndex < fta.getTupleCount()) {
@@ -85,7 +85,7 @@
                 fta.reset(resultBuffers.get(currentBufferIndex));
                 tupleIndex = 0;
             }
-        }        
+        }
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java
index b03e0db..b43cc39 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java
@@ -32,7 +32,7 @@
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public class PartitionedOnDiskInvertedIndexFactory extends OnDiskInvertedIndexFactory {
-    
+
     public PartitionedOnDiskInvertedIndexFactory(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
             IInvertedListBuilderFactory invListBuilderFactory, ITypeTraits[] invListTypeTraits,
             IBinaryComparatorFactory[] invListCmpFactories, ITypeTraits[] tokenTypeTraits,
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
index f536a67..7d34198 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/AbstractTOccurrenceSearcher.java
@@ -50,7 +50,7 @@
 
 public abstract class AbstractTOccurrenceSearcher implements IInvertedIndexSearcher {
     protected static final RecordDescriptor QUERY_TOKEN_REC_DESC = new RecordDescriptor(
-            new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE });
+            new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer() });
 
     protected final int OBJECT_CACHE_INIT_SIZE = 10;
     protected final int OBJECT_CACHE_EXPAND_SIZE = 10;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java
index 1342f09..6116322 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java
@@ -25,12 +25,12 @@
     public ConjunctiveEditDistanceSearchModifier(int gramLength, int edThresh) {
         super(gramLength, edThresh);
     }
-   
+
     @Override
     public String toString() {
         return "Conjunctive Edit Distance Search Modifier, GramLen: " + gramLength + ", Threshold: " + edThresh;
     }
-    
+
     @Override
     public short getNumTokensLowerBound(short numQueryTokens) {
         return -1;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java
index 4131d16..6fdf6bb 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java
@@ -27,12 +27,12 @@
 
     private final int gramLength;
     private final int edThresh;
-    
+
     public ConjunctiveEditDistanceSearchModifierFactory(int gramLength, int edThresh) {
         this.gramLength = gramLength;
         this.edThresh = edThresh;
     }
-    
+
     @Override
     public IInvertedIndexSearchModifier createSearchModifier() {
         return new ConjunctiveEditDistanceSearchModifier(gramLength, edThresh);
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java
index 5f7b36b..4f037f9 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java
@@ -34,7 +34,7 @@
     public short getNumTokensUpperBound(short numQueryTokens) {
         return -1;
     }
-    
+
     @Override
     public String toString() {
         return "Conjunctive List Edit Distance Search Modifier, Threshold: " + edThresh;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java
index 86a0425..674605b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java
@@ -32,7 +32,7 @@
     public int getNumPrefixLists(int occurrenceThreshold, int numInvLists) {
         return 1;
     }
-    
+
     @Override
     public String toString() {
         return "Conjunctive Search Modifier";
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java
index 4035b2a..cd1f3ea 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java
@@ -28,12 +28,12 @@
 
     private final int gramLength;
     private final int edThresh;
-    
+
     public EditDistanceSearchModifierFactory(int gramLength, int edThresh) {
         this.gramLength = gramLength;
         this.edThresh = edThresh;
     }
-    
+
     @Override
     public IInvertedIndexSearchModifier createSearchModifier() {
         return new EditDistanceSearchModifier(gramLength, edThresh);
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchPredicate.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchPredicate.java
index f3797594d..e37f007 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchPredicate.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedIndexSearchPredicate.java
@@ -80,4 +80,9 @@
         // TODO: This doesn't make sense for an inverted index. Change ISearchPredicate interface.
         return null;
     }
+
+    @Override
+    public ITupleReference getLowKey() {
+        return null;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java
index b30ec57..e9d6c1f 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/InvertedListPartitions.java
@@ -95,4 +95,4 @@
     public short getMaxValidPartitionIndex() {
         return maxValidPartitionIndex;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java
index 7c631a4..5bcf36f 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java
@@ -56,7 +56,7 @@
     public short getNumTokensUpperBound(short numQueryTokens) {
         return (short) (numQueryTokens + edThresh);
     }
-    
+
     @Override
     public String toString() {
         return "List Edit Distance Search Modifier, Threshold: " + edThresh;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
index 8da113d..7c7e781 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
@@ -127,8 +127,8 @@
         short start = partitions.getMinValidPartitionIndex();
         short end = partitions.getMaxValidPartitionIndex();
 
-        // Typically, we only enter this case for disk-based inverted indexes. 
-        // TODO: This behavior could potentially lead to a deadlock if we cannot pin 
+        // Typically, we only enter this case for disk-based inverted indexes.
+        // TODO: This behavior could potentially lead to a deadlock if we cannot pin
         // all inverted lists in memory, and are forced to wait for a page to get evicted
         // (other concurrent searchers may be in the same situation).
         // We should detect such cases, then unpin all pages, and then keep retrying to pin until we succeed.
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java
index 21013f7..37eb600 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java
@@ -66,7 +66,7 @@
 
     /**
      * Initialize from other search-result object to share member instances except for result buffers.
-     * 
+     *
      * @throws HyracksDataException
      */
     public SearchResult(SearchResult other) throws HyracksDataException {
@@ -149,7 +149,7 @@
         cursor.reset();
         return cursor;
     }
-    
+
     public class SearchResultCursor {
         private int bufferIndex;
         private int resultIndex;
@@ -169,7 +169,7 @@
         }
 
         public void next() {
-            resultTuple.reset(currentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(frameResultIndex));            
+            resultTuple.reset(currentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(frameResultIndex));
             if (frameResultIndex < resultFrameTupleAcc.getTupleCount()) {
                 frameResultIndex++;
             } else {
@@ -177,7 +177,7 @@
                 currentBuffer = buffers.get(bufferIndex);
                 resultFrameTupleAcc.reset(currentBuffer);
                 frameResultIndex = 0;
-            }            
+            }
             resultIndex++;
         }
 
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8StringBinaryTokenizer.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8StringBinaryTokenizer.java
index 1460857..9d4446f 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8StringBinaryTokenizer.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8StringBinaryTokenizer.java
@@ -19,19 +19,16 @@
 
 package org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public abstract class AbstractUTF8StringBinaryTokenizer implements IBinaryTokenizer {
 
-    protected byte[] data;
-    protected int start;
-    protected int length;
-    protected int tokenLength;
-    protected int index;
-    protected int originalIndex;
-    protected int utf8Length;
-    protected boolean tokenCountCalculated = false;
-    protected short tokenCount;
+    protected byte[] sentenceBytes;
+    protected int sentenceStartOffset;
+    protected int sentenceEndOffset;
+    protected int sentenceUtf8Length;
+
+    protected int byteIndex;
 
     protected final IntArray tokensStart;
     protected final IntArray tokensLength;
@@ -59,27 +56,27 @@
         return token;
     }
 
+    //TODO: This UTF8Tokenizer strongly relies on the Asterix data format,
+    // i.e. the TypeTag and the byteIndex increasing both assume the given byte[] sentence
+    // is an AString object. A better way (if we want to keep the byte[] interface) would be
+    // giving this tokenizer the pure UTF8 character sequence whose {@code start} is the start
+    // of the first character, and move the shift offset to the caller.
     @Override
-    public void reset(byte[] data, int start, int length) {
-        this.start = start;
-        index = this.start;
-        if (sourceHasTypeTag) {
-            index++; // skip type tag
-        }
-        utf8Length = UTF8StringPointable.getUTFLength(data, index);
-        index += 2; // skip utf8 length indicator
-        this.data = data;
-        this.length = length + start;
+    public void reset(byte[] sentenceData, int start, int length) {
+        this.sentenceBytes = sentenceData;
+        this.sentenceStartOffset = start;
+        this.sentenceEndOffset = length + start;
 
-        tokenLength = 0;
+        byteIndex = this.sentenceStartOffset;
+        if (sourceHasTypeTag) {
+            byteIndex++; // skip type tag
+        }
+        sentenceUtf8Length = UTF8StringUtil.getUTFLength(sentenceData, byteIndex);
+        byteIndex += UTF8StringUtil.getNumBytesToStoreLength(sentenceUtf8Length); // skip utf8 length indicator
+
         if (!ignoreTokenCount) {
             tokensStart.reset();
             tokensLength.reset();
         }
-
-        // Needed for calculating the number of tokens
-        originalIndex = index;
-        tokenCountCalculated = false;
-        tokenCount = 0;
     }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8Token.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8Token.java
index 7aeb6fa..ccc2c81 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8Token.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/AbstractUTF8Token.java
@@ -21,17 +21,18 @@
 import java.io.DataOutput;
 import java.io.IOException;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public abstract class AbstractUTF8Token implements IToken {
     public static final int GOLDEN_RATIO_32 = 0x09e3779b9;
 
-    protected int length;
-    protected int tokenLength;
-    protected int start;
-    protected int tokenCount;
     protected byte[] data;
+    protected int startOffset;
+    protected int endOffset;
+    protected int tokenLength;
+    protected int tokenCount;
     protected final byte tokenTypeTag;
     protected final byte countTypeTag;
 
@@ -51,24 +52,24 @@
     }
 
     @Override
-    public int getLength() {
-        return length;
+    public int getEndOffset() {
+        return endOffset;
     }
 
-    public int getLowerCaseUTF8Len(int size) {
+    public int getLowerCaseUTF8Len(int limit) {
         int lowerCaseUTF8Len = 0;
-        int pos = start;
-        for (int i = 0; i < size; i++) {
-            char c = Character.toLowerCase(UTF8StringPointable.charAt(data, pos));
-            lowerCaseUTF8Len += UTF8StringPointable.getModifiedUTF8Len(c);
-            pos += UTF8StringPointable.charSize(data, pos);
+        int pos = startOffset;
+        for (int i = 0; i < limit; i++) {
+            char c = Character.toLowerCase(UTF8StringUtil.charAt(data, pos));
+            lowerCaseUTF8Len += UTF8StringUtil.getModifiedUTF8Len(c);
+            pos += UTF8StringUtil.charSize(data, pos);
         }
         return lowerCaseUTF8Len;
     }
 
     @Override
-    public int getStart() {
-        return start;
+    public int getStartOffset() {
+        return startOffset;
     }
 
     @Override
@@ -88,11 +89,20 @@
         }
     }
 
+    /**
+     * Note: the {@code startOffset} is the offset of first character, not the string length offset
+     *
+     * @param data
+     * @param startOffset
+     * @param endOffset
+     * @param tokenLength
+     * @param tokenCount  the count of this token in a document , or a record, or something else.
+     */
     @Override
-    public void reset(byte[] data, int start, int length, int tokenLength, int tokenCount) {
+    public void reset(byte[] data, int startOffset, int endOffset, int tokenLength, int tokenCount) {
         this.data = data;
-        this.start = start;
-        this.length = length;
+        this.startOffset = startOffset;
+        this.endOffset = endOffset;
         this.tokenLength = tokenLength;
         this.tokenCount = tokenCount;
     }
@@ -102,4 +112,38 @@
         handleCountTypeTag(out.getDataOutput());
         out.getDataOutput().writeInt(tokenCount);
     }
-}
\ No newline at end of file
+
+    // The preChar and postChar are required to be a single byte utf8 char, e.g. ASCII char.
+    protected void serializeToken(UTF8StringBuilder builder, GrowableArray out, int numPreChars, int numPostChars,
+            char preChar, char postChar)
+            throws IOException {
+
+        handleTokenTypeTag(out.getDataOutput());
+
+        assert UTF8StringUtil.getModifiedUTF8Len(preChar) == 1 && UTF8StringUtil.getModifiedUTF8Len(postChar) == 1;
+        int actualUtfLen = endOffset - startOffset;
+
+        builder.reset(out, actualUtfLen + numPreChars + numPostChars);
+        // pre chars
+        for (int i = 0; i < numPreChars; i++) {
+            builder.appendChar(preChar);
+        }
+
+        /// regular chars
+        int numRegChars = tokenLength - numPreChars - numPostChars;
+        int pos = startOffset;
+        for (int i = 0; i < numRegChars; i++) {
+            char c = Character.toLowerCase(UTF8StringUtil.charAt(data, pos));
+            builder.appendChar(c);
+            pos += UTF8StringUtil.charSize(data, pos);
+        }
+
+        // post chars
+        for (int i = 0; i < numPostChars; i++) {
+            builder.appendChar(postChar);
+        }
+
+        builder.finish();
+    }
+
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/DelimitedUTF8StringBinaryTokenizer.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/DelimitedUTF8StringBinaryTokenizer.java
index ddf3a43..28fa2be 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/DelimitedUTF8StringBinaryTokenizer.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/DelimitedUTF8StringBinaryTokenizer.java
@@ -19,54 +19,66 @@
 
 package org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class DelimitedUTF8StringBinaryTokenizer extends AbstractUTF8StringBinaryTokenizer {
 
+    protected short tokenCount;
+    private boolean tokenCountCalculated;
+    private int originalIndex;
+
     public DelimitedUTF8StringBinaryTokenizer(boolean ignoreTokenCount, boolean sourceHasTypeTag,
             ITokenFactory tokenFactory) {
         super(ignoreTokenCount, sourceHasTypeTag, tokenFactory);
     }
 
     @Override
-    public boolean hasNext() {
-        // skip delimiters
-        while (index < length && isSeparator(UTF8StringPointable.charAt(data, index))) {
-            index += UTF8StringPointable.charSize(data, index);
-        }
-        return index < length;
+    public void reset(byte[] sentenceData, int start, int length) {
+        super.reset(sentenceData, start, length);
+        // Needed for calculating the number of tokens
+        tokenCount = 0;
+        tokenCountCalculated = false;
+        originalIndex = byteIndex;
     }
 
-    private boolean isSeparator(char c) {
-        return !(Character.isLetterOrDigit(c) || Character.getType(c) == Character.OTHER_LETTER || Character.getType(c) == Character.OTHER_NUMBER);
+    @Override
+    public boolean hasNext() {
+        // skip delimiters
+        while (byteIndex < sentenceEndOffset && isSeparator(UTF8StringUtil.charAt(sentenceBytes, byteIndex))) {
+            byteIndex += UTF8StringUtil.charSize(sentenceBytes, byteIndex);
+        }
+        return byteIndex < sentenceEndOffset;
+    }
+
+    private static boolean isSeparator(char c) {
+        return !(Character.isLetterOrDigit(c) || Character.getType(c) == Character.OTHER_LETTER
+                || Character.getType(c) == Character.OTHER_NUMBER);
     }
 
     @Override
     public void next() {
-        tokenLength = 0;
-        int currentTokenStart = index;
-        while (index < length && !isSeparator(UTF8StringPointable.charAt(data, index))) {
-            index += UTF8StringPointable.charSize(data, index);
+        int tokenLength = 0;
+        int currentTokenStart = byteIndex;
+        while (byteIndex < sentenceEndOffset && !isSeparator(UTF8StringUtil.charAt(sentenceBytes, byteIndex))) {
+            byteIndex += UTF8StringUtil.charSize(sentenceBytes, byteIndex);
             tokenLength++;
         }
-        int tokenCount = 1;
+        int curTokenCount = 1;
         if (tokenLength > 0 && !ignoreTokenCount) {
             // search if we got the same token before
             for (int i = 0; i < tokensStart.length(); ++i) {
                 if (tokenLength == tokensLength.get(i)) {
                     int tokenStart = tokensStart.get(i);
-                    tokenCount++; // assume we found it
+                    curTokenCount++; // assume we found it
                     int offset = 0;
-                    int currLength = 0;
-                    while (currLength < tokenLength) {
+                    for (int charPos= 0; charPos < tokenLength; charPos++) {
                         // case insensitive comparison
-                        if (Character.toLowerCase(UTF8StringPointable.charAt(data, currentTokenStart + offset)) != Character
-                                .toLowerCase(UTF8StringPointable.charAt(data, tokenStart + offset))) {
-                            tokenCount--;
+                        if (Character.toLowerCase(UTF8StringUtil.charAt(sentenceBytes, currentTokenStart + offset))
+                                != Character.toLowerCase(UTF8StringUtil.charAt(sentenceBytes, tokenStart + offset))) {
+                            curTokenCount--;
                             break;
                         }
-                        offset += UTF8StringPointable.charSize(data, currentTokenStart + offset);
-                        currLength++;
+                        offset += UTF8StringUtil.charSize(sentenceBytes, currentTokenStart + offset);
                     }
                 }
             }
@@ -76,16 +88,19 @@
         }
 
         // set token
-        token.reset(data, currentTokenStart, index, tokenLength, tokenCount);
+        token.reset(sentenceBytes, currentTokenStart, byteIndex, tokenLength, curTokenCount);
+        tokenCount++;
     }
 
+
+    // TODO Why we bother to get the tokenCount in advance? It seems a caller's problem.
     @Override
     public short getTokensCount() {
         if (!tokenCountCalculated) {
             tokenCount = 0;
             boolean previousCharIsSeparator = true;
-            while (originalIndex < length) {
-                if (isSeparator(UTF8StringPointable.charAt(data, originalIndex))) {
+            while (originalIndex < sentenceEndOffset) {
+                if (isSeparator(UTF8StringUtil.charAt(sentenceBytes, originalIndex))) {
                     previousCharIsSeparator = true;
                 } else {
                     if (previousCharIsSeparator) {
@@ -93,9 +108,9 @@
                         previousCharIsSeparator = false;
                     }
                 }
-                originalIndex += UTF8StringPointable.charSize(data, originalIndex);
+                originalIndex += UTF8StringUtil.charSize(sentenceBytes, originalIndex);
             }
         }
         return tokenCount;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8NGramToken.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8NGramToken.java
index 43ee3c0..8ffd355 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8NGramToken.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8NGramToken.java
@@ -21,8 +21,8 @@
 
 import java.io.IOException;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class HashedUTF8NGramToken extends UTF8NGramToken {
     public HashedUTF8NGramToken(byte tokenTypeTag, byte countTypeTag) {
@@ -43,11 +43,11 @@
 
         // regular chars
         int numRegGrams = tokenLength - numPreChars - numPostChars;
-        int pos = start;
+        int pos = startOffset;
         for (int i = 0; i < numRegGrams; i++) {
-            hash ^= Character.toLowerCase(UTF8StringPointable.charAt(data, pos));
+            hash ^= Character.toLowerCase(UTF8StringUtil.charAt(data, pos));
             hash *= GOLDEN_RATIO_32;
-            pos += UTF8StringPointable.charSize(data, pos);
+            pos += UTF8StringUtil.charSize(data, pos);
         }
 
         // post chars
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8WordToken.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8WordToken.java
index 18f958d..150ffd6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8WordToken.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/HashedUTF8WordToken.java
@@ -21,8 +21,8 @@
 
 import java.io.IOException;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class HashedUTF8WordToken extends UTF8WordToken {
 
@@ -46,11 +46,11 @@
         }
         int offset = 0;
         for (int i = 0; i < tokenLength; i++) {
-            if (UTF8StringPointable.charAt(t.getData(), t.getStart() + offset) != UTF8StringPointable.charAt(data,
-                    start + offset)) {
+            if (UTF8StringUtil.charAt(t.getData(), t.getStartOffset() + offset) != UTF8StringUtil.charAt(data,
+                    startOffset + offset)) {
                 return false;
             }
-            offset += UTF8StringPointable.charSize(data, start + offset);
+            offset += UTF8StringUtil.charSize(data, startOffset + offset);
         }
         return true;
     }
@@ -61,16 +61,16 @@
     }
 
     @Override
-    public void reset(byte[] data, int start, int length, int tokenLength, int tokenCount) {
-        super.reset(data, start, length, tokenLength, tokenCount);
+    public void reset(byte[] data, int startOffset, int endOffset, int tokenLength, int tokenCount) {
+        super.reset(data, startOffset, endOffset, tokenLength, tokenCount);
 
         // pre-compute hash value using JAQL-like string hashing
-        int pos = start;
+        int pos = startOffset;
         hash = GOLDEN_RATIO_32;
         for (int i = 0; i < tokenLength; i++) {
-            hash ^= Character.toLowerCase(UTF8StringPointable.charAt(data, pos));
+            hash ^= Character.toLowerCase(UTF8StringUtil.charAt(data, pos));
             hash *= GOLDEN_RATIO_32;
-            pos += UTF8StringPointable.charSize(data, pos);
+            pos += UTF8StringUtil.charSize(data, pos);
         }
         hash += tokenCount;
     }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/IToken.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/IToken.java
index d48af44..cb1b098 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/IToken.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/IToken.java
@@ -24,18 +24,26 @@
 import org.apache.hyracks.data.std.util.GrowableArray;
 
 public interface IToken {
-	public byte[] getData();
+    public byte[] getData();
 
-	public int getLength();
+    public int getEndOffset();
 
-	public int getStart();
+    public int getStartOffset();
 
-	public int getTokenLength();
+    public int getTokenLength();
 
-	public void reset(byte[] data, int start, int length, int tokenLength,
-			int tokenCount);
+    /**
+     * reset the storage byte array.
+     *
+     * @param data
+     * @param startOffset
+     * @param endOffset
+     * @param tokenLength
+     * @param tokenCount  the count of this token in a document , or a record, or something else.
+     */
+    public void reset(byte[] data, int startOffset, int endOffset, int tokenLength, int tokenCount);
 
-	public void serializeToken(GrowableArray out) throws IOException;
+    public void serializeToken(GrowableArray out) throws IOException;
 
-	public void serializeTokenCount(GrowableArray out) throws IOException;
+    public void serializeTokenCount(GrowableArray out) throws IOException;
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramUTF8StringBinaryTokenizer.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramUTF8StringBinaryTokenizer.java
index def7ad2..9161a54 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramUTF8StringBinaryTokenizer.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramUTF8StringBinaryTokenizer.java
@@ -19,7 +19,7 @@
 
 package org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 
 public class NGramUTF8StringBinaryTokenizer extends AbstractUTF8StringBinaryTokenizer {
 
@@ -50,7 +50,7 @@
 
     @Override
     public void next() {
-        int currentTokenStart = index;
+        int currentTokenStart = byteIndex;
         int tokenCount = 1;
         int numPreChars = 0;
         int numPostChars = 0;
@@ -62,46 +62,48 @@
 
         concreteToken.setNumPrePostChars(numPreChars, numPostChars);
         if (numPreChars == 0) {
-            index += UTF8StringPointable.charSize(data, index);
+            byteIndex += UTF8StringUtil.charSize(sentenceBytes, byteIndex);
         }
 
         // compute token count
         // ignore pre and post grams for duplicate detection
         if (!ignoreTokenCount && numPreChars == 0 && numPostChars == 0) {
-            int tmpIndex = start + 2; // skip utf8 length indicator
+            int tmpIndex = sentenceStartOffset;
             if (sourceHasTypeTag) {
                 tmpIndex++; // skip type tag
             }
+            int utfLength = UTF8StringUtil.getUTFLength(sentenceBytes, tmpIndex);
+            tmpIndex += UTF8StringUtil.getNumBytesToStoreLength(utfLength); // skip utf8 length indicator
             while (tmpIndex < currentTokenStart) {
                 tokenCount++; // assume found
                 int offset = 0;
                 for (int j = 0; j < gramLength; j++) {
-                    if (Character.toLowerCase(UTF8StringPointable.charAt(data, currentTokenStart + offset)) != Character
-                            .toLowerCase(UTF8StringPointable.charAt(data, tmpIndex + offset))) {
+                    if (Character.toLowerCase(UTF8StringUtil.charAt(sentenceBytes, currentTokenStart + offset))
+                            != Character.toLowerCase(UTF8StringUtil.charAt(sentenceBytes, tmpIndex + offset))) {
                         tokenCount--;
                         break;
                     }
-                    offset += UTF8StringPointable.charSize(data, tmpIndex + offset);
+                    offset += UTF8StringUtil.charSize(sentenceBytes, tmpIndex + offset);
                 }
-                tmpIndex += UTF8StringPointable.charSize(data, tmpIndex);
+                tmpIndex += UTF8StringUtil.charSize(sentenceBytes, tmpIndex);
             }
         }
 
         // set token
-        token.reset(data, currentTokenStart, length, gramLength, tokenCount);
+        token.reset(sentenceBytes, currentTokenStart, sentenceEndOffset, gramLength, tokenCount);
     }
 
     @Override
-    public void reset(byte[] data, int start, int length) {
-        super.reset(data, start, length);
+    public void reset(byte[] sentenceData, int start, int length) {
+        super.reset(sentenceData, start, length);
         gramNum = 0;
 
         int numChars = 0;
-        int pos = index;
-        int end = pos + utf8Length;
+        int pos = byteIndex;
+        int end = pos + sentenceUtf8Length;
         while (pos < end) {
             numChars++;
-            pos += UTF8StringPointable.charSize(data, pos);
+            pos += UTF8StringUtil.charSize(sentenceData, pos);
         }
 
         if (usePrePost) {
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8NGramToken.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8NGramToken.java
index 7d68d6f..259288c 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8NGramToken.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8NGramToken.java
@@ -21,9 +21,8 @@
 
 import java.io.IOException;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.GrowableArray;
-import org.apache.hyracks.dataflow.common.data.util.StringUtils;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
 
 public class UTF8NGramToken extends AbstractUTF8Token implements INGramToken {
 
@@ -34,6 +33,8 @@
     protected int numPreChars;
     protected int numPostChars;
 
+    private UTF8StringBuilder builder = new UTF8StringBuilder();
+
     public UTF8NGramToken(byte tokenTypeTag, byte countTypeTag) {
         super(tokenTypeTag, countTypeTag);
     }
@@ -50,38 +51,7 @@
 
     @Override
     public void serializeToken(GrowableArray out) throws IOException {
-        handleTokenTypeTag(out.getDataOutput());
-        int tokenUTF8LenOff = out.getLength();
-
-        // regular chars
-        int numRegChars = tokenLength - numPreChars - numPostChars;
-
-        // assuming pre and post char need 1-byte each in utf8
-        int tokenUTF8Len = numPreChars + numPostChars;
-
-        // Write dummy UTF length which will be correctly set later.
-        out.getDataOutput().writeShort(0);
-
-        // pre chars
-        for (int i = 0; i < numPreChars; i++) {
-            StringUtils.writeCharAsModifiedUTF8(PRECHAR, out.getDataOutput());
-        }
-
-        int pos = start;
-        for (int i = 0; i < numRegChars; i++) {
-            char c = Character.toLowerCase(UTF8StringPointable.charAt(data, pos));
-            tokenUTF8Len += StringUtils.writeCharAsModifiedUTF8(c, out.getDataOutput());
-            pos += UTF8StringPointable.charSize(data, pos);
-        }
-
-        // post chars
-        for (int i = 0; i < numPostChars; i++) {
-            StringUtils.writeCharAsModifiedUTF8(POSTCHAR, out.getDataOutput());
-        }
-
-        // Set UTF length of token.
-        out.getByteArray()[tokenUTF8LenOff] = (byte) ((tokenUTF8Len >>> 8) & 0xFF);
-        out.getByteArray()[tokenUTF8LenOff + 1] = (byte) ((tokenUTF8Len >>> 0) & 0xFF);
+        super.serializeToken(builder, out, numPreChars, numPostChars, PRECHAR, POSTCHAR);
     }
 
     public void setNumPrePostChars(int numPreChars, int numPostChars) {
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8WordToken.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8WordToken.java
index caaa682..bc7085c 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8WordToken.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/UTF8WordToken.java
@@ -21,31 +21,21 @@
 
 import java.io.IOException;
 
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
 import org.apache.hyracks.data.std.util.GrowableArray;
-import org.apache.hyracks.dataflow.common.data.util.StringUtils;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
 
 public class UTF8WordToken extends AbstractUTF8Token {
 
+    private static char NULL_PLACEHOLDER = 1; // can't be 0, cause utf8 modified char will use 2 bytes to write 0
+
+    private UTF8StringBuilder builder = new UTF8StringBuilder();
+
     public UTF8WordToken(byte tokenTypeTag, byte countTypeTag) {
         super(tokenTypeTag, countTypeTag);
     }
 
     @Override
     public void serializeToken(GrowableArray out) throws IOException {
-        handleTokenTypeTag(out.getDataOutput());
-        int tokenUTF8LenOff = out.getLength();
-        int tokenUTF8Len = 0;
-        // Write dummy UTF length which will be correctly set later.
-        out.getDataOutput().writeShort(0);
-        int pos = start;
-        for (int i = 0; i < tokenLength; i++) {
-            char c = Character.toLowerCase(UTF8StringPointable.charAt(data, pos));
-            tokenUTF8Len += StringUtils.writeCharAsModifiedUTF8(c, out.getDataOutput());
-            pos += UTF8StringPointable.charSize(data, pos);
-        }
-        // Set UTF length of token.
-        out.getByteArray()[tokenUTF8LenOff] = (byte) ((tokenUTF8Len >>> 8) & 0xFF);
-        out.getByteArray()[tokenUTF8LenOff + 1] = (byte) ((tokenUTF8Len >>> 0) & 0xFF);
+        super.serializeToken(builder, out, 0, 0, NULL_PLACEHOLDER, NULL_PLACEHOLDER);
     }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java
index 47cf239..87811aa 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java
@@ -30,12 +30,12 @@
 import org.apache.hyracks.storage.am.btree.frames.BTreeLeafFrameType;
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
 import org.apache.hyracks.storage.am.btree.util.BTreeUtils;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.freepage.LinkedListMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
@@ -66,7 +66,7 @@
 public class InvertedIndexUtils {
 
     public static InMemoryInvertedIndex createInMemoryBTreeInvertedindex(IBufferCache memBufferCache,
-            IFreePageManager virtualFreePageManager, ITypeTraits[] invListTypeTraits,
+            IMetaDataPageManager virtualFreePageManager, ITypeTraits[] invListTypeTraits,
             IBinaryComparatorFactory[] invListCmpFactories, ITypeTraits[] tokenTypeTraits,
             IBinaryComparatorFactory[] tokenCmpFactories, IBinaryTokenizerFactory tokenizerFactory,
             FileReference btreeFileRef) throws BTreeException {
@@ -75,7 +75,7 @@
     }
 
     public static InMemoryInvertedIndex createPartitionedInMemoryBTreeInvertedindex(IBufferCache memBufferCache,
-            IFreePageManager virtualFreePageManager, ITypeTraits[] invListTypeTraits,
+            IMetaDataPageManager virtualFreePageManager, ITypeTraits[] invListTypeTraits,
             IBinaryComparatorFactory[] invListCmpFactories, ITypeTraits[] tokenTypeTraits,
             IBinaryComparatorFactory[] tokenCmpFactories, IBinaryTokenizerFactory tokenizerFactory,
             FileReference btreeFileRef) throws BTreeException {
@@ -115,7 +115,7 @@
                 BTreeLeafFrameType.REGULAR_NSM);
         ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(tupleWriterFactory);
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        LinkedListFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        LinkedListMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
         BTreeFactory deletedKeysBTreeFactory = new BTreeFactory(diskBufferCache, diskFileMapProvider,
                 freePageManagerFactory, interiorFrameFactory, leafFrameFactory, invListCmpFactories,
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/pom.xml b/hyracks/hyracks-storage-am-lsm-rtree/pom.xml
index d07a90f..c632a8c 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/pom.xml
+++ b/hyracks/hyracks-storage-am-lsm-rtree/pom.xml
@@ -40,19 +40,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/ExternalRTreeDataflowHelper.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/ExternalRTreeDataflowHelper.java
index e8c918a..79e082c 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/ExternalRTreeDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/ExternalRTreeDataflowHelper.java
@@ -72,19 +72,13 @@
 
     @Override
     public IIndex getIndexInstance() {
-        if (index != null)
-            return index;
         synchronized (lcManager) {
-            long resourceID;
-            try {
-                resourceID = getResourceID();
-            } catch (HyracksDataException e) {
-                return null;
-            }
-            try {
-                index = lcManager.getIndex(resourceID);
-            } catch (HyracksDataException e) {
-                return null;
+            if (index == null) {
+                try {
+                    index = lcManager.getIndex(resourcePath);
+                } catch (HyracksDataException e) {
+                    return null;
+                }
             }
         }
         return index;
@@ -99,11 +93,11 @@
             ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, int[] filterFields)
             throws HyracksDataException {
         try {
-            return LSMRTreeUtils.createExternalRTree(file, diskBufferCache, diskFileMapProvider, typeTraits,
-                    rtreeCmpFactories, btreeCmpFactories, valueProviderFactories, rtreePolicyType,
-                    bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler,
-                    ioOpCallbackFactory.createIOOperationCallback(), linearizeCmpFactory, btreeFields, version,
-                    durable);
+            return LSMRTreeUtils
+                    .createExternalRTree(file, diskBufferCache, diskFileMapProvider, typeTraits, rtreeCmpFactories,
+                            btreeCmpFactories, valueProviderFactories, rtreePolicyType, bloomFilterFalsePositiveRate,
+                            mergePolicy, opTracker, ioScheduler, ioOpCallbackFactory.createIOOperationCallback(),
+                            linearizeCmpFactory, btreeFields, version, durable);
         } catch (TreeIndexException e) {
             throw new HyracksDataException(e);
         }
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeDataflowHelperFactory.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeDataflowHelperFactory.java
index 4ec5c13..f3cd002 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeDataflowHelperFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeDataflowHelperFactory.java
@@ -70,7 +70,7 @@
     public IndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition) {
         return new LSMRTreeDataflowHelper(opDesc, ctx, partition,
-                virtualBufferCacheProvider.getVirtualBufferCaches(ctx), bloomFilterFalsePositiveRate,
+                virtualBufferCacheProvider.getVirtualBufferCaches(ctx, opDesc.getFileSplitProvider()), bloomFilterFalsePositiveRate,
                 btreeComparatorFactories, valueProviderFactories, rtreePolicyType,
                 mergePolicyFactory.createMergePolicy(mergePolicyProperties, ctx), opTrackerFactory,
                 ioSchedulerProvider.getIOScheduler(ctx), ioOpCallbackFactory, linearizeCmpFactory, rtreeFields,
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterTuplesDataflowHelperFactory.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterTuplesDataflowHelperFactory.java
index a8c7896..28f43cc 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterTuplesDataflowHelperFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/dataflow/LSMRTreeWithAntiMatterTuplesDataflowHelperFactory.java
@@ -67,7 +67,7 @@
     public IndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx,
             int partition) {
         return new LSMRTreeWithAntiMatterTuplesDataflowHelper(opDesc, ctx, partition,
-                virtualBufferCacheProvider.getVirtualBufferCaches(ctx), btreeComparatorFactories,
+                virtualBufferCacheProvider.getVirtualBufferCaches(ctx, opDesc.getFileSplitProvider()), btreeComparatorFactories,
                 valueProviderFactories, rtreePolicyType, mergePolicyFactory.createMergePolicy(mergePolicyProperties,
                         ctx), opTrackerFactory, ioSchedulerProvider.getIOScheduler(ctx), ioOpCallbackFactory,
                 linearizeCmpFactory, rtreeFields, filterTypeTraits, filterCmpFactories, filterFields, durable);
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
index 533dfac..bb0c8d6 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
@@ -28,9 +28,9 @@
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
 import org.apache.hyracks.storage.am.common.api.IIndexCursor;
 import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
 import org.apache.hyracks.storage.am.common.api.ITreeIndex;
@@ -52,13 +52,11 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
-import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager;
+import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
 import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFilterManager;
-import org.apache.hyracks.storage.am.rtree.api.IRTreeInteriorFrame;
-import org.apache.hyracks.storage.am.rtree.api.IRTreeLeafFrame;
 import org.apache.hyracks.storage.am.rtree.impls.RTree;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
@@ -100,16 +98,16 @@
         int i = 0;
         for (IVirtualBufferCache virtualBufferCache : virtualBufferCaches) {
             RTree memRTree = new RTree(virtualBufferCache, virtualBufferCache.getFileMapProvider(),
-                    new VirtualFreePageManager(virtualBufferCache.getNumPages()), rtreeInteriorFrameFactory,
-                    rtreeLeafFrameFactory, rtreeCmpFactories, fieldCount, new FileReference(new File(
-                            fileManager.getBaseDir() + "_virtual_r_" + i)));
+                    new VirtualMetaDataPageManager(virtualBufferCache.getNumPages()), rtreeInteriorFrameFactory,
+                    rtreeLeafFrameFactory, rtreeCmpFactories, fieldCount,
+                    new FileReference(new File(fileManager.getBaseDir() + "_virtual_r_" + i)));
             BTree memBTree = new BTree(virtualBufferCache, virtualBufferCache.getFileMapProvider(),
-                    new VirtualFreePageManager(virtualBufferCache.getNumPages()), btreeInteriorFrameFactory,
-                    btreeLeafFrameFactory, btreeCmpFactories, btreeCmpFactories.length, new FileReference(new File(
-                            fileManager.getBaseDir() + "_virtual_b_" + i)));
+                    new VirtualMetaDataPageManager(virtualBufferCache.getNumPages()), btreeInteriorFrameFactory,
+                    btreeLeafFrameFactory, btreeCmpFactories, btreeCmpFactories.length,
+                    new FileReference(new File(fileManager.getBaseDir() + "_virtual_b_" + i)));
             LSMRTreeMemoryComponent mutableComponent = new LSMRTreeMemoryComponent(memRTree, memBTree,
-                    virtualBufferCache, i == 0 ? true : false, filterFactory == null ? null
-                            : filterFactory.createLSMComponentFilter());
+                    virtualBufferCache, i == 0 ? true : false,
+                    filterFactory == null ? null : filterFactory.createLSMComponentFilter());
             memoryComponents.add(mutableComponent);
             ++i;
         }
@@ -169,15 +167,6 @@
         if (isActivated) {
             throw new HyracksDataException("Failed to activate the index since it is already activated.");
         }
-
-        for (ILSMComponent c : memoryComponents) {
-            LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
-            ((IVirtualBufferCache) mutableComponent.getRTree().getBufferCache()).open();
-            mutableComponent.getRTree().create();
-            mutableComponent.getBTree().create();
-            mutableComponent.getRTree().activate();
-            mutableComponent.getBTree().activate();
-        }
     }
 
     @Override
@@ -196,15 +185,7 @@
                 throw new HyracksDataException(e);
             }
         }
-
-        for (ILSMComponent c : memoryComponents) {
-            LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
-            mutableComponent.getRTree().deactivate();
-            mutableComponent.getBTree().deactivate();
-            mutableComponent.getRTree().destroy();
-            mutableComponent.getBTree().destroy();
-            ((IVirtualBufferCache) mutableComponent.getRTree().getBufferCache()).close();
-        }
+        deallocateMemoryComponents();
     }
 
     @Override
@@ -219,13 +200,7 @@
         if (!isActivated) {
             throw new HyracksDataException("Failed to clear the index since it is not activated.");
         }
-
-        for (ILSMComponent c : memoryComponents) {
-            LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
-            mutableComponent.getRTree().clear();
-            mutableComponent.getBTree().clear();
-            mutableComponent.reset();
-        }
+        clearMemoryComponents();
     }
 
     @Override
@@ -234,26 +209,18 @@
         List<ILSMComponent> immutableComponents = diskComponents;
         int cmc = currentMutableComponentId.get();
         ctx.setCurrentMutableComponentId(cmc);
-        int numMutableComponents = memoryComponents.size();
         operationalComponents.clear();
         switch (ctx.getOperation()) {
             case INSERT:
             case DELETE:
             case FLUSH:
+            case UPSERT:
                 operationalComponents.add(memoryComponents.get(cmc));
                 break;
             case SEARCH:
-                for (int i = 0; i < numMutableComponents - 1; i++) {
-                    ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
-                    LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
-                    if (mutableComponent.isReadable()) {
-                        // Make sure newest components are added first
-                        operationalComponents.add(0, mutableComponent);
-                    }
+                if (memoryComponentsAllocated) {
+                    addOperationalMutableComponents(operationalComponents);
                 }
-                // The current mutable component is always added
-                operationalComponents.add(0, memoryComponents.get(cmc));
-
                 if (filterManager != null) {
                     for (ILSMComponent c : immutableComponents) {
                         if (c.getLSMComponentFilter().satisfy(
@@ -266,7 +233,6 @@
                 } else {
                     operationalComponents.addAll(immutableComponents);
                 }
-
                 break;
             case MERGE:
                 operationalComponents.addAll(ctx.getComponentsToBeMerged());
@@ -286,13 +252,7 @@
     public void search(ILSMIndexOperationContext ictx, IIndexCursor cursor, ISearchPredicate pred)
             throws HyracksDataException, IndexException {
         LSMRTreeOpContext ctx = (LSMRTreeOpContext) ictx;
-        List<ILSMComponent> operationalComponents = ictx.getComponentHolder();
-
-        LSMRTreeCursorInitialState initialState = new LSMRTreeCursorInitialState(rtreeLeafFrameFactory,
-                rtreeInteriorFrameFactory, btreeLeafFrameFactory, ctx.getBTreeMultiComparator(), lsmHarness,
-                comparatorFields, linearizerArray, ctx.searchCallback, operationalComponents);
-
-        cursor.open(initialState, pred);
+        cursor.open(ctx.searchInitialState, pred);
     }
 
     protected LSMComponentFileReferences getMergeTargetFileName(List<ILSMComponent> mergingDiskComponents)
@@ -300,8 +260,8 @@
         RTree firstTree = ((LSMRTreeDiskComponent) mergingDiskComponents.get(0)).getRTree();
         RTree lastTree = ((LSMRTreeDiskComponent) mergingDiskComponents.get(mergingDiskComponents.size() - 1))
                 .getRTree();
-        FileReference firstFile = diskFileMapProvider.lookupFileName(firstTree.getFileId());
-        FileReference lastFile = diskFileMapProvider.lookupFileName(lastTree.getFileId());
+        FileReference firstFile = firstTree.getFileReference();
+        FileReference lastFile = lastTree.getFileReference();
         LSMComponentFileReferences fileRefs = fileManager.getRelMergeFileReference(firstFile.getFile().getName(),
                 lastFile.getFile().getName());
         return fileRefs;
@@ -309,25 +269,21 @@
 
     protected LSMRTreeDiskComponent createDiskComponent(ILSMComponentFactory factory, FileReference insertFileRef,
             FileReference deleteFileRef, FileReference bloomFilterFileRef, boolean createComponent)
-            throws HyracksDataException, IndexException {
+                    throws HyracksDataException, IndexException {
         // Create new tree instance.
-        LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) factory
-                .createLSMComponentInstance(new LSMComponentFileReferences(insertFileRef, deleteFileRef,
-                        bloomFilterFileRef));
-        if (createComponent) {
-            component.getRTree().create();
-            if (component.getBTree() != null) {
-                component.getBTree().create();
-                component.getBloomFilter().create();
-            }
-        }
+        LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) factory.createLSMComponentInstance(
+                new LSMComponentFileReferences(insertFileRef, deleteFileRef, bloomFilterFileRef));
         // Tree will be closed during cleanup of merge().
-        component.getRTree().activate();
+        if (!createComponent) {
+            component.getRTree().activate();
+        }
         if (component.getBTree() != null) {
-            component.getBTree().activate();
+            if (!createComponent) {
+                component.getBTree().activate();
+            }
             component.getBloomFilter().activate();
         }
-        if (component.getLSMComponentFilter() != null) {
+        if (component.getLSMComponentFilter() != null && !createComponent) {
             filterManager.readFilterInfo(component.getLSMComponentFilter(), component.getRTree());
         }
         return component;
@@ -348,10 +304,10 @@
     }
 
     @Override
-    public IFreePageManager getFreePageManager() {
+    public IMetaDataPageManager getMetaManager() {
         LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents
                 .get(currentMutableComponentId.get());
-        return mutableComponent.getRTree().getFreePageManager();
+        return mutableComponent.getRTree().getMetaManager();
     }
 
     @Override
@@ -390,8 +346,8 @@
             indexTuple = tuple;
         }
 
-        ctx.modificationCallback.before(indexTuple);
-        ctx.modificationCallback.found(null, indexTuple);
+        ctx.getModificationCallback().before(indexTuple);
+        ctx.getModificationCallback().found(null, indexTuple);
         if (ctx.getOperation() == IndexOperation.INSERT) {
             ctx.currentMutableRTreeAccessor.insert(indexTuple);
         } else {
@@ -407,16 +363,16 @@
         }
         if (ctx.filterTuple != null) {
             ctx.filterTuple.reset(tuple);
-            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter()
-                    .update(ctx.filterTuple, ctx.filterCmp);
+            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter().update(ctx.filterTuple,
+                    ctx.filterCmp);
         }
     }
 
     protected LSMRTreeOpContext createOpContext(IModificationOperationCallback modCallback) {
-        return new LSMRTreeOpContext(memoryComponents, (IRTreeLeafFrame) rtreeLeafFrameFactory.createFrame(),
-                (IRTreeInteriorFrame) rtreeInteriorFrameFactory.createFrame(), btreeLeafFrameFactory,
-                btreeInteriorFrameFactory, rtreeCmpFactories, btreeCmpFactories, modCallback,
-                NoOpOperationCallback.INSTANCE, rtreeFields, filterFields);
+        return new LSMRTreeOpContext(memoryComponents, rtreeLeafFrameFactory, rtreeInteriorFrameFactory,
+                btreeLeafFrameFactory, btreeInteriorFrameFactory, rtreeCmpFactories, btreeCmpFactories, modCallback,
+                NoOpOperationCallback.INSTANCE, rtreeFields, filterFields, lsmHarness, comparatorFields,
+                linearizerArray);
     }
 
     @Override
@@ -449,4 +405,63 @@
     public String toString() {
         return "LSMRTree [" + fileManager.getBaseDir() + "]";
     }
+
+    @Override
+    public synchronized void allocateMemoryComponents() throws HyracksDataException {
+        if (!isActivated) {
+            throw new HyracksDataException("Failed to allocate memory components since the index is not active.");
+        }
+        if (memoryComponentsAllocated) {
+            return;
+        }
+        for (ILSMComponent c : memoryComponents) {
+            LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
+            ((IVirtualBufferCache) mutableComponent.getRTree().getBufferCache()).open();
+            mutableComponent.getRTree().create();
+            mutableComponent.getBTree().create();
+            mutableComponent.getRTree().activate();
+            mutableComponent.getBTree().activate();
+        }
+        memoryComponentsAllocated = true;
+    }
+
+    private void addOperationalMutableComponents(List<ILSMComponent> operationalComponents) {
+        int cmc = currentMutableComponentId.get();
+        int numMutableComponents = memoryComponents.size();
+        for (int i = 0; i < numMutableComponents - 1; i++) {
+            ILSMComponent c = memoryComponents.get((cmc + i + 1) % numMutableComponents);
+            LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
+            if (mutableComponent.isReadable()) {
+                // Make sure newest components are added first
+                operationalComponents.add(0, mutableComponent);
+            }
+        }
+        // The current mutable component is always added
+        operationalComponents.add(0, memoryComponents.get(cmc));
+    }
+
+    private synchronized void clearMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
+                mutableComponent.getRTree().clear();
+                mutableComponent.getBTree().clear();
+                mutableComponent.reset();
+            }
+        }
+    }
+
+    private synchronized void deallocateMemoryComponents() throws HyracksDataException {
+        if (memoryComponentsAllocated) {
+            for (ILSMComponent c : memoryComponents) {
+                LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c;
+                mutableComponent.getRTree().deactivate();
+                mutableComponent.getBTree().deactivate();
+                mutableComponent.getRTree().destroy();
+                mutableComponent.getBTree().destroy();
+                ((IVirtualBufferCache) mutableComponent.getRTree().getBufferCache()).close();
+            }
+            memoryComponentsAllocated = false;
+        }
+    }
 }
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java
index d867af2..492af2d 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java
@@ -55,10 +55,10 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.ITwoPCIndex;
+import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
 import org.apache.hyracks.storage.am.lsm.common.impls.ExternalIndexHarness;
 import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences;
-import org.apache.hyracks.storage.am.lsm.common.impls.LSMOperationType;
 import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory;
 import org.apache.hyracks.storage.am.rtree.impls.RTree;
 import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate;
@@ -68,7 +68,7 @@
  * This is an lsm r-tree that does not have memory component and is modified
  * only by bulk loading and addition of disk components as of this point, it is
  * intended for use with external dataset indexes only.
- * 
+ *
  * @author alamouda
  */
 public class ExternalRTree extends LSMRTree implements ITwoPCIndex {
@@ -82,16 +82,15 @@
     private int version = -1;
     private final int fieldCount;
 
-    public ExternalRTree(ITreeIndexFrameFactory rtreeInteriorFrameFactory,
-            ITreeIndexFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory,
-            ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileNameManager,
-            TreeIndexFactory<RTree> diskRTreeFactory, TreeIndexFactory<BTree> diskBTreeFactory,
-            BloomFilterFactory bloomFilterFactory, double bloomFilterFalsePositiveRate,
-            IFileMapProvider diskFileMapProvider, int fieldCount, IBinaryComparatorFactory[] rtreeCmpFactories,
-            IBinaryComparatorFactory[] btreeCmpFactories, ILinearizeComparatorFactory linearizer,
-            int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, ILSMMergePolicy mergePolicy,
-            ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback,
-            int[] buddyBTreeFields, int version, boolean durable) {
+    public ExternalRTree(ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory,
+            ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory,
+            ILSMIndexFileManager fileNameManager, TreeIndexFactory<RTree> diskRTreeFactory,
+            TreeIndexFactory<BTree> diskBTreeFactory, BloomFilterFactory bloomFilterFactory,
+            double bloomFilterFalsePositiveRate, IFileMapProvider diskFileMapProvider, int fieldCount,
+            IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories,
+            ILinearizeComparatorFactory linearizer, int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray,
+            ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler,
+            ILSMIOOperationCallback ioOpCallback, int[] buddyBTreeFields, int version, boolean durable) {
         super(rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory,
                 fileNameManager, diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, bloomFilterFalsePositiveRate,
                 diskFileMapProvider, fieldCount, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields,
@@ -267,12 +266,9 @@
             throws HyracksDataException, IndexException {
         ExternalRTreeOpContext ctx = (ExternalRTreeOpContext) ictx;
         List<ILSMComponent> operationalComponents = ictx.getComponentHolder();
+        ctx.initialState.setOperationalComponents(operationalComponents);
 
-        LSMRTreeCursorInitialState initialState = new LSMRTreeCursorInitialState(rtreeLeafFrameFactory,
-                rtreeInteriorFrameFactory, btreeLeafFrameFactory, ctx.getBTreeMultiComparator(), lsmHarness,
-                comparatorFields, linearizerArray, ctx.searchCallback, operationalComponents);
-
-        cursor.open(initialState, pred);
+        cursor.open(ctx.initialState, pred);
     }
 
     // The only reason for overriding the merge method is the way to determine
@@ -303,7 +299,7 @@
             search(opCtx, btreeCursor, rtreeSearchPred);
 
             BTree btree = mergedComponent.getBTree();
-            IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false);
+            IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false, true);
 
             long numElements = 0L;
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
@@ -331,7 +327,7 @@
             btreeBulkLoader.end();
         }
 
-        IIndexBulkLoader bulkLoader = mergedComponent.getRTree().createBulkLoader(1.0f, false, 0L, false);
+        IIndexBulkLoader bulkLoader = mergedComponent.getRTree().createBulkLoader(1.0f, false, 0L, false, true);
         try {
             while (cursor.hasNext()) {
                 cursor.next();
@@ -558,9 +554,9 @@
 
             // Create the three loaders
             rtreeBulkLoader = ((LSMRTreeDiskComponent) component).getRTree().createBulkLoader(fillFactor, verifyInput,
-                    numElementsHint, false);
-            btreeBulkLoader = (BTreeBulkLoader) ((LSMRTreeDiskComponent) component).getBTree().createBulkLoader(
-                    fillFactor, verifyInput, numElementsHint, false);
+                    numElementsHint, false, true);
+            btreeBulkLoader = (BTreeBulkLoader) ((LSMRTreeDiskComponent) component).getBTree()
+                    .createBulkLoader(fillFactor, verifyInput, numElementsHint, false, true);
             int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElementsHint);
             BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
                     bloomFilterFalsePositiveRate);
@@ -681,11 +677,12 @@
         // set the keepDeletedTuples flag
         boolean keepDeleteTuples = false;
         if (version == 0) {
-            keepDeleteTuples = mergeOp.getMergingComponents().get(mergeOp.getMergingComponents().size() - 1) != diskComponents
-                    .get(diskComponents.size() - 1);
+            keepDeleteTuples = mergeOp.getMergingComponents()
+                    .get(mergeOp.getMergingComponents().size() - 1) != diskComponents.get(diskComponents.size() - 1);
         } else {
-            keepDeleteTuples = mergeOp.getMergingComponents().get(mergeOp.getMergingComponents().size() - 1) != secondDiskComponents
-                    .get(secondDiskComponents.size() - 1);
+            keepDeleteTuples = mergeOp.getMergingComponents()
+                    .get(mergeOp.getMergingComponents().size() - 1) != secondDiskComponents
+                            .get(secondDiskComponents.size() - 1);
         }
         mergeOp.setKeepDeletedTuples(keepDeleteTuples);
 
@@ -700,7 +697,9 @@
 
     // This method creates the appropriate opContext for the targeted version
     public ExternalRTreeOpContext createOpContext(ISearchOperationCallback searchCallback, int targetVersion) {
-        return new ExternalRTreeOpContext(rtreeCmpFactories, btreeCmpFactories, searchCallback, targetVersion);
+        return new ExternalRTreeOpContext(rtreeCmpFactories, btreeCmpFactories, searchCallback, targetVersion,
+                lsmHarness, comparatorFields, linearizerArray, rtreeLeafFrameFactory, rtreeInteriorFrameFactory,
+                btreeLeafFrameFactory);
     }
 
     // The accessor for disk only indexes don't use modification callback and
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTreeOpContext.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTreeOpContext.java
index 6e27825..6a9a640 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTreeOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTreeOpContext.java
@@ -25,9 +25,11 @@
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
 
 public class ExternalRTreeOpContext implements ILSMIndexOperationContext {
@@ -40,11 +42,13 @@
     public final ISearchOperationCallback searchCallback;
     private final int targetIndexVersion;
     public ISearchPredicate searchPredicate;
+    public LSMRTreeCursorInitialState initialState;
 
     public ExternalRTreeOpContext(IBinaryComparatorFactory[] rtreeCmpFactories,
             IBinaryComparatorFactory[] btreeCmpFactories, ISearchOperationCallback searchCallback,
-            int targetIndexVersion) {
-
+            int targetIndexVersion, ILSMHarness lsmHarness, int[] comparatorFields,
+            IBinaryComparatorFactory[] linearizerArray, ITreeIndexFrameFactory rtreeLeafFrameFactory,
+            ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory) {
         this.componentHolder = new LinkedList<ILSMComponent>();
         this.componentsToBeMerged = new LinkedList<ILSMComponent>();
         this.componentsToBeReplicated = new LinkedList<ILSMComponent>();
@@ -52,8 +56,12 @@
         this.targetIndexVersion = targetIndexVersion;
         this.bTreeCmp = MultiComparator.create(btreeCmpFactories);
         this.rTreeCmp = MultiComparator.create(rtreeCmpFactories);
+        initialState = new LSMRTreeCursorInitialState(rtreeLeafFrameFactory, rtreeInteriorFrameFactory,
+                btreeLeafFrameFactory, bTreeCmp, lsmHarness, comparatorFields, linearizerArray, searchCallback,
+                componentHolder);
     }
 
+    @Override
     public void setOperation(IndexOperation newOp) {
         reset();
         this.op = newOp;
@@ -123,4 +131,4 @@
     public List<ILSMComponent> getComponentsToBeReplicated() {
         return componentsToBeReplicated;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
index f5be6c8..3c91d62 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
@@ -73,7 +73,6 @@
 import org.apache.hyracks.storage.am.rtree.impls.RTree;
 import org.apache.hyracks.storage.am.rtree.impls.RTreeSearchCursor;
 import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate;
-import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public class LSMRTree extends AbstractLSMRTree {
@@ -92,11 +91,11 @@
             ILSMIOOperationCallback ioOpCallback, int[] rtreeFields, int[] buddyBTreeFields, int[] filterFields,
             boolean durable) {
         super(virtualBufferCaches, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory,
-                btreeLeafFrameFactory, fileNameManager, new LSMRTreeDiskComponentFactory(diskRTreeFactory,
-                        diskBTreeFactory, bloomFilterFactory, filterFactory), diskFileMapProvider, fieldCount,
-                rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, linearizerArray,
-                bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, filterFactory,
-                filterFrameFactory, filterManager, rtreeFields, filterFields, durable);
+                btreeLeafFrameFactory, fileNameManager,
+                new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, filterFactory),
+                diskFileMapProvider, fieldCount, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields,
+                linearizerArray, bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback,
+                filterFactory, filterFrameFactory, filterManager, rtreeFields, filterFields, durable);
         this.buddyBTreeFields = buddyBTreeFields;
     }
 
@@ -113,19 +112,17 @@
             ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler,
             ILSMIOOperationCallback ioOpCallback, int[] buddyBTreeFields, boolean durable) {
         super(rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, btreeLeafFrameFactory,
-                fileNameManager, new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory,
-                        bloomFilterFactory, null), diskFileMapProvider, fieldCount, rtreeCmpFactories,
-                btreeCmpFactories, linearizer, comparatorFields, linearizerArray, bloomFilterFalsePositiveRate,
-                mergePolicy, opTracker, ioScheduler, ioOpCallback, durable);
+                fileNameManager,
+                new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, null),
+                diskFileMapProvider, fieldCount, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields,
+                linearizerArray, bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback,
+                durable);
         this.buddyBTreeFields = buddyBTreeFields;
     }
 
     /**
      * Opens LSMRTree, cleaning up invalid files from base dir, and registering
      * all valid files as on-disk RTrees and BTrees.
-     * 
-     * @param fileReference
-     *            Dummy file id.
      * @throws HyracksDataException
      */
     @Override
@@ -163,8 +160,8 @@
             RTree rtree = component.getRTree();
             BTree btree = component.getBTree();
             BloomFilter bloomFilter = component.getBloomFilter();
-            rtree.deactivate();
-            btree.deactivate();
+            rtree.deactivateCloseHandle();
+            btree.deactivateCloseHandle();
             bloomFilter.deactivate();
         }
         isActivated = false;
@@ -213,9 +210,9 @@
         rctx.setOperation(IndexOperation.FLUSH);
         rctx.getComponentHolder().addAll(ctx.getComponentHolder());
         LSMRTreeAccessor accessor = new LSMRTreeAccessor(lsmHarness, rctx);
-        ioScheduler.scheduleOperation(new LSMRTreeFlushOperation(accessor, flushingComponent, componentFileRefs
-                .getInsertIndexFileReference(), componentFileRefs.getDeleteIndexFileReference(), componentFileRefs
-                .getBloomFilterFileReference(), callback, fileManager.getBaseDir()));
+        ioScheduler.scheduleOperation(new LSMRTreeFlushOperation(accessor, flushingComponent,
+                componentFileRefs.getInsertIndexFileReference(), componentFileRefs.getDeleteIndexFileReference(),
+                componentFileRefs.getBloomFilterFileReference(), callback, fileManager.getBaseDir()));
     }
 
     @Override
@@ -227,8 +224,8 @@
         // The RTree should be renamed before the BTree.
 
         // scan the memory RTree
-        ITreeIndexAccessor memRTreeAccessor = flushingComponent.getRTree().createAccessor(
-                NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+        ITreeIndexAccessor memRTreeAccessor = flushingComponent.getRTree()
+                .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
         RTreeSearchCursor rtreeScanCursor = (RTreeSearchCursor) memRTreeAccessor.createSearchCursor(false);
         SearchPredicate rtreeNullPredicate = new SearchPredicate(null, null);
         memRTreeAccessor.search(rtreeScanCursor, rtreeNullPredicate);
@@ -256,12 +253,12 @@
         } finally {
             rtreeScanCursor.close();
         }
+        rTreeTupleSorter.sort();
+
+        rTreeBulkloader = diskRTree.createBulkLoader(1.0f, false, 0L, false, true);
+        cursor = rTreeTupleSorter;
+
         if (!isEmpty) {
-            rTreeTupleSorter.sort();
-
-            rTreeBulkloader = diskRTree.createBulkLoader(1.0f, false, 0L, false);
-            cursor = rTreeTupleSorter;
-
             try {
                 while (cursor.hasNext()) {
                     cursor.next();
@@ -271,11 +268,12 @@
             } finally {
                 cursor.close();
             }
-            rTreeBulkloader.end();
         }
 
-        ITreeIndexAccessor memBTreeAccessor = flushingComponent.getBTree().createAccessor(
-                NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+        rTreeBulkloader.end();
+
+        ITreeIndexAccessor memBTreeAccessor = flushingComponent.getBTree()
+                .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
         RangePredicate btreeNullPredicate = new RangePredicate(null, null, true, true, null, null);
         IIndexCursor btreeCountingCursor = ((BTreeAccessor) memBTreeAccessor).createCountingSearchCursor();
         memBTreeAccessor.search(btreeCountingCursor, btreeNullPredicate);
@@ -290,32 +288,29 @@
             btreeCountingCursor.close();
         }
 
-        if (numBTreeTuples > 0) {
-            int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numBTreeTuples);
-            BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
-                    bloomFilterFalsePositiveRate);
+        int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numBTreeTuples);
+        BloomFilterSpecification bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement,
+                bloomFilterFalsePositiveRate);
 
-            IIndexCursor btreeScanCursor = memBTreeAccessor.createSearchCursor(false);
-            memBTreeAccessor.search(btreeScanCursor, btreeNullPredicate);
-            BTree diskBTree = component.getBTree();
+        IIndexCursor btreeScanCursor = memBTreeAccessor.createSearchCursor(false);
+        memBTreeAccessor.search(btreeScanCursor, btreeNullPredicate);
+        BTree diskBTree = component.getBTree();
 
-            // BulkLoad the tuples from the in-memory tree into the new disk BTree.
-            IIndexBulkLoader bTreeBulkloader = diskBTree.createBulkLoader(1.0f, false, numBTreeTuples, false);
-            IIndexBulkLoader builder = component.getBloomFilter().createBuilder(numBTreeTuples,
-                    bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements());
-            // scan the memory BTree
-            try {
-                while (btreeScanCursor.hasNext()) {
-                    btreeScanCursor.next();
-                    ITupleReference frameTuple = btreeScanCursor.getTuple();
-                    bTreeBulkloader.add(frameTuple);
-                    builder.add(frameTuple);
-                }
-            } finally {
-                btreeScanCursor.close();
-                builder.end();
+        // BulkLoad the tuples from the in-memory tree into the new disk BTree.
+        IIndexBulkLoader bTreeBulkloader = diskBTree.createBulkLoader(1.0f, false, numBTreeTuples, false, true);
+        IIndexBulkLoader builder = component.getBloomFilter().createBuilder(numBTreeTuples,
+                bloomFilterSpec.getNumHashes(), bloomFilterSpec.getNumBucketsPerElements());
+        // scan the memory BTree
+        try {
+            while (btreeScanCursor.hasNext()) {
+                btreeScanCursor.next();
+                ITupleReference frameTuple = btreeScanCursor.getTuple();
+                bTreeBulkloader.add(frameTuple);
+                builder.add(frameTuple);
             }
-            bTreeBulkloader.end();
+        } finally {
+            btreeScanCursor.close();
+            builder.end();
         }
 
         if (component.getLSMComponentFilter() != null) {
@@ -326,6 +321,8 @@
             filterManager.writeFilterInfo(component.getLSMComponentFilter(), component.getRTree());
         }
 
+        bTreeBulkloader.end();
+
         return component;
     }
 
@@ -338,9 +335,9 @@
         ITreeIndexCursor cursor = new LSMRTreeSortedCursor(rctx, linearizer, buddyBTreeFields);
         LSMComponentFileReferences relMergeFileRefs = getMergeTargetFileName(mergingComponents);
         ILSMIndexAccessorInternal accessor = new LSMRTreeAccessor(lsmHarness, rctx);
-        ioScheduler.scheduleOperation(new LSMRTreeMergeOperation(accessor, mergingComponents, cursor, relMergeFileRefs
-                .getInsertIndexFileReference(), relMergeFileRefs.getDeleteIndexFileReference(), relMergeFileRefs
-                .getBloomFilterFileReference(), callback, fileManager.getBaseDir()));
+        ioScheduler.scheduleOperation(new LSMRTreeMergeOperation(accessor, mergingComponents, cursor,
+                relMergeFileRefs.getInsertIndexFileReference(), relMergeFileRefs.getDeleteIndexFileReference(),
+                relMergeFileRefs.getBloomFilterFileReference(), callback, fileManager.getBaseDir()));
     }
 
     @Override
@@ -357,6 +354,8 @@
 
         // In case we must keep the deleted-keys BTrees, then they must be merged *before* merging the r-trees so that
         // lsmHarness.endSearch() is called once when the r-trees have been merged.
+        BTree btree = mergedComponent.getBTree();
+        IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false, true);
         if (mergeOp.getMergingComponents().get(mergeOp.getMergingComponents().size() - 1) != diskComponents
                 .get(diskComponents.size() - 1)) {
             // Keep the deleted tuples since the oldest disk component is not included in the merge operation
@@ -364,9 +363,6 @@
             LSMRTreeDeletedKeysBTreeMergeCursor btreeCursor = new LSMRTreeDeletedKeysBTreeMergeCursor(opCtx);
             search(opCtx, btreeCursor, rtreeSearchPred);
 
-            BTree btree = mergedComponent.getBTree();
-            IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false);
-
             long numElements = 0L;
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
                 numElements += ((LSMRTreeDiskComponent) mergeOp.getMergingComponents().get(i)).getBloomFilter()
@@ -390,21 +386,8 @@
                 btreeCursor.close();
                 builder.end();
             }
-            btreeBulkLoader.end();
         }
 
-        IIndexBulkLoader bulkLoader = mergedComponent.getRTree().createBulkLoader(1.0f, false, 0L, false);
-        try {
-            while (cursor.hasNext()) {
-                cursor.next();
-                ITupleReference frameTuple = cursor.getTuple();
-                bulkLoader.add(frameTuple);
-            }
-        } finally {
-            cursor.close();
-        }
-        bulkLoader.end();
-
         if (mergedComponent.getLSMComponentFilter() != null) {
             List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
@@ -414,6 +397,19 @@
             filterManager.updateFilterInfo(mergedComponent.getLSMComponentFilter(), filterTuples);
             filterManager.writeFilterInfo(mergedComponent.getLSMComponentFilter(), mergedComponent.getRTree());
         }
+        btreeBulkLoader.end();
+
+        IIndexBulkLoader bulkLoader = mergedComponent.getRTree().createBulkLoader(1.0f, false, 0L, false, true);
+        try {
+            while (cursor.hasNext()) {
+                cursor.next();
+                ITupleReference frameTuple = cursor.getTuple();
+                bulkLoader.add(frameTuple);
+            }
+        } finally {
+            cursor.close();
+        }
+        bulkLoader.end();
 
         return mergedComponent;
     }
@@ -496,8 +492,8 @@
             indexTuple = tuple;
         }
 
-        ctx.modificationCallback.before(indexTuple);
-        ctx.modificationCallback.found(null, indexTuple);
+        ctx.getModificationCallback().before(indexTuple);
+        ctx.getModificationCallback().found(null, indexTuple);
         if (ctx.getOperation() == IndexOperation.INSERT) {
             ctx.currentMutableRTreeAccessor.insert(indexTuple);
         } else {
@@ -512,22 +508,23 @@
         }
         if (ctx.filterTuple != null) {
             ctx.filterTuple.reset(tuple);
-            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter()
-                    .update(ctx.filterTuple, ctx.filterCmp);
+            memoryComponents.get(currentMutableComponentId.get()).getLSMComponentFilter().update(ctx.filterTuple,
+                    ctx.filterCmp);
         }
     }
 
     public class LSMRTreeBulkLoader implements IIndexBulkLoader {
         private final ILSMComponent component;
         private final IIndexBulkLoader bulkLoader;
+        private final IIndexBulkLoader buddyBTreeBulkloader;
         private boolean cleanedUpArtifacts = false;
         private boolean isEmptyComponent = true;
         public final PermutingTupleReference indexTuple;
         public final PermutingTupleReference filterTuple;
         public final MultiComparator filterCmp;
 
-        public LSMRTreeBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint, boolean checkIfEmptyIndex)
-                throws TreeIndexException, HyracksDataException {
+        public LSMRTreeBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+                boolean checkIfEmptyIndex) throws TreeIndexException, HyracksDataException {
             if (checkIfEmptyIndex && !isEmptyIndex()) {
                 throw new TreeIndexException("Cannot load an index that is not empty");
             }
@@ -539,8 +536,9 @@
                 throw new TreeIndexException(e);
             }
             bulkLoader = ((LSMRTreeDiskComponent) component).getRTree().createBulkLoader(fillFactor, verifyInput,
-                    numElementsHint, false);
-
+                    numElementsHint, false, true);
+            buddyBTreeBulkloader = ((LSMRTreeDiskComponent) component).getBTree().createBulkLoader(fillFactor,
+                    verifyInput, numElementsHint, false, true);
             if (filterFields != null) {
                 indexTuple = new PermutingTupleReference(rtreeFields);
                 filterCmp = MultiComparator.create(component.getLSMComponentFilter().getFilterCmpFactories());
@@ -581,13 +579,15 @@
         @Override
         public void end() throws HyracksDataException, IndexException {
             if (!cleanedUpArtifacts) {
-                bulkLoader.end();
 
                 if (component.getLSMComponentFilter() != null) {
                     filterManager.writeFilterInfo(component.getLSMComponentFilter(),
                             ((LSMRTreeDiskComponent) component).getRTree());
                 }
 
+                bulkLoader.end();
+                buddyBTreeBulkloader.end();
+
                 if (isEmptyComponent) {
                     cleanupArtifacts();
                 } else {
@@ -596,6 +596,16 @@
             }
         }
 
+        @Override
+        public void abort() throws HyracksDataException {
+            if (bulkLoader != null) {
+                bulkLoader.abort();
+            }
+            if (buddyBTreeBulkloader != null) {
+                buddyBTreeBulkloader.abort();
+            }
+        }
+
         protected void cleanupArtifacts() throws HyracksDataException {
             if (!cleanedUpArtifacts) {
                 cleanedUpArtifacts = true;
@@ -612,28 +622,26 @@
     @Override
     public void markAsValid(ILSMComponent lsmComponent) throws HyracksDataException {
         LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) lsmComponent;
-        // Flush the bloom filter first.
-        int fileId = component.getBloomFilter().getFileId();
-        IBufferCache bufferCache = component.getBTree().getBufferCache();
-        int startPage = 0;
-        int maxPage = component.getBloomFilter().getNumPages();
-        forceFlushDirtyPages(bufferCache, fileId, startPage, maxPage);
-        forceFlushDirtyPages(component.getRTree());
-        markAsValidInternal(component.getRTree());
-        forceFlushDirtyPages(component.getBTree());
-        markAsValidInternal(component.getBTree());
+        markAsValidInternal(component.getBTree().getBufferCache(), component.getBloomFilter());
+        markAsValidInternal((component).getBTree());
+        markAsValidInternal((component).getRTree());
+    }
+
+    @Override
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        if (!appendOnly)
+            throw new UnsupportedOperationException("LSM indexes don't support in-place modification");
+        return createBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex);
     }
 
     @Override
     public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) {
         Set<String> files = new HashSet<String>();
-
         LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) lsmComponent;
-
-        files.add(component.getBTree().getFileReference().toString());
-        files.add(component.getRTree().getFileReference().toString());
-        files.add(component.getBloomFilter().getFileReference().toString());
-
+        files.add(component.getBTree().getFileReference().getFile().getAbsolutePath());
+        files.add(component.getRTree().getFileReference().getFile().getAbsolutePath());
+        files.add(component.getBloomFilter().getFileReference().getFile().getAbsolutePath());
         return files;
     }
 
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java
index 6715d0e..c8f05c2 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java
@@ -24,11 +24,11 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
+import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor;
 import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor;
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.common.api.ICursorInitialState;
 import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
@@ -40,6 +40,7 @@
 import org.apache.hyracks.storage.am.rtree.api.IRTreeInteriorFrame;
 import org.apache.hyracks.storage.am.rtree.api.IRTreeLeafFrame;
 import org.apache.hyracks.storage.am.rtree.impls.RTree;
+import org.apache.hyracks.storage.am.rtree.impls.RTree.RTreeAccessor;
 import org.apache.hyracks.storage.am.rtree.impls.RTreeSearchCursor;
 import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -49,9 +50,9 @@
 
     protected boolean open;
     protected RTreeSearchCursor[] rtreeCursors;
-    protected ITreeIndexCursor[] btreeCursors;
-    protected ITreeIndexAccessor[] rtreeAccessors;
-    protected ITreeIndexAccessor[] btreeAccessors;
+    protected BTreeRangeSearchCursor[] btreeCursors;
+    protected RTreeAccessor[] rtreeAccessors;
+    protected BTreeAccessor[] btreeAccessors;
     private MultiComparator btreeCmp;
     protected int numberOfTrees;
     protected SearchPredicate rtreeSearchPredicate;
@@ -65,8 +66,8 @@
     protected List<ILSMComponent> operationalComponents;
 
     public LSMRTreeAbstractCursor(ILSMIndexOperationContext opCtx) {
-        super();
         this.opCtx = opCtx;
+        btreeRangePredicate = new RangePredicate(null, null, true, true, null, null);
     }
 
     public RTreeSearchCursor getCursor(int cursorIndex) {
@@ -76,16 +77,23 @@
     @Override
     public void open(ICursorInitialState initialState, ISearchPredicate searchPred) throws HyracksDataException {
         LSMRTreeCursorInitialState lsmInitialState = (LSMRTreeCursorInitialState) initialState;
-        btreeCmp = lsmInitialState.getBTreeCmp();
-
+        if (btreeCmp == null) {
+            btreeCmp = lsmInitialState.getBTreeCmp();
+            btreeRangePredicate.setLowKeyCmp(btreeCmp);
+            btreeRangePredicate.setHighKeyCmp(btreeCmp);
+        }
         operationalComponents = lsmInitialState.getOperationalComponents();
         lsmHarness = lsmInitialState.getLSMHarness();
         numberOfTrees = operationalComponents.size();
 
-        rtreeCursors = new RTreeSearchCursor[numberOfTrees];
-        btreeCursors = new ITreeIndexCursor[numberOfTrees];
-        rtreeAccessors = new ITreeIndexAccessor[numberOfTrees];
-        btreeAccessors = new ITreeIndexAccessor[numberOfTrees];
+        int numComponenets = operationalComponents.size();
+        if (rtreeCursors == null || rtreeCursors.length != numComponenets) {
+            // object creation: should be relatively low
+            rtreeCursors = new RTreeSearchCursor[numberOfTrees];
+            btreeCursors = new BTreeRangeSearchCursor[numberOfTrees];
+            rtreeAccessors = new RTreeAccessor[numberOfTrees];
+            btreeAccessors = new BTreeAccessor[numberOfTrees];
+        }
 
         includeMutableComponent = false;
         for (int i = 0; i < numberOfTrees; i++) {
@@ -95,26 +103,52 @@
             if (component.getType() == LSMComponentType.MEMORY) {
                 includeMutableComponent = true;
                 // No need for a bloom filter for the in-memory BTree.
-                btreeCursors[i] = new BTreeRangeSearchCursor((IBTreeLeafFrame) lsmInitialState
-                        .getBTreeLeafFrameFactory().createFrame(), false);
-                rtree = (RTree) ((LSMRTreeMemoryComponent) component).getRTree();
-                btree = (BTree) ((LSMRTreeMemoryComponent) component).getBTree();
+                if (btreeCursors[i] == null || btreeCursors[i].isBloomFilterAware()) {
+                    //create
+                    btreeCursors[i] = new BTreeRangeSearchCursor(
+                            (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame(), false);
+                } else {
+                    //re-use
+                    btreeCursors[i].reset();
+                }
+                rtree = ((LSMRTreeMemoryComponent) component).getRTree();
+                btree = ((LSMRTreeMemoryComponent) component).getBTree();
             } else {
-                btreeCursors[i] = new BloomFilterAwareBTreePointSearchCursor((IBTreeLeafFrame) lsmInitialState
-                        .getBTreeLeafFrameFactory().createFrame(), false,
-                        ((LSMRTreeDiskComponent) operationalComponents.get(i)).getBloomFilter());
-                rtree = (RTree) ((LSMRTreeDiskComponent) component).getRTree();
-                btree = (BTree) ((LSMRTreeDiskComponent) component).getBTree();
+                if (btreeCursors[i] == null || !btreeCursors[i].isBloomFilterAware()) {
+                    // need to create a new one
+                    btreeCursors[i] = new BloomFilterAwareBTreePointSearchCursor(
+                            (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame(), false,
+                            ((LSMRTreeDiskComponent) operationalComponents.get(i)).getBloomFilter());
+                } else {
+                    // reset
+                    ((BloomFilterAwareBTreePointSearchCursor) btreeCursors[i])
+                            .resetBloomFilter(((LSMRTreeDiskComponent) operationalComponents.get(i)).getBloomFilter());
+                    btreeCursors[i].reset();
+                }
+                rtree = ((LSMRTreeDiskComponent) component).getRTree();
+                btree = ((LSMRTreeDiskComponent) component).getBTree();
             }
-            rtreeCursors[i] = new RTreeSearchCursor((IRTreeInteriorFrame) lsmInitialState
-                    .getRTreeInteriorFrameFactory().createFrame(), (IRTreeLeafFrame) lsmInitialState
-                    .getRTreeLeafFrameFactory().createFrame());
-            rtreeAccessors[i] = rtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
-            btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            if (rtreeCursors[i] == null) {
+                rtreeCursors[i] = new RTreeSearchCursor(
+                        (IRTreeInteriorFrame) lsmInitialState.getRTreeInteriorFrameFactory().createFrame(),
+                        (IRTreeLeafFrame) lsmInitialState.getRTreeLeafFrameFactory().createFrame());
+            } else {
+                rtreeCursors[i].reset();
+            }
+            if (rtreeAccessors[i] == null) {
+                rtreeAccessors[i] = (RTreeAccessor) rtree.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+                btreeAccessors[i] = (BTreeAccessor) btree.createAccessor(NoOpOperationCallback.INSTANCE,
+                        NoOpOperationCallback.INSTANCE);
+            } else {
+                rtreeAccessors[i].reset(rtree, NoOpOperationCallback.INSTANCE);
+                btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            }
         }
 
         rtreeSearchPredicate = (SearchPredicate) searchPred;
-        btreeRangePredicate = new RangePredicate(null, null, true, true, btreeCmp, btreeCmp);
+        btreeRangePredicate.setHighKey(null);
+        btreeRangePredicate.setLowKey(null);
 
         open = true;
     }
@@ -172,4 +206,4 @@
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java
index deb671a..5453361 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java
@@ -39,9 +39,8 @@
     private final MultiComparator hilbertCmp;
     private final ILSMHarness lsmHarness;
     private final int[] comparatorFields;
-
     private ISearchOperationCallback searchCallback;
-    private final List<ILSMComponent> operationalComponents;
+    private List<ILSMComponent> operationalComponents;
 
     public LSMRTreeCursorInitialState(ITreeIndexFrameFactory rtreeLeafFrameFactory,
             ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory,
@@ -119,4 +118,7 @@
     public void setOriginialKeyComparator(MultiComparator originalCmp) {
     }
 
-}
\ No newline at end of file
+    public void setOperationalComponents(List<ILSMComponent> operationalComponents) {
+        this.operationalComponents = operationalComponents;
+    }
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java
index 2cc3f73..4f50980 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFileManager.java
@@ -40,8 +40,8 @@
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public class LSMRTreeFileManager extends AbstractLSMIndexFileManager {
-    private static final String RTREE_STRING = "r";
-    private static final String BTREE_STRING = "b";
+    public static final String RTREE_STRING = "r";
+    public static final String BTREE_STRING = "b";
 
     private final TreeIndexFactory<? extends ITreeIndex> rtreeFactory;
     private final TreeIndexFactory<? extends ITreeIndex> btreeFactory;
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java
index 7fbd331..686cd2b 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java
@@ -34,9 +34,8 @@
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext;
-import org.apache.hyracks.storage.am.rtree.api.IRTreeInteriorFrame;
-import org.apache.hyracks.storage.am.rtree.api.IRTreeLeafFrame;
 import org.apache.hyracks.storage.am.rtree.impls.RTree;
 import org.apache.hyracks.storage.am.rtree.impls.RTreeOpContext;
 
@@ -56,18 +55,20 @@
     public final List<ILSMComponent> componentHolder;
     private final List<ILSMComponent> componentsToBeMerged;
     private final List<ILSMComponent> componentsToBeReplicated;
-    public final IModificationOperationCallback modificationCallback;
-    public final ISearchOperationCallback searchCallback;
+    private IModificationOperationCallback modificationCallback;
+    private ISearchOperationCallback searchCallback;
     public final PermutingTupleReference indexTuple;
     public final MultiComparator filterCmp;
     public final PermutingTupleReference filterTuple;
     public ISearchPredicate searchPredicate;
+    public LSMRTreeCursorInitialState searchInitialState;
 
-    public LSMRTreeOpContext(List<ILSMComponent> mutableComponents, IRTreeLeafFrame rtreeLeafFrame,
-            IRTreeInteriorFrame rtreeInteriorFrame, ITreeIndexFrameFactory btreeLeafFrameFactory,
+    public LSMRTreeOpContext(List<ILSMComponent> mutableComponents, ITreeIndexFrameFactory rtreeLeafFrameFactory,
+            ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory,
             ITreeIndexFrameFactory btreeInteriorFrameFactory, IBinaryComparatorFactory[] rtreeCmpFactories,
             IBinaryComparatorFactory[] btreeCmpFactories, IModificationOperationCallback modificationCallback,
-            ISearchOperationCallback searchCallback, int[] rtreeFields, int[] filterFields) {
+            ISearchOperationCallback searchCallback, int[] rtreeFields, int[] filterFields, ILSMHarness lsmHarness,
+            int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray) {
         mutableRTreeAccessors = new RTree.RTreeAccessor[mutableComponents.size()];
         mutableBTreeAccessors = new BTree.BTreeAccessor[mutableComponents.size()];
         rtreeOpContexts = new RTreeOpContext[mutableComponents.size()];
@@ -77,10 +78,10 @@
 
         for (int i = 0; i < mutableComponents.size(); i++) {
             LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) mutableComponents.get(i);
-            mutableRTreeAccessors[i] = (RTree.RTreeAccessor) mutableComponent.getRTree().createAccessor(
-                    NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
-            mutableBTreeAccessors[i] = (BTree.BTreeAccessor) mutableComponent.getBTree().createAccessor(
-                    NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            mutableRTreeAccessors[i] = (RTree.RTreeAccessor) mutableComponent.getRTree()
+                    .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
+            mutableBTreeAccessors[i] = (BTree.BTreeAccessor) mutableComponent.getBTree()
+                    .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE);
 
             rtreeOpContexts[i] = mutableRTreeAccessors[i].getOpContext();
             btreeOpContexts[i] = mutableBTreeAccessors[i].getOpContext();
@@ -104,8 +105,12 @@
             filterCmp = null;
             filterTuple = null;
         }
+        searchInitialState = new LSMRTreeCursorInitialState(rtreeLeafFrameFactory, rtreeInteriorFrameFactory,
+                btreeLeafFrameFactory, getBTreeMultiComparator(), lsmHarness, comparatorFields, linearizerArray,
+                searchCallback, componentHolder);
     }
 
+    @Override
     public void setOperation(IndexOperation newOp) {
         reset();
         this.op = newOp;
@@ -173,4 +178,4 @@
     public List<ILSMComponent> getComponentsToBeReplicated() {
         return componentsToBeReplicated;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java
index 046391b..a11f742 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java
@@ -124,4 +124,4 @@
         searchNextCursor();
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java
index e7857f0..d9da016 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java
@@ -30,7 +30,7 @@
 
 public class LSMRTreeSortedCursor extends LSMRTreeAbstractCursor {
 
-    // TODO: This class can be removed and instead use a search cursor that uses a logic similar 
+    // TODO: This class can be removed and instead use a search cursor that uses a logic similar
     // to the one in LSMRTreeWithAntiMatterTuplesSearchCursor
     private ILinearizeComparator linearizeCmp;
     private boolean[] depletedRtreeCursors;
@@ -163,4 +163,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java
index 069a3b5..daebb5f 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java
@@ -124,7 +124,7 @@
         List<ILSMComponent> immutableComponents = diskComponents;
         for (ILSMComponent c : immutableComponents) {
             RTree rtree = ((LSMRTreeDiskComponent) c).getRTree();
-            rtree.deactivate();
+            rtree.deactivateCloseHandle();
         }
         isActivated = false;
     }
@@ -233,7 +233,7 @@
             bTreeTupleSorter.sort();
         }
 
-        IIndexBulkLoader rTreeBulkloader = diskRTree.createBulkLoader(1.0f, false, 0L, false);
+        IIndexBulkLoader rTreeBulkloader = diskRTree.createBulkLoader(1.0f, false, 0L, false, true);
         LSMRTreeWithAntiMatterTuplesFlushCursor cursor = new LSMRTreeWithAntiMatterTuplesFlushCursor(rTreeTupleSorter,
                 bTreeTupleSorter, comparatorFields, linearizerArray);
         cursor.open(null, null);
@@ -249,15 +249,15 @@
             cursor.close();
         }
 
-        rTreeBulkloader.end();
-
         if (component.getLSMComponentFilter() != null) {
             List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
             filterTuples.add(flushingComponent.getLSMComponentFilter().getMinTuple());
             filterTuples.add(flushingComponent.getLSMComponentFilter().getMaxTuple());
             filterManager.updateFilterInfo(component.getLSMComponentFilter(), filterTuples);
-            filterManager.writeFilterInfo(component.getLSMComponentFilter(), component.getRTree());
+            filterManager.writeFilterInfo(component.getLSMComponentFilter(), component.getRTree()
+            );
         }
+        rTreeBulkloader.end();
 
         return component;
     }
@@ -293,7 +293,7 @@
         LSMRTreeDiskComponent component = createDiskComponent(componentFactory, mergeOp.getRTreeMergeTarget(), null,
                 null, true);
         RTree mergedRTree = component.getRTree();
-        IIndexBulkLoader bulkloader = mergedRTree.createBulkLoader(1.0f, false, 0L, false);
+        IIndexBulkLoader bulkloader = mergedRTree.createBulkLoader(1.0f, false, 0L, false, true);
         try {
             while (cursor.hasNext()) {
                 cursor.next();
@@ -303,8 +303,6 @@
         } finally {
             cursor.close();
         }
-        bulkloader.end();
-
         if (component.getLSMComponentFilter() != null) {
             List<ITupleReference> filterTuples = new ArrayList<ITupleReference>();
             for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
@@ -312,8 +310,10 @@
                 filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMaxTuple());
             }
             filterManager.updateFilterInfo(component.getLSMComponentFilter(), filterTuples);
-            filterManager.writeFilterInfo(component.getLSMComponentFilter(), component.getBTree());
+            filterManager.writeFilterInfo(component.getLSMComponentFilter(), component.getBTree()
+            );
         }
+        bulkloader.end();
 
         return component;
     }
@@ -379,7 +379,7 @@
                 throw new TreeIndexException(e);
             }
             bulkLoader = ((LSMRTreeDiskComponent) component).getRTree().createBulkLoader(fillFactor, verifyInput,
-                    numElementsHint, false);
+                    numElementsHint, false, true);
 
             if (filterFields != null) {
                 indexTuple = new PermutingTupleReference(rtreeFields);
@@ -422,12 +422,12 @@
         @Override
         public void end() throws HyracksDataException, IndexException {
             if (!cleanedUpArtifacts) {
-                bulkLoader.end();
 
                 if (component.getLSMComponentFilter() != null) {
                     filterManager.writeFilterInfo(component.getLSMComponentFilter(),
                             ((LSMRTreeDiskComponent) component).getRTree());
                 }
+                bulkLoader.end();
 
                 if (isEmptyComponent) {
                     cleanupArtifacts();
@@ -437,6 +437,13 @@
             }
         }
 
+        @Override
+        public void abort() throws HyracksDataException {
+            if(bulkLoader != null){
+                bulkLoader.abort();
+            }
+        }
+
         protected void cleanupArtifacts() throws HyracksDataException {
             if (!cleanedUpArtifacts) {
                 cleanedUpArtifacts = true;
@@ -450,18 +457,22 @@
     @Override
     public void markAsValid(ILSMComponent lsmComponent) throws HyracksDataException {
         RTree rtree = ((LSMRTreeDiskComponent) lsmComponent).getRTree();
-        forceFlushDirtyPages(rtree);
         markAsValidInternal(rtree);
     }
 
     @Override
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws IndexException {
+        if (!appendOnly)
+            throw new UnsupportedOperationException("LSM indexes don't support in-place modification");
+        return createBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex);
+    }
+
+    @Override
     public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) {
         Set<String> files = new HashSet<String>();
-
         RTree rtree = ((LSMRTreeDiskComponent) lsmComponent).getRTree();
-        files.add(rtree.getFileReference().toString());
-
+        files.add(rtree.getFileReference().getFile().getAbsolutePath());
         return files;
     }
-
 }
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/RTreeFactory.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/RTreeFactory.java
index c35ccb3..041d8df 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/RTreeFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/RTreeFactory.java
@@ -20,8 +20,9 @@
 package org.apache.hyracks.storage.am.lsm.rtree.impls;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
-import org.apache.hyracks.storage.am.common.api.IFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.api.IMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory;
@@ -32,7 +33,7 @@
 public class RTreeFactory extends TreeIndexFactory<RTree> {
 
     public RTreeFactory(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
-            IFreePageManagerFactory freePageManagerFactory, ITreeIndexFrameFactory interiorFrameFactory,
+            IMetadataManagerFactory freePageManagerFactory, ITreeIndexFrameFactory interiorFrameFactory,
             ITreeIndexFrameFactory leafFrameFactory, IBinaryComparatorFactory[] cmpFactories, int fieldCount) {
         super(bufferCache, fileMapProvider, freePageManagerFactory, interiorFrameFactory, leafFrameFactory,
                 cmpFactories, fieldCount);
@@ -40,8 +41,12 @@
 
     @Override
     public RTree createIndexInstance(FileReference file) throws IndexException {
-        return new RTree(bufferCache, fileMapProvider, freePageManagerFactory.createFreePageManager(),
-                interiorFrameFactory, leafFrameFactory, cmpFactories, fieldCount, file);
+        try {
+            return new RTree(bufferCache, fileMapProvider, freePageManagerFactory.createFreePageManager(),
+                    interiorFrameFactory, leafFrameFactory, cmpFactories, fieldCount, file);
+        } catch (HyracksDataException e) {
+            throw new IndexException(e);
+        }
     }
 
 }
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java
index bcb8599..429c65d 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java
@@ -230,4 +230,4 @@
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java
index fea5455..bdc6708 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java
@@ -29,7 +29,7 @@
 	private static final long serialVersionUID = 1L;
 	private ITypeTraits[] typeTraits;
 	private final boolean isDelete;
-	
+
 	public LSMTypeAwareTupleWriterFactory(ITypeTraits[] typeTraits, boolean isDelete) {
 		super(typeTraits);
 		this.typeTraits = typeTraits;
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java
index 574dfcd..d34f4c2 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java
@@ -36,7 +36,7 @@
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
 import org.apache.hyracks.storage.am.common.api.TreeIndexException;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManagerFactory;
+import org.apache.hyracks.storage.am.common.freepage.LinkedListMetadataManagerFactory;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
@@ -97,7 +97,7 @@
         ITreeIndexFrameFactory btreeLeafFrameFactory = new BTreeNSMLeafFrameFactory(btreeTupleWriterFactory);
 
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        LinkedListFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        LinkedListMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
 
         TreeIndexFactory<RTree> diskRTreeFactory = new RTreeFactory(diskBufferCache, diskFileMapProvider,
@@ -164,7 +164,7 @@
                 valueProviderFactories, rtreePolicyType);
 
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        LinkedListFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        LinkedListMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
 
         TreeIndexFactory<RTree> diskRTreeFactory = new RTreeFactory(diskBufferCache, diskFileMapProvider,
@@ -240,7 +240,7 @@
         ITreeIndexFrameFactory btreeLeafFrameFactory = new BTreeNSMLeafFrameFactory(btreeTupleWriterFactory);
 
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-        LinkedListFreePageManagerFactory freePageManagerFactory = new LinkedListFreePageManagerFactory(diskBufferCache,
+        LinkedListMetadataManagerFactory freePageManagerFactory = new LinkedListMetadataManagerFactory(diskBufferCache,
                 metaFrameFactory);
 
         TreeIndexFactory<RTree> diskRTreeFactory = new RTreeFactory(diskBufferCache, diskFileMapProvider,
diff --git a/hyracks/hyracks-storage-am-rtree/pom.xml b/hyracks/hyracks-storage-am-rtree/pom.xml
index 0faf08c..8356f7a 100644
--- a/hyracks/hyracks-storage-am-rtree/pom.xml
+++ b/hyracks/hyracks-storage-am-rtree/pom.xml
@@ -41,20 +41,6 @@
       <root.dir>${basedir}/../..</root.dir>
   </properties>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeFrame.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeFrame.java
index c7aec35..67b7284 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeFrame.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/api/IRTreeFrame.java
@@ -36,4 +36,4 @@
 
     public void adjustMBR();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java
index b2c8140..e1922d0 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java
@@ -67,4 +67,4 @@
         return new RTreeSearchOperatorNodePushable(this, ctx, partition, recordDescProvider, keyFields,
                 minFilterFieldIndexes, maxFilterFieldIndexes);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java
index 6a63942..21319e5 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java
@@ -68,4 +68,4 @@
     protected int getFieldCount() {
         return ((ITreeIndex)index).getFieldCount();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RStarTreePolicy.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RStarTreePolicy.java
index 7b357f0..a46f755 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RStarTreePolicy.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RStarTreePolicy.java
@@ -225,12 +225,12 @@
 
         splitKey.initData(splitKeySize);
         leftRTreeFrame.adjustMBR();
-        rTreeTupleWriterleftRTreeFrame.writeTupleFields(leftRTreeFrame.getTuples(), 0,
+        rTreeTupleWriterleftRTreeFrame.writeTupleFields(leftRTreeFrame.getMBRTuples(), 0,
                 rTreeSplitKey.getLeftPageBuffer(), 0);
         rTreeSplitKey.getLeftTuple().resetByTupleOffset(rTreeSplitKey.getLeftPageBuffer(), 0);
 
         ((IRTreeFrame) rightFrame).adjustMBR();
-        rTreeTupleWriterRightFrame.writeTupleFields(((RTreeNSMFrame) rightFrame).getTuples(), 0,
+        rTreeTupleWriterRightFrame.writeTupleFields(((RTreeNSMFrame) rightFrame).getMBRTuples(), 0,
                 rTreeSplitKey.getRightPageBuffer(), 0);
         rTreeSplitKey.getRightTuple().resetByTupleOffset(rTreeSplitKey.getRightPageBuffer(), 0);
 
@@ -356,4 +356,4 @@
 
         return bestChild;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeComputationUtils.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeComputationUtils.java
index 72b28bd..80c3e32 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeComputationUtils.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeComputationUtils.java
@@ -140,4 +140,4 @@
         }
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMFrame.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMFrame.java
index 37ba2a5..747e5a8 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMFrame.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMFrame.java
@@ -36,7 +36,7 @@
     protected static final int pageNsnOff = smFlagOff + 1;
     protected static final int rightPageOff = pageNsnOff + 8;
 
-    protected ITreeIndexTupleReference[] tuples;
+    protected ITreeIndexTupleReference[] mbrTuples;
     protected ITreeIndexTupleReference cmpFrameTuple;
 
     private static final double doubleEpsilon = computeDoubleEpsilon();
@@ -47,9 +47,9 @@
     public RTreeNSMFrame(ITreeIndexTupleWriter tupleWriter, IPrimitiveValueProvider[] keyValueProviders,
             RTreePolicyType rtreePolicyType) {
         super(tupleWriter, new UnorderedSlotManager());
-        this.tuples = new ITreeIndexTupleReference[keyValueProviders.length];
+        this.mbrTuples = new ITreeIndexTupleReference[keyValueProviders.length];
         for (int i = 0; i < keyValueProviders.length; i++) {
-            this.tuples[i] = tupleWriter.createTupleReference();
+            this.mbrTuples[i] = tupleWriter.createTupleReference();
         }
         cmpFrameTuple = tupleWriter.createTupleReference();
         this.keyValueProviders = keyValueProviders;
@@ -111,8 +111,8 @@
         buf.putInt(rightPageOff, rightPage);
     }
 
-    public ITreeIndexTupleReference[] getTuples() {
-        return tuples;
+    public ITreeIndexTupleReference[] getMBRTuples() {
+        return mbrTuples;
     }
 
     @Override
@@ -123,7 +123,7 @@
 
     abstract public int getTupleSize(ITupleReference tuple);
 
-    public void adjustMBRImpl(ITreeIndexTupleReference[] tuples) {
+    protected void calculateMBRImpl(ITreeIndexTupleReference[] tuples) {
         int maxFieldPos = keyValueProviders.length / 2;
         for (int i = 1; i < getTupleCount(); i++) {
             frameTuple.resetByTupleIndex(this, i);
@@ -145,12 +145,12 @@
 
     @Override
     public void adjustMBR() {
-        for (int i = 0; i < tuples.length; i++) {
-            tuples[i].setFieldCount(getFieldCount());
-            tuples[i].resetByTupleIndex(this, 0);
+        for (int i = 0; i < mbrTuples.length; i++) {
+            mbrTuples[i].setFieldCount(getFieldCount());
+            mbrTuples[i].resetByTupleIndex(this, 0);
         }
 
-        adjustMBRImpl(tuples);
+        calculateMBRImpl(mbrTuples);
     }
 
     public abstract int getFieldCount();
@@ -164,4 +164,4 @@
     public void setMultiComparator(MultiComparator cmp) {
         // currently, R-Tree Frames are unsorted
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java
index 3b71be8..5c2e95e 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java
@@ -32,6 +32,7 @@
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
 import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.frames.AbstractSlotManager;
 import org.apache.hyracks.storage.am.common.frames.FrameOpSpaceStatus;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.common.ophelpers.SlotOffTupleOff;
@@ -40,7 +41,7 @@
 
 public class RTreeNSMInteriorFrame extends RTreeNSMFrame implements IRTreeInteriorFrame {
 
-    private static final int childPtrSize = 4;
+    public static final int childPtrSize = 4;
     private IBinaryComparator childPtrCmp = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY)
             .createBinaryComparator();
     private final int keyFieldCount;
@@ -53,7 +54,7 @@
     }
 
     @Override
-    public int getBytesRequriedToWriteTuple(ITupleReference tuple) {
+    public int getBytesRequiredToWriteTuple(ITupleReference tuple) {
         return tupleWriter.bytesRequired(tuple) + childPtrSize + slotManager.getSlotSize();
     }
 
@@ -184,6 +185,16 @@
             return FrameOpSpaceStatus.INSUFFICIENT_SPACE;
     }
 
+    public FrameOpSpaceStatus hasSpaceInsert(int bytesRequired) {
+        if (bytesRequired + slotManager.getSlotSize() <= buf.capacity() - buf.getInt(freeSpaceOff)
+                - (buf.getInt(tupleCountOff) * slotManager.getSlotSize()))
+            return FrameOpSpaceStatus.SUFFICIENT_CONTIGUOUS_SPACE;
+        else if (bytesRequired + slotManager.getSlotSize() <= buf.getInt(totalFreeSpaceOff))
+            return FrameOpSpaceStatus.SUFFICIENT_SPACE;
+        else
+            return FrameOpSpaceStatus.INSUFFICIENT_SPACE;
+    }
+
     @Override
     public void adjustKey(ITupleReference tuple, int tupleIndex, MultiComparator cmp) throws TreeIndexException {
         frameTuple.setFieldCount(cmp.getKeyFieldCount());
@@ -221,7 +232,7 @@
     @Override
     public void insert(ITupleReference tuple, int tupleIndex) {
         frameTuple.setFieldCount(tuple.getFieldCount());
-        slotManager.insertSlot(-1, buf.getInt(freeSpaceOff));
+        slotManager.insertSlot(AbstractSlotManager.GREATEST_KEY_INDICATOR, buf.getInt(freeSpaceOff));
         int freeSpace = buf.getInt(freeSpaceOff);
         int bytesWritten = tupleWriter.writeTupleFields(tuple, 0, tuple.getFieldCount(), buf.array(), freeSpace);
         System.arraycopy(tuple.getFieldData(tuple.getFieldCount() - 1), getChildPointerOff(tuple), buf.array(),
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java
index 8faf5a2..591ce67 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java
@@ -35,7 +35,7 @@
     }
 
     @Override
-    public int getBytesRequriedToWriteTuple(ITupleReference tuple) {
+    public int getBytesRequiredToWriteTuple(ITupleReference tuple) {
         return tupleWriter.bytesRequired(tuple) + slotManager.getSlotSize();
     }
 
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreePolicy.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreePolicy.java
index 2bcaa77..2ca9548 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreePolicy.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreePolicy.java
@@ -196,11 +196,11 @@
 
         splitKey.initData(splitKeySize);
         leftRTreeFrame.adjustMBR();
-        rTreeTupleWriterLeftFrame.writeTupleFields(leftRTreeFrame.getTuples(), 0, rTreeSplitKey.getLeftPageBuffer(), 0);
+        rTreeTupleWriterLeftFrame.writeTupleFields(leftRTreeFrame.getMBRTuples(), 0, rTreeSplitKey.getLeftPageBuffer(), 0);
         rTreeSplitKey.getLeftTuple().resetByTupleOffset(rTreeSplitKey.getLeftPageBuffer(), 0);
 
         ((IRTreeFrame) rightFrame).adjustMBR();
-        rTreeTupleWriterRightFrame.writeTupleFields(((RTreeNSMFrame) rightFrame).getTuples(), 0,
+        rTreeTupleWriterRightFrame.writeTupleFields(((RTreeNSMFrame) rightFrame).getMBRTuples(), 0,
                 rTreeSplitKey.getRightPageBuffer(), 0);
         rTreeSplitKey.getRightTuple().resetByTupleOffset(rTreeSplitKey.getRightPageBuffer(), 0);
     }
@@ -234,4 +234,4 @@
         return bestChild;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
index 2cb72cc..8cf94d3 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
@@ -21,6 +21,7 @@
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -28,20 +29,9 @@
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader;
-import org.apache.hyracks.storage.am.common.api.IIndexCursor;
-import org.apache.hyracks.storage.am.common.api.IIndexOperationContext;
-import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
-import org.apache.hyracks.storage.am.common.api.ISearchPredicate;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
-import org.apache.hyracks.storage.am.common.api.IndexException;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
+import org.apache.hyracks.storage.am.common.frames.AbstractSlotManager;
 import org.apache.hyracks.storage.am.common.frames.FrameOpSpaceStatus;
 import org.apache.hyracks.storage.am.common.impls.AbstractTreeIndex;
 import org.apache.hyracks.storage.am.common.impls.NodeFrontier;
@@ -55,6 +45,7 @@
 import org.apache.hyracks.storage.am.rtree.frames.RTreeNSMFrame;
 import org.apache.hyracks.storage.am.rtree.frames.RTreeNSMInteriorFrame;
 import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriter;
+import org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
@@ -67,7 +58,7 @@
 
     private final int maxTupleSize;
 
-    public RTree(IBufferCache bufferCache, IFileMapProvider fileMapProvider, IFreePageManager freePageManager,
+    public RTree(IBufferCache bufferCache, IFileMapProvider fileMapProvider, IMetaDataPageManager freePageManager,
             ITreeIndexFrameFactory interiorFrameFactory, ITreeIndexFrameFactory leafFrameFactory,
             IBinaryComparatorFactory[] cmpFactories, int fieldCount, FileReference file) {
         super(bufferCache, fileMapProvider, freePageManager, interiorFrameFactory, leafFrameFactory, cmpFactories,
@@ -157,8 +148,8 @@
     private void insert(ITupleReference tuple, IIndexOperationContext ictx) throws HyracksDataException,
             TreeIndexException {
         RTreeOpContext ctx = (RTreeOpContext) ictx;
-        int tupleSize = Math.max(ctx.leafFrame.getBytesRequriedToWriteTuple(tuple),
-                ctx.interiorFrame.getBytesRequriedToWriteTuple(tuple));
+        int tupleSize = Math.max(ctx.leafFrame.getBytesRequiredToWriteTuple(tuple),
+                ctx.interiorFrame.getBytesRequiredToWriteTuple(tuple));
         if (tupleSize > maxTupleSize) {
             throw new TreeIndexException("Record size (" + tupleSize + ") larger than maximum acceptable record size ("
                     + maxTupleSize + ")");
@@ -774,7 +765,7 @@
         MultiComparator cmp = MultiComparator.create(cmpFactories);
         SearchPredicate searchPred = new SearchPredicate(null, cmp);
 
-        int currentPageId = rootPage;
+        int currentPageId = bulkloadLeafStart;
         int maxPageId = freePageManager.getMaxPage(ctx.metaFrame);
 
         ICachedPage page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, currentPageId), false);
@@ -810,6 +801,12 @@
             this.ctx = rtree.createOpContext(modificationCallback);
         }
 
+        public void reset(RTree rtree, IModificationOperationCallback modificationCallback) {
+            this.rtree = rtree;
+            ctx.setModificationCallback(modificationCallback);
+            ctx.reset();
+        }
+
         @Override
         public void insert(ITupleReference tuple) throws HyracksDataException, TreeIndexException {
             ctx.setOperation(IndexOperation.INSERT);
@@ -867,8 +864,14 @@
     public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
             boolean checkIfEmptyIndex) throws TreeIndexException {
         // TODO: verifyInput currently does nothing.
+        return createBulkLoader(fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex, false);
+    }
+
+    public IIndexBulkLoader createBulkLoader(float fillFactor, boolean verifyInput, long numElementsHint,
+            boolean checkIfEmptyIndex, boolean appendOnly) throws TreeIndexException {
+        // TODO: verifyInput currently does nothing.
         try {
-            return new RTreeBulkLoader(fillFactor);
+            return new RTreeBulkLoader(fillFactor, appendOnly);
         } catch (HyracksDataException e) {
             throw new TreeIndexException(e);
         }
@@ -879,17 +882,18 @@
         RTreeTypeAwareTupleWriter tupleWriter = ((RTreeTypeAwareTupleWriter) interiorFrame.getTupleWriter());
         ITreeIndexTupleReference mbrTuple = interiorFrame.createTupleReference();
         ByteBuffer mbr;
+        List<Integer> prevNodeFrontierPages = new ArrayList<Integer>();
 
-        public RTreeBulkLoader(float fillFactor) throws TreeIndexException, HyracksDataException {
-            super(fillFactor);
+        public RTreeBulkLoader(float fillFactor, boolean appendOnly) throws TreeIndexException, HyracksDataException {
+            super(fillFactor, appendOnly);
             prevInteriorFrame = interiorFrameFactory.createFrame();
         }
 
         @Override
         public void add(ITupleReference tuple) throws IndexException, HyracksDataException {
             try {
-                int tupleSize = Math.max(leafFrame.getBytesRequriedToWriteTuple(tuple),
-                        interiorFrame.getBytesRequriedToWriteTuple(tuple));
+                int tupleSize = Math.max(leafFrame.getBytesRequiredToWriteTuple(tuple),
+                        interiorFrame.getBytesRequiredToWriteTuple(tuple));
                 if (tupleSize > maxTupleSize) {
                     throw new TreeIndexException("Space required for record (" + tupleSize
                             + ") larger than maximum acceptable size (" + maxTupleSize + ")");
@@ -907,22 +911,30 @@
                 }
 
                 if (spaceUsed + spaceNeeded > leafMaxBytes) {
-                    propagateBulk(1, false);
+
+                    if (prevNodeFrontierPages.size() == 0) {
+                        prevNodeFrontierPages.add(leafFrontier.pageId);
+                    } else {
+                        prevNodeFrontierPages.set(0, leafFrontier.pageId);
+                    }
+                    propagateBulk(1, false, pagesToWrite);
 
                     leafFrontier.pageId = freePageManager.getFreePage(metaFrame);
+                    queue.put(leafFrontier.page);
+                    for (ICachedPage c : pagesToWrite) {
+                        queue.put(c);
+                    }
 
-                    leafFrontier.page.releaseWriteLatch(true);
-                    bufferCache.unpin(leafFrontier.page);
-
-                    leafFrontier.page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, leafFrontier.pageId),
-                            true);
-                    leafFrontier.page.acquireWriteLatch();
+                    pagesToWrite.clear();
+                    leafFrontier.page = bufferCache.confiscatePage(BufferedFileHandle.getDiskPageId(fileId,
+                            leafFrontier.pageId));
                     leafFrame.setPage(leafFrontier.page);
                     leafFrame.initBuffer((byte) 0);
+
                 }
 
                 leafFrame.setPage(leafFrontier.page);
-                leafFrame.insert(tuple, -1);
+                leafFrame.insert(tuple, AbstractSlotManager.GREATEST_KEY_INDICATOR);
             } catch (HyracksDataException e) {
                 handleException();
                 throw e;
@@ -934,12 +946,61 @@
         }
 
         public void end() throws HyracksDataException {
-            propagateBulk(1, true);
+            pagesToWrite.clear();
+            //if writing a trivial 1-page tree, don't try and propagate up
+            if (nodeFrontiers.size() > 1) {
+                propagateBulk(1, true, pagesToWrite);
+            }
 
+            for (ICachedPage c : pagesToWrite) {
+                queue.put(c);
+            }
+            finish();
             super.end();
         }
 
-        protected void propagateBulk(int level, boolean toRoot) throws HyracksDataException {
+        @Override
+        public void abort() throws HyracksDataException {
+            super.handleException();
+        }
+
+        protected void finish() throws HyracksDataException {
+            int prevPageId = -1;
+            //here we assign physical identifiers to everything we can
+            for (NodeFrontier n : nodeFrontiers) {
+                //not a leaf
+                if (nodeFrontiers.indexOf(n) != 0) {
+                    interiorFrame.setPage(n.page);
+                    mbrTuple.resetByTupleOffset(mbr, 0);
+                    interiorFrame.insert(mbrTuple, -1);
+                    interiorFrame.getBuffer().putInt(
+                            interiorFrame.getTupleOffset(interiorFrame.getTupleCount() - 1) + mbrTuple.getTupleSize(),
+                            prevPageId);
+
+                    int finalPageId = freePageManager.getFreePage(metaFrame);
+                    n.pageId = finalPageId;
+                    bufferCache.setPageDiskId(n.page, BufferedFileHandle.getDiskPageId(fileId, finalPageId));
+                    //else we are looking at a leaf
+                }
+                //set next guide MBR
+                //if propagateBulk didnt have to do anything this may be un-necessary
+                if (nodeFrontiers.size() > 1 && nodeFrontiers.indexOf(n) < nodeFrontiers.size()-1) {
+                    lowerFrame.setPage(n.page);
+                    ((RTreeNSMFrame) lowerFrame).adjustMBR();
+                    tupleWriter.writeTupleFields(((RTreeNSMFrame) lowerFrame).getMBRTuples(), 0, mbr, 0);
+                }
+                queue.put(n.page);
+                n.page = null;
+                prevPageId = n.pageId;
+            }
+            if (appendOnly) {
+                rootPage = nodeFrontiers.get(nodeFrontiers.size() - 1).pageId;
+            }
+            releasedLatches = true;
+        }
+
+        protected void propagateBulk(int level, boolean toRoot, List<ICachedPage> pagesToWrite)
+                throws HyracksDataException {
             boolean propagated = false;
 
             if (level == 1)
@@ -951,47 +1012,66 @@
             if (level >= nodeFrontiers.size())
                 addLevel();
 
+            //adjust the tuple pointers of the lower frame to allow us to calculate our MBR
+            //if this is a leaf, then there is only one tuple, so this is trivial
             ((RTreeNSMFrame) lowerFrame).adjustMBR();
 
             if (mbr == null) {
-                int bytesRequired = tupleWriter.bytesRequired(((RTreeNSMFrame) lowerFrame).getTuples()[0], 0,
+                int bytesRequired = tupleWriter.bytesRequired(((RTreeNSMFrame) lowerFrame).getMBRTuples()[0], 0,
                         cmp.getKeyFieldCount())
                         + ((RTreeNSMInteriorFrame) interiorFrame).getChildPointerSize();
                 mbr = ByteBuffer.allocate(bytesRequired);
             }
-            tupleWriter.writeTupleFields(((RTreeNSMFrame) lowerFrame).getTuples(), 0, mbr, 0);
+            tupleWriter.writeTupleFields(((RTreeNSMFrame) lowerFrame).getMBRTuples(), 0, mbr, 0);
             mbrTuple.resetByTupleOffset(mbr, 0);
 
             NodeFrontier frontier = nodeFrontiers.get(level);
             interiorFrame.setPage(frontier.page);
+            //see if we have space for two tuples. this works around a  tricky boundary condition with sequential bulk load where
+            //finalization can possibly lead to a split
+            //TODO: accomplish this without wasting 1 tuple
+            int sizeOfTwoTuples = 2 * (mbrTuple.getTupleSize() + RTreeNSMInteriorFrame.childPtrSize);
+            FrameOpSpaceStatus spaceForTwoTuples = (((RTreeNSMInteriorFrame) interiorFrame)
+                    .hasSpaceInsert(sizeOfTwoTuples));
+            if (spaceForTwoTuples != FrameOpSpaceStatus.SUFFICIENT_CONTIGUOUS_SPACE && !toRoot) {
 
-            interiorFrame.insert(mbrTuple, -1);
+                int finalPageId = freePageManager.getFreePage(metaFrame);
+                if (prevNodeFrontierPages.size() <= level) {
+                    prevNodeFrontierPages.add(finalPageId);
+                } else {
+                    prevNodeFrontierPages.set(level, finalPageId);
+                }
+                bufferCache.setPageDiskId(frontier.page, BufferedFileHandle.getDiskPageId(fileId, finalPageId));
+                pagesToWrite.add(frontier.page);
 
-            interiorFrame.getBuffer().putInt(
-                    interiorFrame.getTupleOffset(interiorFrame.getTupleCount() - 1) + mbrTuple.getTupleSize(),
-                    nodeFrontiers.get(level - 1).pageId);
-
-            if (interiorFrame.hasSpaceInsert(mbrTuple) != FrameOpSpaceStatus.SUFFICIENT_CONTIGUOUS_SPACE && !toRoot) {
                 lowerFrame = prevInteriorFrame;
                 lowerFrame.setPage(frontier.page);
 
-                propagateBulk(level + 1, toRoot);
-                propagated = true;
-
-                frontier.page.releaseWriteLatch(true);
-                bufferCache.unpin(frontier.page);
-                frontier.pageId = freePageManager.getFreePage(metaFrame);
-
-                frontier.page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, frontier.pageId), true);
-                frontier.page.acquireWriteLatch();
+                frontier.page = bufferCache.confiscatePage(BufferCache.INVALID_DPID);
                 interiorFrame.setPage(frontier.page);
                 interiorFrame.initBuffer((byte) level);
+
+                interiorFrame.insert(mbrTuple, AbstractSlotManager.GREATEST_KEY_INDICATOR);
+
+                interiorFrame.getBuffer().putInt(
+                        interiorFrame.getTupleOffset(interiorFrame.getTupleCount() - 1) + mbrTuple.getTupleSize(),
+                        prevNodeFrontierPages.get(level - 1));
+
+                propagateBulk(level + 1, toRoot, pagesToWrite);
+            } else if (interiorFrame.hasSpaceInsert(mbrTuple) == FrameOpSpaceStatus.SUFFICIENT_CONTIGUOUS_SPACE
+                    && !toRoot) {
+
+                interiorFrame.insert(mbrTuple, -1);
+
+                interiorFrame.getBuffer().putInt(
+                        interiorFrame.getTupleOffset(interiorFrame.getTupleCount() - 1) + mbrTuple.getTupleSize(),
+                        prevNodeFrontierPages.get(level - 1));
             }
 
-            if (toRoot && !propagated && level < nodeFrontiers.size() - 1) {
+            if (toRoot && level < nodeFrontiers.size() - 1) {
                 lowerFrame = prevInteriorFrame;
                 lowerFrame.setPage(frontier.page);
-                propagateBulk(level + 1, true);
+                propagateBulk(level + 1, true, pagesToWrite);
             }
 
             leafFrame.setPage(nodeFrontiers.get(0).page);
@@ -1002,4 +1082,4 @@
     public void validate() throws HyracksDataException {
         throw new UnsupportedOperationException("Validation not implemented for R-Trees.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
index 67e7777..107dc30 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
@@ -53,7 +53,7 @@
     public ArrayList<ICachedPage> NSNUpdates;
     public ArrayList<ICachedPage> LSNUpdates;
 
-    public final IModificationOperationCallback modificationCallback;
+    public IModificationOperationCallback modificationCallback;
 
     public RTreeOpContext(IRTreeLeafFrame leafFrame, IRTreeInteriorFrame interiorFrame,
             ITreeIndexMetaDataFrame metaFrame, IBinaryComparatorFactory[] cmpFactories,
@@ -117,4 +117,8 @@
     public IndexOperation getOperation() {
         return op;
     }
+
+    public void setModificationCallback(IModificationOperationCallback modificationCallback) {
+        this.modificationCallback = modificationCallback;
+    }
 }
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java
index 729e7e0..5ee8700 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java
@@ -104,6 +104,8 @@
             int pageId = pathList.getLastPageId();
             long parentLsn = pathList.getLastPageLsn();
             pathList.moveLast();
+            if(pageId <0) throw new IllegalStateException();
+            if(fileId<0) throw new IllegalStateException();
             ICachedPage node = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, pageId), false);
             node.acquireReadLatch();
             readLatched = true;
@@ -216,7 +218,7 @@
 
         pred = (SearchPredicate) searchPred;
         cmp = pred.getLowKeyComparator();
-        searchKey = pred.getSearchKey();
+        searchKey = pred.getLowKey();
 
         if (searchKey != null) {
             int maxFieldPos = cmp.getKeyFieldCount() / 2;
@@ -256,9 +258,9 @@
     public boolean exclusiveLatchNodes() {
         return false;
     }
-    
+
     @Override
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSplitKey.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSplitKey.java
index 1d5a48e..ec731c3 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSplitKey.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSplitKey.java
@@ -155,4 +155,4 @@
 		// TODO Auto-generated method stub
 		return null;
 	}
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/Rectangle.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/Rectangle.java
index bf68c9e..cbfd245 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/Rectangle.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/Rectangle.java
@@ -139,4 +139,4 @@
         }
         return area;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/SearchPredicate.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/SearchPredicate.java
index 643eb8e..da03608 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/SearchPredicate.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/SearchPredicate.java
@@ -42,7 +42,8 @@
         this.cmp = cmp;
     }
 
-    public ITupleReference getSearchKey() {
+    @Override
+    public ITupleReference getLowKey() {
         return searchKey;
     }
 
@@ -50,10 +51,12 @@
         this.searchKey = searchKey;
     }
 
+    @Override
     public MultiComparator getLowKeyComparator() {
         return cmp;
     }
 
+    @Override
     public MultiComparator getHighKeyComparator() {
         return cmp;
     }
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java
index e4df88a..cd380e1 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java
@@ -32,13 +32,13 @@
  * number generics in Java) in the two-dimensional space. For more dimensions, the
  * state machine has to be automatically generated. The idea of the fractal generation
  * of the curve is described e.g. in http://dl.acm.org/ft_gateway.cfm?id=383528&type=pdf
- * 
- * Unlike the described approach, this comparator does not compute the hilbert value at 
+ *
+ * Unlike the described approach, this comparator does not compute the hilbert value at
  * any point. Instead, it only evaluates how the two inputs compare to each other. This
  * is done by starting at the lowest hilbert resolution and zooming in on the fractal until
  * the two points are in different quadrants.
- * 
- * As a performance optimization, the state of the state machine is saved in a stack and 
+ *
+ * As a performance optimization, the state of the state machine is saved in a stack and
  * maintained over comparisons. The idea behind this is that comparisons are usually in a
  * similar area (e.g. geo coordinates). Zooming in from [-MAX_VALUE, MAX_VALUE] would take
  * ~300 steps every time. Instead, the comparator start from the previous state and zooms out
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java
index f39bff5..8c73e12 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java
@@ -23,13 +23,13 @@
 
 public class HilbertDoubleComparatorFactory implements ILinearizeComparatorFactory {
     private static final long serialVersionUID = 1L;
-    
+
     private int dim;
 
     public static HilbertDoubleComparatorFactory get(int dim) {
         return new HilbertDoubleComparatorFactory(dim);
     }
-    
+
     public HilbertDoubleComparatorFactory(int dim) {
     	this.dim = dim;
     }
@@ -38,4 +38,4 @@
     public ILinearizeComparator createBinaryComparator() {
         return new HilbertDoubleComparator(dim);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java
index 0c322d5..a2650d3 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java
@@ -23,13 +23,13 @@
 
 public class ZCurveDoubleComparatorFactory implements ILinearizeComparatorFactory {
     private static final long serialVersionUID = 1L;
-    
+
     private int dim;
 
     public static ZCurveDoubleComparatorFactory get(int dim) {
         return new ZCurveDoubleComparatorFactory(dim);
     }
-    
+
     public ZCurveDoubleComparatorFactory(int dim) {
     	this.dim = dim;
     }
@@ -38,4 +38,4 @@
     public ILinearizeComparator createBinaryComparator() {
         return new ZCurveDoubleComparator(dim);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparator.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparator.java
index f62ae27..2f372e2 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparator.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparator.java
@@ -21,7 +21,6 @@
 import org.apache.hyracks.api.dataflow.value.ILinearizeComparator;
 import org.apache.hyracks.data.std.primitive.DoublePointable;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.storage.am.common.ophelpers.DoubleArrayList;
 
 /*
@@ -48,7 +47,7 @@
     }
 
     private void resetStateMachine() {
-        stepsize = Integer.MAX_VALUE / 2;
+        stepsize = Integer.MAX_VALUE / 2.0f;
         bounds = new double[dim];
         boundsStack.clear();
     }
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java
index e3d7b1e..4827a74 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java
@@ -23,13 +23,13 @@
 
 public class ZCurveIntComparatorFactory implements ILinearizeComparatorFactory {
     private static final long serialVersionUID = 1L;
-    
+
     private int dim;
 
     public static ZCurveIntComparatorFactory get(int dim) {
         return new ZCurveIntComparatorFactory(dim);
     }
-    
+
     public ZCurveIntComparatorFactory(int dim) {
     	this.dim = dim;
     }
@@ -38,4 +38,4 @@
     public ILinearizeComparator createBinaryComparator() {
         return new ZCurveIntComparator(dim);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriter.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriter.java
index d2332f0..40b0481 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriter.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriter.java
@@ -24,6 +24,7 @@
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
 
 public class RTreeTypeAwareTupleWriter extends TypeAwareTupleWriter {
 
@@ -41,13 +42,11 @@
 
         // write field slots for variable length fields
         // since the r-tree has fixed length keys, we don't actually need this?
-        encDec.reset(targetBuf.array(), runner);
         for (int i = startField; i < startField + refs.length; i++) {
             if (!typeTraits[i].isFixedLength()) {
-                encDec.encode(refs[i].getFieldLength(i));
+                runner += VarLenIntEncoderDecoder.encode(refs[i].getFieldLength(i), targetBuf.array(), runner);
             }
         }
-        runner = encDec.getPos();
 
         // write data
         for (int i = 0; i < refs.length; i++) {
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java
index 81eed9c..f14d89d 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java
@@ -32,7 +32,7 @@
         this.typeTraits = typeTraits;
     }
 
-    @Override    
+    @Override
     public ITreeIndexTupleWriter createTupleWriter() {
         return new RTreeTypeAwareTupleWriter(typeTraits);
     }
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java
index 0e3eb80..027cea7 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java
@@ -25,13 +25,13 @@
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.data.std.api.IPointableFactory;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
 import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.data.PointablePrimitiveValueProviderFactory;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.rtree.frames.RTreeNSMInteriorFrameFactory;
 import org.apache.hyracks.storage.am.rtree.frames.RTreeNSMLeafFrameFactory;
@@ -54,7 +54,7 @@
                 valueProviderFactories, rtreePolicyType);
         ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
 
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
         RTree rtree = new RTree(bufferCache, fileMapProvider, freePageManager, interiorFrameFactory, leafFrameFactory,
                 cmpFactories, typeTraits.length, file);
         return rtree;
@@ -80,4 +80,4 @@
         }
         return pvpfs;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/pom.xml b/hyracks/hyracks-storage-common/pom.xml
index 14036d7..bffa6e2 100644
--- a/hyracks/hyracks-storage-common/pom.xml
+++ b/hyracks/hyracks-storage-common/pom.xml
@@ -37,20 +37,6 @@
     </license>
   </licenses>
 
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <properties>
       <root.dir>${basedir}/../..</root.dir>
   </properties>
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IResourceMemoryManager.java
similarity index 78%
copy from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java
copy to hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IResourceMemoryManager.java
index 4247e64..036520a 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IVirtualFreePageManager.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IResourceMemoryManager.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
+package org.apache.hyracks.storage.common;
 
-public interface IVirtualFreePageManager extends IFreePageManager {
-    public int getCapacity();
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
-    public void reset();
+public interface IResourceMemoryManager {
+    void allocateMemory(String resourcePath) throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManagerInterface.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManagerInterface.java
index 8d74ce3..c1bdeab 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManagerInterface.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/IStorageManagerInterface.java
@@ -24,7 +24,7 @@
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 import org.apache.hyracks.storage.common.file.ILocalResourceRepository;
-import org.apache.hyracks.storage.common.file.ResourceIdFactory;
+import org.apache.hyracks.storage.common.file.IResourceIdFactory;
 
 public interface IStorageManagerInterface extends Serializable {
     public IBufferCache getBufferCache(IHyracksTaskContext ctx);
@@ -33,5 +33,5 @@
 
     public ILocalResourceRepository getLocalResourceRepository(IHyracksTaskContext ctx);
 
-    public ResourceIdFactory getResourceIdFactory(IHyracksTaskContext ctx);
-}
\ No newline at end of file
+    public IResourceIdFactory getResourceIdFactory(IHyracksTaskContext ctx);
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AsyncFIFOPageQueueManager.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AsyncFIFOPageQueueManager.java
new file mode 100644
index 0000000..4b23bb1
--- /dev/null
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/AsyncFIFOPageQueueManager.java
@@ -0,0 +1,163 @@
+/*
+ * 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.hyracks.storage.common.buffercache;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.file.BufferedFileHandle;
+
+public class AsyncFIFOPageQueueManager implements Runnable {
+    private final static boolean DEBUG = false;
+
+    protected LinkedBlockingQueue<ICachedPage> queue = new LinkedBlockingQueue<ICachedPage>();
+    volatile Thread writerThread;
+    protected AtomicBoolean poisoned = new AtomicBoolean(false);
+    protected BufferCache bufferCache;
+    volatile protected PageQueue pageQueue;
+
+    public AsyncFIFOPageQueueManager(BufferCache bufferCache){
+        this.bufferCache = bufferCache;
+    }
+
+    protected class PageQueue implements IFIFOPageQueue {
+        final IBufferCache bufferCache;
+        public final IFIFOPageWriter writer;
+
+        protected PageQueue(IBufferCache bufferCache, IFIFOPageWriter writer) {
+            if(DEBUG) System.out.println("[FIFO] New Queue");
+            this.bufferCache = bufferCache;
+            this.writer = writer;
+        }
+
+        protected IBufferCache getBufferCache() {
+            return bufferCache;
+        }
+
+        protected IFIFOPageWriter getWriter() {
+            return writer;
+        }
+
+        @Override
+        public void put(ICachedPage page) throws HyracksDataException {
+            try {
+                if(!poisoned.get()) {
+                    queue.put(page);
+                }
+                else{
+                    throw new HyracksDataException("Queue is closing");
+                }
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    public PageQueue createQueue(IFIFOPageWriter writer) {
+        if (pageQueue == null) {
+            synchronized(this){
+                if (pageQueue == null) {
+                    writerThread = new Thread(this);
+                    writerThread.setName("FIFO Writer Thread");
+                    writerThread.start();
+                    pageQueue = new PageQueue(bufferCache,writer);
+                }
+            }
+        }
+        return pageQueue;
+    }
+
+    public void destroyQueue(){
+        poisoned.set(true);
+        //Dummy cached page to act as poison pill
+        CachedPage poisonPill = new CachedPage();
+        poisonPill.setQueueInfo(new QueueInfo(true,true));
+        if(writerThread == null){
+            synchronized (this){
+                if(writerThread == null) {
+                    return;
+                }
+            }
+        }
+
+        try{
+            synchronized(poisonPill){
+                queue.put(poisonPill);
+                while(queue.contains(poisonPill)){
+                    poisonPill.wait();
+                }
+            }
+        } catch (InterruptedException e){
+            e.printStackTrace();
+        }
+    }
+
+    public void finishQueue() {
+        if(DEBUG) System.out.println("[FIFO] Finishing Queue");
+        try {
+            //Dummy cached page to act as low water mark
+            CachedPage lowWater = new CachedPage();
+            lowWater.setQueueInfo(new QueueInfo(true,false));
+            synchronized(lowWater){
+                queue.put(lowWater);
+                while(queue.contains(lowWater)){
+                        lowWater.wait();
+                }
+            }
+        } catch (InterruptedException e) {
+            // TODO what do we do here?
+            e.printStackTrace();
+        }
+        if(DEBUG) System.out.println("[FIFO] Queue finished");
+    }
+
+    @Override
+    public void run() {
+        if(DEBUG) System.out.println("[FIFO] Writer started");
+        boolean die = false;
+        while (!die) {
+            try {
+                ICachedPage entry = queue.take();
+                if(entry.getQueueInfo() != null && entry.getQueueInfo().hasWaiters()){
+                    synchronized(entry) {
+                        if(entry.getQueueInfo().isPoison()) { die = true; }
+                        entry.notifyAll();
+                        continue;
+                    }
+                }
+
+                if(DEBUG) System.out.println("[FIFO] Write " + BufferedFileHandle.getFileId(((CachedPage)entry).dpid)+","
+                        + BufferedFileHandle.getPageId(((CachedPage)entry).dpid));
+
+                try {
+                    pageQueue.getWriter().write(entry, bufferCache);
+                } catch (HyracksDataException e) {
+                    //TODO: What do we do, if we could not write the page?
+                    e.printStackTrace();
+                }
+            } catch(InterruptedException e) {
+                continue;
+            }
+        }
+    }
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
index 4f9d9ce..27d0423 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/BufferCache.java
@@ -20,12 +20,8 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
@@ -49,10 +45,11 @@
 
     private static final int MIN_CLEANED_COUNT_DIFF = 3;
     private static final int PIN_MAX_WAIT_TIME = 50;
+    public static final boolean DEBUG = false;
 
     private final int pageSize;
     private final int maxOpenFiles;
-    private final IIOManager ioManager;
+    final IIOManager ioManager;
     private final CacheBucket[] pageMap;
     private final IPageReplacementStrategy pageReplacementStrategy;
     private final IPageCleanerPolicy pageCleanerPolicy;
@@ -60,8 +57,16 @@
     private final CleanerThread cleanerThread;
     private final Map<Integer, BufferedFileHandle> fileInfoMap;
     private final Set<Integer> virtualFiles;
+    private final AsyncFIFOPageQueueManager fifoWriter;
+    //DEBUG
+    private ArrayList<CachedPage> confiscatedPages;
+    private Lock confiscateLock;
+    private HashMap<CachedPage, StackTraceElement[]> confiscatedPagesOwner;
+    private ConcurrentHashMap<CachedPage, StackTraceElement[]> pinnedPageOwner;
+    //!DEBUG
     private IIOReplicationManager ioReplicationManager;
-    private List<ICachedPageInternal> cachedPages = new ArrayList<ICachedPageInternal>();
+    public List<ICachedPageInternal> cachedPages = new ArrayList<ICachedPageInternal>();
+
     private boolean closed;
 
     public BufferCache(IIOManager ioManager, IPageReplacementStrategy pageReplacementStrategy,
@@ -85,6 +90,14 @@
         cleanerThread = new CleanerThread();
         executor.execute(cleanerThread);
         closed = false;
+
+        fifoWriter = new AsyncFIFOPageQueueManager(this);
+        if( DEBUG ) {
+            confiscatedPages = new ArrayList<CachedPage>();
+            confiscatedPagesOwner = new HashMap<CachedPage, StackTraceElement[]>();
+            confiscateLock = new ReentrantLock();
+            pinnedPageOwner = new ConcurrentHashMap<>();
+        }
     }
 
     //this constructor is used when replication is enabled to pass the IIOReplicationManager
@@ -126,8 +139,11 @@
 
     @Override
     public ICachedPage tryPin(long dpid) throws HyracksDataException {
-        // Calling the pinSanityCheck should be used only for debugging, since the synchronized block over the fileInfoMap is a hot spot.
-        //pinSanityCheck(dpid);
+        // Calling the pinSanityCheck should be used only for debugging, since
+        // the synchronized block over the fileInfoMap is a hot spot.
+        if (DEBUG) {
+            pinSanityCheck(dpid);
+        }
         CachedPage cPage = null;
         int hash = hash(dpid);
         CacheBucket bucket = pageMap[hash];
@@ -150,10 +166,27 @@
 
     @Override
     public ICachedPage pin(long dpid, boolean newPage) throws HyracksDataException {
-        // Calling the pinSanityCheck should be used only for debugging, since the synchronized block over the fileInfoMap is a hot spot.
-        //pinSanityCheck(dpid);
+        // Calling the pinSanityCheck should be used only for debugging, since
+        // the synchronized block over the fileInfoMap is a hot spot.
+        if (DEBUG) {
+            pinSanityCheck(dpid);
+        }
         CachedPage cPage = findPage(dpid, false);
         if (!newPage) {
+            if (DEBUG) {
+                confiscateLock.lock();
+                try {
+                    for (CachedPage c : confiscatedPages) {
+                        if (c.dpid == dpid && c.confiscated.get()) {
+                            while(confiscatedPages.contains(c)){
+                                throw new IllegalStateException();
+                            }
+                        }
+                    }
+                }finally{
+                    confiscateLock.unlock();
+                }
+            }
             // Resolve race of multiple threads trying to read the page from
             // disk.
             synchronized (cPage) {
@@ -166,40 +199,17 @@
             cPage.valid = true;
         }
         pageReplacementStrategy.notifyCachePageAccess(cPage);
-        return cPage;
-    }
-
-    @Override
-    /**
-     * Allocate and pin a virtual page. This is just like a normal page, except that it will never be flushed.
-     */
-    public ICachedPage pinVirtual(long vpid) throws HyracksDataException {
-        //pinSanityCheck(vpid);
-        CachedPage cPage = findPage(vpid, true);
-        cPage.virtual = true;
-        return cPage;
-    }
-
-    @Override
-    /**
-     * Takes a virtual page, and copies it to a new page at the physical identifier.
-     */
-    //TODO: I should not have to copy the page. I should just append it to the end of the hash bucket, but this is
-    //safer/easier for now.
-    public ICachedPage unpinVirtual(long vpid, long dpid) throws HyracksDataException {
-        CachedPage virtPage = findPage(vpid, true); //should definitely succeed.
-        //pinSanityCheck(dpid); //debug
-        ICachedPage realPage = pin(dpid, false);
-        virtPage.acquireReadLatch();
-        realPage.acquireWriteLatch();
-        try {
-            System.arraycopy(virtPage.buffer.array(), 0, realPage.getBuffer().array(), 0, virtPage.buffer.capacity());
-        } finally {
-            realPage.releaseWriteLatch(true);
-            virtPage.releaseReadLatch();
+        if(DEBUG){
+            pinnedPageOwner.put((CachedPage) cPage, Thread.currentThread().getStackTrace());
         }
-        virtPage.reset(-1); //now cause the virtual page to die
-        return realPage;
+        return cPage;
+    }
+
+
+
+    private boolean isVirtual(long vpid) throws HyracksDataException {
+        CachedPage virtPage = findPage(vpid, true);
+        return virtPage.confiscated.get();
     }
 
     private CachedPage findPage(long dpid, boolean virtual) throws HyracksDataException {
@@ -217,7 +227,13 @@
             try {
                 cPage = bucket.cachedPage;
                 while (cPage != null) {
+                    if(DEBUG) {
+                        assert bucket.cachedPage != bucket.cachedPage.next;
+                    }
                     if (cPage.dpid == dpid) {
+                        if(DEBUG) {
+                            assert !cPage.confiscated.get();
+                        }
                         cPage.pinCount.incrementAndGet();
                         return cPage;
                     }
@@ -237,28 +253,29 @@
                  * on the CachedPage may or may not be valid. 2. We have a pin
                  * on the CachedPage. We have to deal with three cases here.
                  * Case 1: The dpid on the CachedPage is invalid (-1). This
-                 * indicates that this buffer has never been used or is a virtual page. So we are the
-                 * only ones holding it. Get a lock on the required dpid's hash
-                 * bucket, check if someone inserted the page we want into the
-                 * table. If so, decrement the pincount on the victim and return
-                 * the winner page in the table. If such a winner does not
-                 * exist, insert the victim and return it. Case 2: The dpid on
-                 * the CachedPage is valid. Case 2a: The current dpid and
-                 * required dpid hash to the same bucket. Get the bucket lock,
-                 * check that the victim is still at pinCount == 1 If so check
-                 * if there is a winning CachedPage with the required dpid. If
-                 * so, decrement the pinCount on the victim and return the
-                 * winner. If not, update the contents of the CachedPage to hold
-                 * the required dpid and return it. If the picCount on the
-                 * victim was != 1 or CachedPage was dirty someone used the
-                 * victim for its old contents -- Decrement the pinCount and
-                 * retry. Case 2b: The current dpid and required dpid hash to
-                 * different buckets. Get the two bucket locks in the order of
-                 * the bucket indexes (Ordering prevents deadlocks). Check for
-                 * the existence of a winner in the new bucket and for potential
-                 * use of the victim (pinCount != 1). If everything looks good,
-                 * remove the CachedPage from the old bucket, and add it to the
-                 * new bucket and update its header with the new dpid.
+                 * indicates that this buffer has never been used or is a
+                 * confiscated page. So we are the only ones holding it. Get a lock
+                 * on the required dpid's hash bucket, check if someone inserted
+                 * the page we want into the table. If so, decrement the
+                 * pincount on the victim and return the winner page in the
+                 * table. If such a winner does not exist, insert the victim and
+                 * return it. Case 2: The dpid on the CachedPage is valid. Case
+                 * 2a: The current dpid and required dpid hash to the same
+                 * bucket. Get the bucket lock, check that the victim is still
+                 * at pinCount == 1 If so check if there is a winning CachedPage
+                 * with the required dpid. If so, decrement the pinCount on the
+                 * victim and return the winner. If not, update the contents of
+                 * the CachedPage to hold the required dpid and return it. If
+                 * the picCount on the victim was != 1 or CachedPage was dirty
+                 * someone used the victim for its old contents -- Decrement the
+                 * pinCount and retry. Case 2b: The current dpid and required
+                 * dpid hash to different buckets. Get the two bucket locks in
+                 * the order of the bucket indexes (Ordering prevents
+                 * deadlocks). Check for the existence of a winner in the new
+                 * bucket and for potential use of the victim (pinCount != 1).
+                 * If everything looks good, remove the CachedPage from the old
+                 * bucket, and add it to the new bucket and update its header
+                 * with the new dpid.
                  */
                 if (victim.dpid < 0) {
                     /*
@@ -266,11 +283,24 @@
                      */
                     bucket.bucketLock.lock();
                     try {
+                        if (DEBUG) {
+                            confiscateLock.lock();
+                            try{
+                                if (confiscatedPages.contains(victim)) {
+                                    throw new IllegalStateException();
+                                }
+                            } finally{
+                                confiscateLock.unlock();
+                            }
+                        }
                         cPage = bucket.cachedPage;
                         while (cPage != null) {
                             if (cPage.dpid == dpid) {
                                 cPage.pinCount.incrementAndGet();
                                 victim.pinCount.decrementAndGet();
+                                if(DEBUG) {
+                                    assert !cPage.confiscated.get();
+                                }
                                 return cPage;
                             }
                             cPage = cPage.next;
@@ -281,6 +311,10 @@
                     } finally {
                         bucket.bucketLock.unlock();
                     }
+
+                    if(DEBUG) {
+                        assert !victim.confiscated.get();
+                    }
                     return victim;
                 }
                 int victimHash = hash(victim.dpid);
@@ -294,11 +328,24 @@
                             victim.pinCount.decrementAndGet();
                             continue;
                         }
+                        if (DEBUG) {
+                            confiscateLock.lock();
+                            try{
+                                if (confiscatedPages.contains(victim)) {
+                                    throw new IllegalStateException();
+                                }
+                            }finally{
+                                confiscateLock.unlock();
+                            }
+                        }
                         cPage = bucket.cachedPage;
                         while (cPage != null) {
                             if (cPage.dpid == dpid) {
                                 cPage.pinCount.incrementAndGet();
                                 victim.pinCount.decrementAndGet();
+                                if(DEBUG) {
+                                    assert !victim.confiscated.get();
+                                }
                                 return cPage;
                             }
                             cPage = cPage.next;
@@ -307,6 +354,9 @@
                     } finally {
                         bucket.bucketLock.unlock();
                     }
+                    if(DEBUG) {
+                        assert !victim.confiscated.get();
+                    }
                     return victim;
                 } else {
                     /*
@@ -325,11 +375,19 @@
                             victim.pinCount.decrementAndGet();
                             continue;
                         }
+                        if (DEBUG) {
+                            if (confiscatedPages.contains(victim)) {
+                                throw new IllegalStateException();
+                            }
+                        }
                         cPage = bucket.cachedPage;
                         while (cPage != null) {
                             if (cPage.dpid == dpid) {
                                 cPage.pinCount.incrementAndGet();
                                 victim.pinCount.decrementAndGet();
+                                if(DEBUG) {
+                                    assert !cPage.confiscated.get();
+                                }
                                 return cPage;
                             }
                             cPage = cPage.next;
@@ -341,7 +399,9 @@
                             while (victimPrev != null && victimPrev.next != victim) {
                                 victimPrev = victimPrev.next;
                             }
-                            assert victimPrev != null;
+                            if(DEBUG) {
+                                assert victimPrev != null;
+                            }
                             victimPrev.next = victim.next;
                         }
                         victim.reset(dpid);
@@ -351,6 +411,9 @@
                         victimBucket.bucketLock.unlock();
                         bucket.bucketLock.unlock();
                     }
+                    if(DEBUG) {
+                        assert !victim.confiscated.get();
+                    }
                     return victim;
                 }
             }
@@ -382,9 +445,10 @@
                 .append('\n');
         buffer.append("Hash table size: ").append(pageMap.length).append('\n');
         buffer.append("Page Map:\n");
+        buffer.append("cpid -> [fileId:pageId, pinCount, valid/invalid, confiscated/physical, dirty/clean]");
         int nCachedPages = 0;
         for (int i = 0; i < pageMap.length; ++i) {
-            CacheBucket cb = pageMap[i];
+            final CacheBucket cb = pageMap[i];
             cb.bucketLock.lock();
             try {
                 CachedPage cp = cb.cachedPage;
@@ -395,6 +459,7 @@
                                 .append(BufferedFileHandle.getFileId(cp.dpid)).append(':')
                                 .append(BufferedFileHandle.getPageId(cp.dpid)).append(", ").append(cp.pinCount.get())
                                 .append(", ").append(cp.valid ? "valid" : "invalid").append(", ")
+                                .append(cp.confiscated.get() ? "confiscated" : "physical").append(", ")
                                 .append(cp.dirty.get() ? "dirty" : "clean").append("]\n");
                         cp = cp.next;
                         ++nCachedPages;
@@ -405,9 +470,61 @@
             }
         }
         buffer.append("Number of cached pages: ").append(nCachedPages).append('\n');
+        if(DEBUG){
+            confiscateLock.lock();
+            try{
+                buffer.append("Number of confiscated pages: ").append(confiscatedPages.size()).append('\n');
+            }
+            finally{
+                confiscateLock.unlock();
+            }
+        }
         return buffer.toString();
     }
 
+    @Override
+    public boolean isClean(){
+        List<Long> reachableDpids = new LinkedList<>();
+        synchronized (cachedPages) {
+            for (ICachedPageInternal internalPage : cachedPages) {
+            CachedPage c = (CachedPage) internalPage;
+                if (c.confiscated() ||
+                        c.latch.getReadLockCount() != 0 || c.latch.getWriteHoldCount() != 0) {
+                    return false;
+                }
+                if(c.valid){
+                    reachableDpids.add(c.dpid);
+                }
+            }
+        }
+        for(Long l: reachableDpids){
+            if(!canFindValidCachedPage(l)){
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private boolean canFindValidCachedPage(long dpid){
+        int hash = hash(dpid);
+        CachedPage cPage = null;
+        CacheBucket bucket = pageMap[hash];
+        bucket.bucketLock.lock();
+        try {
+            cPage = bucket.cachedPage;
+            while (cPage != null) {
+                assert bucket.cachedPage != bucket.cachedPage.next;
+                if (cPage.dpid == dpid) {
+                    return true;
+                }
+                cPage = cPage.next;
+            }
+        } finally {
+            bucket.bucketLock.unlock();
+        }
+        return false;
+    }
+
     private void read(CachedPage cPage) throws HyracksDataException {
         BufferedFileHandle fInfo = getFileInfo(cPage);
         cPage.buffer.clear();
@@ -415,9 +532,13 @@
                 cPage.buffer);
     }
 
-    private BufferedFileHandle getFileInfo(CachedPage cPage) throws HyracksDataException {
+    BufferedFileHandle getFileInfo(CachedPage cPage) throws HyracksDataException {
+        return getFileInfo(BufferedFileHandle.getFileId(cPage.dpid));
+    }
+
+    BufferedFileHandle getFileInfo(int fileId) throws HyracksDataException {
         synchronized (fileInfoMap) {
-            BufferedFileHandle fInfo = fileInfoMap.get(BufferedFileHandle.getFileId(cPage.dpid));
+            BufferedFileHandle fInfo = fileInfoMap.get(fileId);
             if (fInfo == null) {
                 throw new HyracksDataException("No such file mapped");
             }
@@ -425,15 +546,17 @@
         }
     }
 
-    private void write(CachedPage cPage) throws HyracksDataException {
+    void write(CachedPage cPage) throws HyracksDataException {
         BufferedFileHandle fInfo = getFileInfo(cPage);
-        if (fInfo.fileHasBeenDeleted()) {
-            return;
+        //synchronize on fInfo to prevent the file handle from being deleted until the page is written.
+        synchronized (fInfo) {
+            if (!fInfo.fileHasBeenDeleted()) {
+                cPage.buffer.position(0);
+                cPage.buffer.limit(pageSize);
+                ioManager.syncWrite(fInfo.getFileHandle(), (long) BufferedFileHandle.getPageId(cPage.dpid) * pageSize,
+                        cPage.buffer);
+            }
         }
-        cPage.buffer.position(0);
-        cPage.buffer.limit(pageSize);
-        ioManager.syncWrite(fInfo.getFileHandle(), (long) BufferedFileHandle.getPageId(cPage.dpid) * pageSize,
-                cPage.buffer);
     }
 
     @Override
@@ -441,6 +564,9 @@
         if (closed) {
             throw new HyracksDataException("unpin called on a closed cache");
         }
+        if(DEBUG){
+            pinnedPageOwner.remove(page);
+        }
         ((CachedPage) page).pinCount.decrementAndGet();
     }
 
@@ -460,7 +586,9 @@
 
     @Override
     public ICachedPageInternal getPage(int cpid) {
-        return cachedPages.get(cpid);
+        synchronized (cachedPages) {
+            return cachedPages.get(cpid);
+        }
     }
 
     private class CleanerThread extends Thread {
@@ -475,12 +603,12 @@
         private int cleanedCount = 0;
 
         public CleanerThread() {
-            setPriority(MAX_PRIORITY);
+            setPriority(Thread.NORM_PRIORITY);
             setDaemon(true);
         }
 
         public void cleanPage(CachedPage cPage, boolean force) {
-            if (cPage.dirty.get() && !cPage.virtual) {
+            if (cPage.dirty.get() && !cPage.confiscated.get()) {
                 boolean proceed = false;
                 if (force) {
                     cPage.latch.writeLock().lock();
@@ -516,8 +644,8 @@
                         }
                     }
                 } else if (shutdownStart) {
-                    throw new IllegalStateException("Cache closed, but unable to acquire read lock on dirty page: "
-                            + cPage.dpid);
+                    throw new IllegalStateException(
+                            "Cache closed, but unable to acquire read lock on dirty page: " + cPage.dpid);
                 }
             }
         }
@@ -527,10 +655,15 @@
             try {
                 while (true) {
                     pageCleanerPolicy.notifyCleanCycleStart(this);
-                    int numPages = pageReplacementStrategy.getNumPages();
-                    for (int i = 0; i < numPages; ++i) {
-                        CachedPage cPage = (CachedPage) cachedPages.get(i);
-                        cleanPage(cPage, false);
+                    int curPage = 0;
+                    while (true) {
+                        synchronized (cachedPages) {
+                            if (curPage >= pageReplacementStrategy.getNumPages()) {
+                                break;
+                            }
+                            cleanPage((CachedPage) cachedPages.get(curPage), false);
+                        }
+                        curPage++;
                     }
                     if (shutdownStart) {
                         break;
@@ -549,6 +682,7 @@
     @Override
     public void close() {
         closed = true;
+        fifoWriter.destroyQueue();
         synchronized (cleanerThread) {
             cleanerThread.shutdownStart = true;
             cleanerThread.notifyAll();
@@ -652,7 +786,7 @@
 
     private void sweepAndFlush(int fileId, boolean flushDirtyPages) throws HyracksDataException {
         for (int i = 0; i < pageMap.length; ++i) {
-            CacheBucket bucket = pageMap[i];
+            final CacheBucket bucket = pageMap[i];
             bucket.bucketLock.lock();
             try {
                 CachedPage prev = bucket.cachedPage;
@@ -696,7 +830,10 @@
                 pinCount = cPage.pinCount.get();
             }
             if (pinCount > 0) {
-                throw new IllegalStateException("Page is pinned and file is being closed. Pincount is: " + pinCount);
+                throw new IllegalStateException("Page " + BufferedFileHandle.getFileId(cPage.dpid) + ":"
+                        + BufferedFileHandle.getPageId(cPage.dpid)
+                        + " is pinned and file is being closed. Pincount is: " + pinCount + " Page is confiscated: "
+                        + cPage.confiscated);
             }
             cPage.invalidate();
             return true;
@@ -747,12 +884,8 @@
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info("Deleting file: " + fileId + " in cache: " + this);
         }
-        if (flushDirtyPages) {
-            synchronized (fileInfoMap) {
-                sweepAndFlush(fileId, flushDirtyPages);
-            }
-        }
         synchronized (fileInfoMap) {
+            sweepAndFlush(fileId, flushDirtyPages);
             BufferedFileHandle fInfo = null;
             try {
                 fInfo = fileInfoMap.get(fileId);
@@ -765,9 +898,11 @@
                     // Mark the fInfo as deleted,
                     // such that when its pages are reclaimed in openFile(),
                     // the pages are not flushed to disk but only invalidated.
-                    if (!fInfo.fileHasBeenDeleted()) {
-                        ioManager.close(fInfo.getFileHandle());
-                        fInfo.markAsDeleted();
+                    synchronized (fInfo) {
+                        if (!fInfo.fileHasBeenDeleted()) {
+                            ioManager.close(fInfo.getFileHandle());
+                            fInfo.markAsDeleted();
+                        }
                     }
                 }
             }
@@ -815,7 +950,9 @@
 
     @Override
     public void addPage(ICachedPageInternal page) {
-        cachedPages.add(page);
+        synchronized (cachedPages) {
+            cachedPages.add(page);
+        }
     }
 
     @Override
@@ -824,6 +961,214 @@
     }
 
     @Override
+    public int getNumPagesOfFile(int fileId) throws HyracksDataException {
+        synchronized (fileInfoMap) {
+            BufferedFileHandle fInfo = fileInfoMap.get(fileId);
+            if (fInfo == null) {
+                throw new HyracksDataException("No such file mapped for fileId:" + fileId);
+            }
+            if(DEBUG) {
+                assert ioManager.getSize(fInfo.getFileHandle()) % getPageSize() == 0;
+            }
+            return (int) (ioManager.getSize(fInfo.getFileHandle()) / getPageSize());
+        }
+    }
+
+    @Override
+    public void adviseWontNeed(ICachedPage page) {
+        pageReplacementStrategy.adviseWontNeed((ICachedPageInternal) page);
+    }
+
+    @Override
+    public ICachedPage confiscatePage(long dpid) throws HyracksDataException {
+        while (true) {
+            int startCleanedCount = cleanerThread.cleanedCount;
+            ICachedPage returnPage = null;
+            CachedPage victim = (CachedPage) pageReplacementStrategy.findVictim();
+            if (victim != null) {
+                if(DEBUG) {
+                    assert !victim.confiscated.get();
+                }
+                // find a page that would possibly be evicted anyway
+                // Case 1 from findPage()
+                if (victim.dpid < 0) { // new page
+                    if (victim.pinCount.get() != 1) {
+                        victim.pinCount.decrementAndGet();
+                        continue;
+                    }
+                    returnPage = victim;
+                    ((CachedPage) returnPage).dpid = dpid;
+                } else {
+                    // Case 2a/b
+                    int pageHash = hash(victim.getDiskPageId());
+                    CacheBucket bucket = pageMap[pageHash];
+                    bucket.bucketLock.lock();
+                    try {
+                        // readjust the next pointers to remove this page from
+                        // the pagemap
+                        CachedPage curr = bucket.cachedPage;
+                        CachedPage prev = null;
+                        boolean found = false;
+                        //traverse the bucket's linked list to find the victim.
+                        while (curr != null) {
+                            if (curr == victim) { // we found where the victim
+                                                  // resides in the hash table
+                                if (victim.pinCount.get() != 1) {
+                                    victim.pinCount.decrementAndGet();
+                                    break;
+                                }
+                                // if this is the first page in the bucket
+                                if (prev == null) {
+                                    if(DEBUG) {
+                                        assert curr != curr.next;
+                                    }
+                                    bucket.cachedPage = bucket.cachedPage.next;
+                                    found = true;
+                                    break;
+                                    // if it isn't we need to make the previous
+                                    // node point to where it should
+                                } else {
+                                    if(DEBUG) {
+                                        assert curr.next != curr;
+                                    }
+                                    prev.next = curr.next;
+                                    curr.next = null;
+                                    if(DEBUG) {
+                                        assert prev.next != prev;
+                                    }
+                                    found = true;
+                                    break;
+                                }
+                            }
+                            // go to the next entry
+                            prev = curr;
+                            curr = curr.next;
+                        }
+                        if (found) {
+                            returnPage = victim;
+                            ((CachedPage) returnPage).dpid = dpid;
+                        } //otherwise, someone took the same victim before we acquired the lock. try again!
+                    } finally {
+                        bucket.bucketLock.unlock();
+                    }
+                }
+            }
+            // if we found a page after all that, go ahead and finish
+            if (returnPage != null) {
+                ((CachedPage) returnPage).confiscated.set(true);
+                if (DEBUG) {
+                    confiscateLock.lock();
+                    try{
+                        confiscatedPages.add((CachedPage) returnPage);
+                        confiscatedPagesOwner.put((CachedPage) returnPage, Thread.currentThread().getStackTrace());
+                    }
+                    finally{
+                        confiscateLock.unlock();
+                    }
+                }
+                return returnPage;
+            }
+            // no page available to confiscate. try kicking the cleaner thread.
+            synchronized (cleanerThread) {
+                pageCleanerPolicy.notifyVictimNotFound(cleanerThread);
+            }
+            // Heuristic optimization. Check whether the cleaner thread has
+            // cleaned pages since we did our last pin attempt.
+            if (cleanerThread.cleanedCount - startCleanedCount > MIN_CLEANED_COUNT_DIFF) {
+                // Don't go to sleep and wait for notification from the cleaner,
+                // just try to pin again immediately.
+                continue;
+            }
+            synchronized (cleanerThread.cleanNotification) {
+                try {
+                    cleanerThread.cleanNotification.wait(PIN_MAX_WAIT_TIME);
+                } catch (InterruptedException e) {
+                    // Do nothing
+                }
+            }
+        }
+    }
+
+    @Override
+    public void returnPage(ICachedPage page) {
+        returnPage(page, true);
+    }
+
+    @Override
+    public void returnPage(ICachedPage page, boolean reinsert) {
+        CachedPage cPage = (CachedPage) page;
+        CacheBucket bucket = null;
+        if(!page.confiscated()){
+            return;
+        }
+        if (reinsert) {
+            int hash = hash(cPage.dpid);
+            bucket = pageMap[hash];
+            bucket.bucketLock.lock();
+            if(DEBUG) {
+                confiscateLock.lock();
+            }
+            try {
+                cPage.reset(cPage.dpid);
+                cPage.valid = true;
+                cPage.next = bucket.cachedPage;
+                bucket.cachedPage = cPage;
+                cPage.pinCount.decrementAndGet();
+                if(DEBUG){
+                    assert cPage.pinCount.get() == 0 ;
+                    assert cPage.latch.getReadLockCount() == 0;
+                    assert cPage.latch.getWriteHoldCount() == 0;
+                    confiscatedPages.remove(cPage);
+                    confiscatedPagesOwner.remove(cPage);
+                }
+            } finally {
+                bucket.bucketLock.unlock();
+                if(DEBUG) {
+                    confiscateLock.unlock();
+                }
+            }
+        } else {
+            cPage.invalidate();
+            cPage.pinCount.decrementAndGet();
+            if(DEBUG){
+                assert cPage.pinCount.get() == 0;
+                assert cPage.latch.getReadLockCount() == 0;
+                assert cPage.latch.getWriteHoldCount() == 0;
+                confiscateLock.lock();
+                try{
+                    confiscatedPages.remove(cPage);
+                    confiscatedPagesOwner.remove(cPage);
+                } finally{
+                    confiscateLock.unlock();
+                }
+            }
+        }
+        pageReplacementStrategy.adviseWontNeed(cPage);
+    }
+
+    @Override
+    public void setPageDiskId(ICachedPage page, long dpid) {
+        ((CachedPage) page).dpid = dpid;
+    }
+
+    @Override
+    public IFIFOPageQueue createFIFOQueue() {
+        return fifoWriter.createQueue(FIFOLocalWriter.instance());
+    }
+
+    @Override
+    public void finishQueue() {
+        fifoWriter.finishQueue();
+    }
+
+    @Override
+    public void copyPage(ICachedPage src, ICachedPage dst) {
+        CachedPage srcCast = (CachedPage) src;
+        CachedPage dstCast = (CachedPage) dst;
+        System.arraycopy(srcCast.buffer.array(), 0, dstCast.getBuffer().array(), 0, srcCast.buffer.capacity());
+    }
+
+    @Override
     public boolean isReplicationEnabled() {
         if (ioReplicationManager != null) {
             return ioReplicationManager.isReplicationEnabled();
@@ -832,7 +1177,23 @@
     }
 
     @Override
-    public IIOReplicationManager getIIOReplicationManager() {
+    public IIOReplicationManager getIOReplicationManager() {
         return ioReplicationManager;
     }
+
+    @Override
+    /**
+     * _ONLY_ call this if you absolutely, positively know this file has no dirty pages in the cache!
+     * Bypasses the normal lifecycle of a file handle and evicts all references to it immediately.
+     */
+    public void purgeHandle(int fileId) throws HyracksDataException{
+        synchronized(fileInfoMap){
+                BufferedFileHandle fh = fileInfoMap.get(fileId);
+                if(fh != null){
+                    ioManager.close(fh.getFileHandle());
+                    fileInfoMap.remove(fileId);
+                    fileMapManager.unregisterFile(fileId);
+                }
+        }
+    }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
index 0c0a618..305b577 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
@@ -21,24 +21,37 @@
 import java.nio.ByteBuffer;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 /**
  * @author yingyib
  */
-class CachedPage implements ICachedPageInternal {
+public class CachedPage implements ICachedPageInternal {
     final int cpid;
     final ByteBuffer buffer;
-    final AtomicInteger pinCount;
+    public final AtomicInteger pinCount;
     final AtomicBoolean dirty;
-    final ReadWriteLock latch;
+    final ReentrantReadWriteLock latch;
     private final Object replacementStrategyObject;
     private final IPageReplacementStrategy pageReplacementStrategy;
-    volatile long dpid;
+    volatile long dpid; // disk page id (composed of file id and page id)
     CachedPage next;
     volatile boolean valid;
-    volatile boolean virtual;
+    final AtomicBoolean confiscated;
+    private IQueueInfo queueInfo;
+
+    //Constructor for making dummy entry for FIFO queue
+    public CachedPage(){
+        this.cpid = -1;
+        this.buffer = null;
+        this.pageReplacementStrategy = null;
+        this.dirty = new AtomicBoolean(false);
+        this.confiscated = new AtomicBoolean(true);
+        pinCount = null;
+        queueInfo = null;
+        replacementStrategyObject = null;
+        latch =null;
+    }
 
     public CachedPage(int cpid, ByteBuffer buffer, IPageReplacementStrategy pageReplacementStrategy) {
         this.cpid = cpid;
@@ -50,14 +63,17 @@
         replacementStrategyObject = pageReplacementStrategy.createPerPageStrategyObject(cpid);
         dpid = -1;
         valid = false;
-        virtual = false;
+        confiscated = new AtomicBoolean(false);
+        queueInfo = null;
     }
 
     public void reset(long dpid) {
         this.dpid = dpid;
         dirty.set(false);
         valid = false;
+        confiscated.set(false);
         pageReplacementStrategy.notifyCachePageReset(this);
+        queueInfo = null;
     }
 
     public void invalidate() {
@@ -76,10 +92,11 @@
 
     @Override
     public boolean pinIfGoodVictim() {
-        if (virtual)
+        if (confiscated.get())
             return false; //i am not a good victim because i cant flush!
-        else
+        else {
             return pinCount.compareAndSet(0, 1);
+        }
     }
 
     @Override
@@ -104,11 +121,43 @@
 
     @Override
     public void releaseWriteLatch(boolean markDirty) {
-        if (markDirty) {
-            if (dirty.compareAndSet(false, true)) {
-                pinCount.incrementAndGet();
+        try {
+            if (markDirty) {
+                if (dirty.compareAndSet(false, true)) {
+                    pinCount.incrementAndGet();
+                }
             }
+        } finally {
+            latch.writeLock().unlock();
         }
-        latch.writeLock().unlock();
     }
+
+    @Override
+    public boolean confiscated() {
+        return confiscated.get();
+    }
+
+    @Override
+    public IQueueInfo getQueueInfo() {
+        return queueInfo;
+    }
+
+    @Override
+    public void setQueueInfo(IQueueInfo queueInfo) {
+        this.queueInfo = queueInfo;
+    }
+
+    @Override
+    public long getDiskPageId() {
+        return dpid;
+    }
+
+    CachedPage getNext() {
+        return next;
+    }
+
+    void setNext(CachedPage next) {
+        this.next = next;
+    }
+
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ClockPageReplacementStrategy.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ClockPageReplacementStrategy.java
index 6050b22..6a82b97 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ClockPageReplacementStrategy.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ClockPageReplacementStrategy.java
@@ -25,9 +25,10 @@
     private static final int MAX_UNSUCCESSFUL_CYCLE_COUNT = 3;
 
     private IBufferCacheInternal bufferCache;
-    private int clockPtr;
+    private AtomicInteger clockPtr;
     private ICacheMemoryAllocator allocator;
-    private AtomicInteger numPages = new AtomicInteger(0);
+    private AtomicInteger numPages;
+    private AtomicInteger cpIdCounter;
     private final int pageSize;
     private final int maxAllowedNumPages;
 
@@ -35,7 +36,9 @@
         this.allocator = allocator;
         this.pageSize = pageSize;
         this.maxAllowedNumPages = maxAllowedNumPages;
-        clockPtr = 0;
+        this.clockPtr = new AtomicInteger(0);
+        this.numPages = new AtomicInteger(0);
+        this.cpIdCounter = new AtomicInteger(0);
     }
 
     @Override
@@ -61,9 +64,7 @@
     @Override
     public ICachedPageInternal findVictim() {
         ICachedPageInternal cachedPage = null;
-        int pageCount = getNumPages();
-        // pageCount is a lower-bound of numPages.
-        if (pageCount >= maxAllowedNumPages) {
+        if (numPages.get() >= maxAllowedNumPages) {
             cachedPage = findVictimByEviction();
         } else {
             cachedPage = allocatePage();
@@ -72,10 +73,12 @@
     }
 
     private ICachedPageInternal findVictimByEviction() {
-        int startClockPtr = clockPtr;
+        //check if we're starved from confiscation
+        assert (maxAllowedNumPages > 0);
+        int startClockPtr = clockPtr.get();
         int cycleCount = 0;
         do {
-            ICachedPageInternal cPage = bufferCache.getPage(clockPtr);
+            ICachedPageInternal cPage = bufferCache.getPage(clockPtr.get());
 
             /*
              * We do two things here:
@@ -88,36 +91,26 @@
             AtomicBoolean accessedFlag = getPerPageObject(cPage);
             if (!accessedFlag.compareAndSet(true, false)) {
                 if (cPage.pinIfGoodVictim()) {
-                    return cPage;
+                        return cPage;
                 }
             }
-            /**
-             * The clockPtr may miss the last added pages in this round.
-             */
-            clockPtr = (clockPtr + 1) % getNumPages();
-            if (clockPtr == startClockPtr) {
+            advanceClock();
+            if (clockPtr.get() == startClockPtr) {
                 ++cycleCount;
             }
         } while (cycleCount < MAX_UNSUCCESSFUL_CYCLE_COUNT);
         return null;
     }
 
-    /**
-     * The number returned here could only be smaller or equal to the actual number
-     * of pages, because numPages is monotonically incremented.
-     */
     @Override
     public int getNumPages() {
         return numPages.get();
     }
 
     private ICachedPageInternal allocatePage() {
-        CachedPage cPage = null;
-        synchronized (this) {
-            cPage = new CachedPage(numPages.get(), allocator.allocate(pageSize, 1)[0], this);
-            bufferCache.addPage(cPage);
-            numPages.incrementAndGet();
-        }
+        CachedPage cPage = new CachedPage(cpIdCounter.getAndIncrement(), allocator.allocate(pageSize, 1)[0], this);
+        bufferCache.addPage(cPage);
+        numPages.incrementAndGet();
         AtomicBoolean accessedFlag = getPerPageObject(cPage);
         if (!accessedFlag.compareAndSet(true, false)) {
             if (cPage.pinIfGoodVictim()) {
@@ -127,6 +120,21 @@
         return null;
     }
 
+    //derived from RoundRobinAllocationPolicy in Apache directmemory
+    private int advanceClock(){
+        boolean clockInDial = false;
+        int newClockPtr = 0;
+        do
+        {
+            int currClockPtr = clockPtr.get();
+            newClockPtr = ( currClockPtr + 1 ) % numPages.get();
+            clockInDial = clockPtr.compareAndSet( currClockPtr, newClockPtr );
+        }
+        while ( !clockInDial );
+        return newClockPtr;
+
+    }
+
     private AtomicBoolean getPerPageObject(ICachedPageInternal cPage) {
         return (AtomicBoolean) cPage.getReplacementStrategyObject();
     }
@@ -140,4 +148,10 @@
     public int getMaxAllowedNumPages() {
         return maxAllowedNumPages;
     }
-}
\ No newline at end of file
+
+    @Override
+    public void adviseWontNeed(ICachedPageInternal cPage) {
+        //make the page appear as if it wasn't accessed even if it was
+        getPerPageObject(cPage).set(false);
+    }
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
index 2211af7..0c7f679 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
@@ -182,29 +182,70 @@
     }
 
     @Override
-    public ICachedPage pinVirtual(long vpid) throws HyracksDataException {
-        pinCount.addAndGet(1);
-        return bufferCache.pinVirtual(vpid);
+    public int getNumPagesOfFile(int fileId) throws HyracksDataException {
+        return bufferCache.getNumPagesOfFile(fileId);
     }
 
     @Override
-    public ICachedPage unpinVirtual(long vpid, long dpid) throws HyracksDataException {
-        unpinCount.addAndGet(1);
-        return bufferCache.unpinVirtual(vpid, dpid);
+    public void adviseWontNeed(ICachedPage page) {
+        bufferCache.adviseWontNeed(page);
+    }
+
+    @Override
+    public ICachedPage confiscatePage(long dpid) throws HyracksDataException {
+        return bufferCache.confiscatePage(dpid);
+    }
+
+    @Override
+    public void returnPage(ICachedPage page) {
+        bufferCache.returnPage(page);
+    }
+
+    @Override
+    public IFIFOPageQueue createFIFOQueue() {
+        return bufferCache.createFIFOQueue();
+    }
+
+    @Override
+    public void finishQueue() {
+        bufferCache.finishQueue();
+    }
+
+    @Override
+    public void copyPage(ICachedPage src, ICachedPage dst) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setPageDiskId(ICachedPage page, long dpid) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void returnPage(ICachedPage page, boolean reinsert) {
+        // TODO Auto-generated method stub
+
     }
 
     @Override
     public int getFileReferenceCount(int fileId) {
         return bufferCache.getFileReferenceCount(fileId);
     }
-    
+
     @Override
     public boolean isReplicationEnabled() {
         return false;
     }
 
     @Override
-    public IIOReplicationManager getIIOReplicationManager() {
+    public IIOReplicationManager getIOReplicationManager() {
         return null;
     }
+
+    @Override
+    public void purgeHandle(int fileId) throws HyracksDataException {
+        bufferCache.purgeHandle(fileId);
+    }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DelayPageCleanerPolicy.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DelayPageCleanerPolicy.java
index e019d05..276e26a 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DelayPageCleanerPolicy.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DelayPageCleanerPolicy.java
@@ -45,4 +45,4 @@
     public void notifyVictimNotFound(Object monitor) throws HyracksDataException {
         monitor.notifyAll();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DirectBufferAllocator.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DirectBufferAllocator.java
index c5bf1c1..59455ff 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DirectBufferAllocator.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DirectBufferAllocator.java
@@ -20,6 +20,8 @@
 
 import java.nio.ByteBuffer;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
 public class DirectBufferAllocator implements ICacheMemoryAllocator {
     @Override
     public ByteBuffer[] allocate(int pageSize, int numPages) {
@@ -29,4 +31,9 @@
         }
         return buffers;
     }
-}
\ No newline at end of file
+
+    @Override
+    public ByteBuffer[] ensureAvailabilityThenAllocate(int pageSize, int numPages) throws HyracksDataException {
+        return allocate(pageSize, numPages);
+    }
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
new file mode 100644
index 0000000..78be314
--- /dev/null
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2009-2013 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 org.apache.hyracks.storage.common.buffercache;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.file.BufferedFileHandle;
+
+public class FIFOLocalWriter implements IFIFOPageWriter {
+    private static FIFOLocalWriter instance;
+    private static boolean DEBUG = false;
+
+    public static FIFOLocalWriter instance() {
+        if(instance == null) {
+            instance = new FIFOLocalWriter();
+        }
+        return instance;
+    }
+
+    @Override
+    public void write(ICachedPage page, BufferCache bufferCache) throws HyracksDataException {
+        CachedPage cPage = (CachedPage)page;
+        try {
+            bufferCache.write(cPage);
+        } finally {
+            bufferCache.returnPage(cPage);
+            if (DEBUG) {
+                System.out.println("[FIFO] Return page: " + cPage.cpid + "," + cPage.dpid);
+            }
+        }
+    }
+
+    @Override
+    public void sync(int fileId, BufferCache bufferCache) throws HyracksDataException {
+        bufferCache.force(fileId,true);
+    }
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/HeapBufferAllocator.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/HeapBufferAllocator.java
index d450176..83850c0 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/HeapBufferAllocator.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/HeapBufferAllocator.java
@@ -20,6 +20,8 @@
 
 import java.nio.ByteBuffer;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
 public class HeapBufferAllocator implements ICacheMemoryAllocator {
     @Override
     public ByteBuffer[] allocate(int pageSize, int numPages) {
@@ -29,4 +31,9 @@
         }
         return buffers;
     }
-}
\ No newline at end of file
+
+    @Override
+    public ByteBuffer[] ensureAvailabilityThenAllocate(int pageSize, int numPages) throws HyracksDataException {
+        return allocate(pageSize, numPages);
+    }
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
index 24d6255..ffde5c4 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
@@ -19,10 +19,15 @@
 package org.apache.hyracks.storage.common.buffercache;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.io.IFileHandle;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.replication.IIOReplicationManager;
 
 public interface IBufferCache {
+
+    public static final long INVALID_DPID = -1l;
+    public static final int INVALID_PAGEID = -1;
+
     public void createFile(FileReference fileRef) throws HyracksDataException;
 
     public int createMemFile() throws HyracksDataException;
@@ -39,26 +44,42 @@
 
     public ICachedPage pin(long dpid, boolean newPage) throws HyracksDataException;
 
-    public ICachedPage pinVirtual(long vpid) throws HyracksDataException;
-
-    public ICachedPage unpinVirtual(long vpid, long dpid) throws HyracksDataException;
-
     public void unpin(ICachedPage page) throws HyracksDataException;
 
     public void flushDirtyPage(ICachedPage page) throws HyracksDataException;
 
+    public void adviseWontNeed(ICachedPage page);
+
+    public ICachedPage confiscatePage(long dpid) throws HyracksDataException;
+
+    public void returnPage(ICachedPage page);
+
+    public void returnPage(ICachedPage page, boolean reinsert);
+
     public void force(int fileId, boolean metadata) throws HyracksDataException;
 
     public int getPageSize();
 
     public int getNumPages();
 
+    public int getNumPagesOfFile(int fileId) throws HyracksDataException;
+
     public int getFileReferenceCount(int fileId);
 
     public void close() throws HyracksDataException;
-    
+
+    public IFIFOPageQueue createFIFOQueue();
+
+    public void finishQueue();
+
+    void copyPage(ICachedPage src, ICachedPage dst);
+
+    void setPageDiskId(ICachedPage page, long dpid);
+
     public boolean isReplicationEnabled();
 
-    public IIOReplicationManager getIIOReplicationManager();
+    public IIOReplicationManager getIOReplicationManager();
+
+    void purgeHandle(int fileId) throws HyracksDataException;
 
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCacheInternal.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCacheInternal.java
index 7c9f01f..ec05542 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCacheInternal.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCacheInternal.java
@@ -19,7 +19,9 @@
 package org.apache.hyracks.storage.common.buffercache;
 
 public interface IBufferCacheInternal extends IBufferCache {
+    boolean isClean();
+
     public ICachedPageInternal getPage(int cpid);
 
     public void addPage(ICachedPageInternal page);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java
index bb85bd1..e8eb6e3 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java
@@ -20,6 +20,24 @@
 
 import java.nio.ByteBuffer;
 
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
 public interface ICacheMemoryAllocator {
+    /**
+     * @param pageSize
+     * @param numPages
+     * @return a ByteBuffer array of size numPages and each buffer of size pageSize.
+     */
     public ByteBuffer[] allocate(int pageSize, int numPages);
-}
\ No newline at end of file
+
+    /**
+     * Ensures the availability of the memory budget with the ResourceMemoryManager (if exists) before allocation. Otherwise, it acts as a call to {@link #allocate(int, int)}
+     *
+     * @param pageSize
+     * @param numPages
+     * @return
+     * @throws HyracksDataException
+     */
+    public ByteBuffer[] ensureAvailabilityThenAllocate(int pageSize, int numPages) throws HyracksDataException;
+
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
index c8c3ab1..12dde49 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
@@ -30,4 +30,10 @@
     public void acquireWriteLatch();
 
     public void releaseWriteLatch(boolean markDirty);
-}
\ No newline at end of file
+
+    public boolean confiscated();
+
+    public IQueueInfo getQueueInfo();
+
+    public void setQueueInfo(IQueueInfo queueInfo);
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPageInternal.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPageInternal.java
index 908af18..497192d 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPageInternal.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPageInternal.java
@@ -21,7 +21,10 @@
 public interface ICachedPageInternal extends ICachedPage {
     public int getCachedPageId();
 
+    public long getDiskPageId();
+
     public Object getReplacementStrategyObject();
 
     public boolean pinIfGoodVictim();
-}
\ No newline at end of file
+
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IFIFOPageQueue.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IFIFOPageQueue.java
new file mode 100644
index 0000000..0fe5767
--- /dev/null
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IFIFOPageQueue.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2009-2013 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 org.apache.hyracks.storage.common.buffercache;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public interface IFIFOPageQueue {
+    public void put(ICachedPage page) throws HyracksDataException;
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IFIFOPageWriter.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IFIFOPageWriter.java
new file mode 100644
index 0000000..7380261
--- /dev/null
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IFIFOPageWriter.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2009-2013 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 org.apache.hyracks.storage.common.buffercache;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+
+public interface IFIFOPageWriter {
+    public void write(ICachedPage page, BufferCache bufferCache) throws HyracksDataException;
+
+    void sync(int fileId, BufferCache bufferCache) throws HyracksDataException;
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java
index 9c18018..897ae75 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java
@@ -22,13 +22,13 @@
 
 /**
  * Allows customization of the page cleaning strategy by the cleaner thread.
- * 
+ *
  * @author vinayakb
  */
 public interface IPageCleanerPolicy {
     /**
      * Callback from the cleaner just before the beginning of a cleaning cycle.
-     * 
+     *
      * @param monitor
      *            - The monitor on which a mutex is held while in this call
      * @throws HyracksDataException
@@ -37,7 +37,7 @@
 
     /**
      * Callback from the cleaner just after the finish of a cleaning cycle.
-     * 
+     *
      * @param monitor
      *            - The monitor on which a mutex is held while in this call.
      * @throws HyracksDataException
@@ -46,10 +46,10 @@
 
     /**
      * Callback to indicate that no victim was found.
-     * 
+     *
      * @param monitor
      *            - The monitor on which a mutex is held while in this call.
      * @throws HyracksDataException
      */
     public void notifyVictimNotFound(Object monitor) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageReplacementStrategy.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageReplacementStrategy.java
index 2ecf6b3..661d363 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageReplacementStrategy.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageReplacementStrategy.java
@@ -27,6 +27,8 @@
 
     public void notifyCachePageAccess(ICachedPageInternal cPage);
 
+    public void adviseWontNeed(ICachedPageInternal cPage);
+
     public ICachedPageInternal findVictim();
 
     public int getNumPages();
@@ -34,4 +36,4 @@
     public int getPageSize();
 
     public int getMaxAllowedNumPages();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IQueueInfo.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IQueueInfo.java
new file mode 100644
index 0000000..f214639
--- /dev/null
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IQueueInfo.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2009-2013 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 org.apache.hyracks.storage.common.buffercache;
+
+public interface IQueueInfo {
+
+    /**
+     * Returns whether this queued page should notify all waiters (i.e. it is a low water mark)
+     * @return
+     */
+
+    boolean hasWaiters();
+
+    /**
+     * Whether or not this cached page is a poisoned page.
+     * @return
+     */
+
+    boolean isPoison();
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/QueueInfo.java
similarity index 65%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java
rename to hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/QueueInfo.java
index 1dfccfd..bc69bc8 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/QueueInfo.java
@@ -16,21 +16,26 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.hyracks.storage.common.buffercache;
 
-package org.apache.hyracks.dataflow.std.sort;
+public class QueueInfo implements IQueueInfo{
 
-import org.apache.hyracks.api.comm.IFrameReader;
+    private final boolean poison;
+    private final boolean waiters;
 
-public class RunAndMaxFrameSizePair {
-    public IFrameReader run;
-    public int maxFrameSize;
-
-    public RunAndMaxFrameSizePair(IFrameReader run, int maxFrameSize) {
-        this.run = run;
-        this.maxFrameSize = maxFrameSize;
+    public QueueInfo(boolean waiters, boolean poison){
+        this.waiters = waiters;
+        this.poison = poison;
     }
 
-    void updateSize(int newMaxSize){
-        this.maxFrameSize = newMaxSize;
+    @Override
+    public boolean hasWaiters(){
+        return waiters;
+
+    }
+
+    @Override
+    public boolean isPoison(){
+        return poison;
     }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ResourceHeapBufferAllocator.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ResourceHeapBufferAllocator.java
new file mode 100644
index 0000000..934fe06
--- /dev/null
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ResourceHeapBufferAllocator.java
@@ -0,0 +1,50 @@
+/*
+ * 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.hyracks.storage.common.buffercache;
+
+import java.nio.ByteBuffer;
+
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.IResourceMemoryManager;
+
+public class ResourceHeapBufferAllocator implements ICacheMemoryAllocator {
+
+    final IResourceMemoryManager memoryManager;
+    final String resourceName;
+
+    public ResourceHeapBufferAllocator(IResourceMemoryManager memoryManager, String resourceName) {
+        this.memoryManager = memoryManager;
+        this.resourceName = resourceName;
+    }
+
+    @Override
+    public ByteBuffer[] allocate(int pageSize, int numPages) {
+        ByteBuffer[] buffers = new ByteBuffer[numPages];
+        for (int i = 0; i < numPages; ++i) {
+            buffers[i] = ByteBuffer.allocate(pageSize);
+        }
+        return buffers;
+    }
+
+    @Override
+    public ByteBuffer[] ensureAvailabilityThenAllocate(int pageSize, int numPages) throws HyracksDataException {
+        memoryManager.allocateMemory(resourceName);
+        return allocate(pageSize, numPages);
+    }
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
index 3faa675..aecbd17 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/BufferedFileHandle.java
@@ -76,4 +76,4 @@
     public static int getPageId(long dpid) {
         return (int) (dpid & 0xffffffff);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java
index c7d5359..acb4ba2 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java
@@ -23,13 +23,13 @@
 
 /**
  * Maintains the mapping between file names and file ids.
- * 
+ *
  * @author vinayakb
  */
 public interface IFileMapManager extends IFileMapProvider {
     /**
      * Register a new file name.
-     * 
+     *
      * @param fileRef
      *            - file reference to register
      * @throws HyracksDataException
@@ -39,15 +39,15 @@
 
     /**
      * Unregister a file mapping
-     * 
+     *
      * @param fileId
      *            - The file id whose mapping is to be unregistered.
      * @throws HyracksDataException
      *             - If the fileid is not mapped currently in this manager.
      */
     public void unregisterFile(int fileId) throws HyracksDataException;
-    
+
     public int registerMemoryFile();
-    
+
     public void unregisterMemFile(int fileId) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java
index 158d1b2..16ee6a6 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java
@@ -26,7 +26,7 @@
 public interface IFileMapProvider extends Serializable {
     /**
      * Indicates if a given fileId is mapped
-     * 
+     *
      * @param fileId
      * @return <code>true</code> if the given fileId is mapped, <code>false</code> otherwise.
      */
@@ -34,7 +34,7 @@
 
     /**
      * Indicates if a given file name is mapped.
-     * 
+     *
      * @param fileRef
      * @return <code>true</code> if the given file name is mapped, <code>false</code> otherwise.
      */
@@ -42,7 +42,7 @@
 
     /**
      * Lookup the file id for a file name
-     * 
+     *
      * @param fileRef
      *            - The file name whose id should be looked up.
      * @return The file id
@@ -53,7 +53,7 @@
 
     /**
      * Lookup the file name for a file id
-     * 
+     *
      * @param fileId
      *            - The file id whose name should be looked up.
      * @return The file reference
@@ -61,5 +61,5 @@
      *             - If the file id is not mapped currently in this manager.
      */
     public FileReference lookupFileName(int fileId) throws HyracksDataException;
-    
-}
\ No newline at end of file
+
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceFactory.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceFactory.java
index 9133a7e..f5e7010 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceFactory.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceFactory.java
@@ -19,5 +19,5 @@
 package org.apache.hyracks.storage.common.file;
 
 public interface ILocalResourceFactory {
-    public LocalResource createLocalResource(long resourceId, String resourceName, int partition);
+    public LocalResource createLocalResource(long resourceId, String resourceName, int partition, String resourcePath);
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceRepository.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceRepository.java
index a826226..eef76a8 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceRepository.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ILocalResourceRepository.java
@@ -18,21 +18,15 @@
  */
 package org.apache.hyracks.storage.common.file;
 
-import java.util.List;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface ILocalResourceRepository {
 
-    public LocalResource getResourceById(long id) throws HyracksDataException;
-
-    public LocalResource getResourceByName(String name) throws HyracksDataException;
+    public LocalResource getResourceByPath(String name) throws HyracksDataException;
 
     public void insert(LocalResource resource) throws HyracksDataException;
 
-    public void deleteResourceById(long id) throws HyracksDataException;
+    public void deleteResourceByPath(String name) throws HyracksDataException;
 
-    public void deleteResourceByName(String name) throws HyracksDataException;
-
-    public List<LocalResource> getAllResources() throws HyracksDataException;
+    public long getMaxResourceID() throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IResourceIdFactory.java
similarity index 72%
copy from hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
copy to hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IResourceIdFactory.java
index 3dbe0ab..a7bfa10 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IFreePageManagerFactory.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IResourceIdFactory.java
@@ -16,8 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.storage.am.common.api;
+package org.apache.hyracks.storage.common.file;
 
-public interface IFreePageManagerFactory {
-    public IFreePageManager createFreePageManager();
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public interface IResourceIdFactory {
+
+    /**
+     * @return A unique monotonically increasing id.
+     * @throws Exception
+     */
+    long createId() throws HyracksDataException;
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/LocalResource.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/LocalResource.java
index 59190b1..eba0119 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/LocalResource.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/LocalResource.java
@@ -27,6 +27,7 @@
     private final int partition;
     private final int resourceType;
     private final Object object;
+    private String resourcePath;
 
     public static final int TransientResource = 0;
     public static final int LSMBTreeResource = 1;
@@ -36,10 +37,12 @@
     public static final int ExternalRTreeResource = 5;
     public static final int ExternalBTreeWithBuddyResource = 6;
 
-    public LocalResource(long resourceId, String resourceName, int partition, int resourceType, Object object) {
+    public LocalResource(long resourceId, String resourceName, int partition, String resourcePath, int resourceType,
+            Object object) {
         this.resourceId = resourceId;
         this.resourceName = resourceName;
         this.partition = partition;
+        this.resourcePath = resourcePath;
         this.resourceType = resourceType;
         this.object = object;
     }
@@ -63,4 +66,12 @@
     public Object getResourceObject() {
         return object;
     }
+
+    public String getResourcePath() {
+        return resourcePath;
+    }
+
+    public void setResourcePath(String resourcePath) {
+        this.resourcePath = resourcePath;
+    }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactory.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactory.java
index 3b5ea03..625d247 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactory.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactory.java
@@ -20,18 +20,15 @@
 
 import java.util.concurrent.atomic.AtomicLong;
 
-public class ResourceIdFactory {
+public class ResourceIdFactory implements IResourceIdFactory {
     private AtomicLong id = null;
 
     public ResourceIdFactory(long initialValue) {
         id = new AtomicLong(initialValue);
     }
 
+    @Override
     public long createId() {
         return id.getAndIncrement();
     }
-    
-    public void initId(long id) {
-        this.id.set(id);
-    }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactoryProvider.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactoryProvider.java
index bbbc581..c30ba4d 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactoryProvider.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/ResourceIdFactoryProvider.java
@@ -18,8 +18,6 @@
  */
 package org.apache.hyracks.storage.common.file;
 
-import java.util.List;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class ResourceIdFactoryProvider {
@@ -30,13 +28,7 @@
     }
 
     public ResourceIdFactory createResourceIdFactory() throws HyracksDataException {
-        List<LocalResource> localResources = localResourceRepository.getAllResources();
-        long largestResourceId = 0;
-        for (LocalResource localResource : localResources) {
-            if (largestResourceId < localResource.getResourceId()) {
-                largestResourceId = localResource.getResourceId();
-            }
-        }
+        long largestResourceId = localResourceRepository.getMaxResourceID();
         return new ResourceIdFactory(largestResourceId);
     }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientFileMapManager.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientFileMapManager.java
index e28826d..05ff825 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientFileMapManager.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientFileMapManager.java
@@ -83,4 +83,4 @@
     public void unregisterMemFile(int fileId) throws HyracksDataException {
         id2nameMap.remove(fileId);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactory.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactory.java
index 49c6842..527f55e 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactory.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactory.java
@@ -21,7 +21,7 @@
 public class TransientLocalResourceFactory implements ILocalResourceFactory {
 
     @Override
-    public LocalResource createLocalResource(long resourceId, String resourceName, int partition) {
-        return new LocalResource(resourceId, resourceName, partition, LocalResource.TransientResource, null);
+    public LocalResource createLocalResource(long resourceId, String resourceName, int partition, String resourcePath) {
+        return new LocalResource(resourceId, resourceName, partition, resourcePath, LocalResource.TransientResource, null);
     }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java
index 709fd77..4394f69 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java
@@ -19,7 +19,7 @@
 package org.apache.hyracks.storage.common.file;
 
 public class TransientLocalResourceFactoryProvider implements ILocalResourceFactoryProvider {
-    
+
     private static final long serialVersionUID = 1L;
 
     @Override
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceRepository.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceRepository.java
index b3e9db0..35add93 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceRepository.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceRepository.java
@@ -18,26 +18,19 @@
  */
 package org.apache.hyracks.storage.common.file;
 
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class TransientLocalResourceRepository implements ILocalResourceRepository {
 
-    private Map<String, LocalResource> name2ResourceMap = new HashMap<String, LocalResource>();
+    private Map<String, LocalResource> path2ResourceMap = new HashMap<String, LocalResource>();
     private Map<Long, LocalResource> id2ResourceMap = new HashMap<Long, LocalResource>();
 
     @Override
-    public LocalResource getResourceById(long id) throws HyracksDataException {
-        return id2ResourceMap.get(id);
-    }
-
-    @Override
-    public LocalResource getResourceByName(String name) throws HyracksDataException {
-        return name2ResourceMap.get(name);
+    public LocalResource getResourceByPath(String path) throws HyracksDataException {
+        return path2ResourceMap.get(path);
     }
 
     @Override
@@ -48,35 +41,26 @@
             throw new HyracksDataException("Duplicate resource");
         }
         id2ResourceMap.put(id, resource);
-        name2ResourceMap.put(resource.getResourceName(), resource);
+        path2ResourceMap.put(resource.getResourcePath(), resource);
     }
 
     @Override
-    public synchronized void deleteResourceById(long id) throws HyracksDataException {
-        LocalResource resource = id2ResourceMap.get(id);
-        if (resource == null) {
-            throw new HyracksDataException("Resource doesn't exist");
-        }
-        id2ResourceMap.remove(id);
-        name2ResourceMap.remove(resource.getResourceName());
-    }
-
-    @Override
-    public synchronized void deleteResourceByName(String name) throws HyracksDataException {
-        LocalResource resource = name2ResourceMap.get(name);
+    public synchronized void deleteResourceByPath(String path) throws HyracksDataException {
+        LocalResource resource = path2ResourceMap.get(path);
         if (resource == null) {
             throw new HyracksDataException("Resource doesn't exist");
         }
         id2ResourceMap.remove(resource.getResourceId());
-        name2ResourceMap.remove(name);
+        path2ResourceMap.remove(path);
     }
 
     @Override
-    public List<LocalResource> getAllResources() throws HyracksDataException {
-        List<LocalResource> resources = new ArrayList<LocalResource>();
-        for (LocalResource resource : id2ResourceMap.values()) {
-            resources.add(resource);
+    public long getMaxResourceID() throws HyracksDataException {
+        long maxResourceId = 0;
+
+        for (Long resourceId : id2ResourceMap.keySet()) {
+            maxResourceId = Math.max(maxResourceId, resourceId);
         }
-        return resources;
+        return maxResourceId;
     }
 }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/sync/LatchType.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/sync/LatchType.java
index 473811d..02add29 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/sync/LatchType.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/sync/LatchType.java
@@ -21,4 +21,4 @@
 public enum LatchType {
     LATCH_X,
     LATCH_S
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/pom.xml b/hyracks/hyracks-test-support/pom.xml
index 54d4a2a..ef6f58c 100644
--- a/hyracks/hyracks-test-support/pom.xml
+++ b/hyracks/hyracks-test-support/pom.xml
@@ -40,24 +40,8 @@
   <properties>
       <root.dir>${basedir}/../..</root.dir>
   </properties>
-
-  <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
     <dependency>
-      <!-- Dependency management inherited from top-level hyracks -->
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractModificationOperationCallbackTest.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractModificationOperationCallbackTest.java
index eebbf66..a9b2e1f 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractModificationOperationCallbackTest.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractModificationOperationCallbackTest.java
@@ -18,11 +18,6 @@
  */
 package org.apache.hyracks.storage.am.btree;
 
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
@@ -32,6 +27,10 @@
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.config.AccessMethodTestsConfig;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 public abstract class AbstractModificationOperationCallbackTest extends AbstractOperationCallbackTest {
 
@@ -48,11 +47,13 @@
         this.isFoundNull = true;
     }
 
+    @Override
     @Before
     public void setup() throws Exception {
         super.setup();
     }
 
+    @Override
     @After
     public void tearDown() throws Exception {
         super.tearDown();
@@ -98,6 +99,10 @@
             Assert.assertEquals(0, cmp.compare(AbstractModificationOperationCallbackTest.this.tuple, after));
         }
 
+        @Override
+        public void setOp(Operation op) throws HyracksDataException {
+        }
+
     }
 
 }
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractSearchOperationCallbackTest.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractSearchOperationCallbackTest.java
index 2094676..20a2c0f 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractSearchOperationCallbackTest.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/AbstractSearchOperationCallbackTest.java
@@ -26,11 +26,6 @@
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
@@ -41,6 +36,10 @@
 import org.apache.hyracks.storage.am.common.api.IIndexCursor;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 public abstract class AbstractSearchOperationCallbackTest extends AbstractOperationCallbackTest {
     private static final int NUM_TASKS = 2;
@@ -57,12 +56,14 @@
         this.insertTaskStarted = false;
     }
 
+    @Override
     @Before
     public void setup() throws Exception {
         executor = Executors.newFixedThreadPool(NUM_TASKS);
         super.setup();
     }
 
+    @Override
     @After
     public void tearDown() throws Exception {
         executor.shutdown();
@@ -192,7 +193,10 @@
 
             @Override
             public void complete(ITupleReference tuple) throws HyracksDataException {
+            }
 
+            @Override
+            public void before(ITupleReference tuple) throws HyracksDataException {
             }
 
         }
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexBulkLoadTest.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexBulkLoadTest.java
index 0e4dfe2..dd03eae 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexBulkLoadTest.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexBulkLoadTest.java
@@ -71,4 +71,4 @@
     protected String getTestOpName() {
         return "BulkLoad";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
index f79997b..2116c0b 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexExamplesTest.java
@@ -25,6 +25,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.apache.hyracks.storage.common.buffercache.BufferCache;
 import org.junit.Test;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -164,8 +165,8 @@
         typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
         typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
         // Declare field serdes.
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Declare keys.
         int keyFieldCount = 1;
@@ -324,8 +325,8 @@
         typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
         typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
         // Declare field serdes.
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Declare keys.
         int keyFieldCount = 1;
@@ -408,8 +409,8 @@
         typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
         typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
         // Declare field serdes.
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Declare keys.
         int keyFieldCount = 1;
@@ -514,8 +515,8 @@
         typeTraits[0] = UTF8StringPointable.TYPE_TRAITS;
         typeTraits[1] = UTF8StringPointable.TYPE_TRAITS;
         // Declare field serdes.
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Declare keys.
         int keyFieldCount = 1;
@@ -692,6 +693,7 @@
 
         int ins = 1000;
         for (int i = 1; i < ins; i++) {
+
             ITreeIndex treeIndex = createTreeIndex(typeTraits, cmpFactories, bloomFilterKeyFields, null, null, null,
                     null);
             treeIndex.create();
@@ -722,6 +724,7 @@
                         fail("Unexpected exception: " + e.getMessage());
                     }
                     // Success.
+
                     break;
                 } catch (TreeIndexDuplicateKeyException e2) {
                     if (j != i) {
@@ -731,7 +734,6 @@
                     break;
                 }
             }
-
             treeIndex.deactivate();
             treeIndex.destroy();
         }
@@ -835,4 +837,4 @@
         }
         return strBuilder.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
index 160f9bf..e181710 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexMultiThreadTest.java
@@ -120,7 +120,7 @@
     @Test
     public void oneStringKeyAndValue() throws InterruptedException, TreeIndexException, HyracksException {
         ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
         int numKeys = 1;
         String dataMsg = "One String Key And Value";
 
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestContext.java
index 1b0cb87..84f2353 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestContext.java
@@ -49,4 +49,4 @@
         return checkTuples;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestDriver.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestDriver.java
index 0ec313b..b1e8a8c 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestDriver.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestDriver.java
@@ -124,8 +124,8 @@
             LOGGER.info("BTree " + getTestOpName() + " Test With One String Key And Value.");
         }
 
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Range search in ["cbf", cc7"]
         ITupleReference lowKey = TupleUtils.createTuple(fieldSerdes, "cbf");
@@ -142,8 +142,8 @@
             LOGGER.info("BTree " + getTestOpName() + " Test With Two String Keys.");
         }
 
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Range search in ["cbf", "ddd", cc7", "eee"]
         ITupleReference lowKey = TupleUtils.createTuple(fieldSerdes, "cbf", "ddd");
@@ -164,9 +164,9 @@
             LOGGER.info("BTree " + getTestOpName() + " Test With Two String Keys And Values.");
         }
 
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
 
         // Range search in ["cbf", "ddd", cc7", "eee"]
         ITupleReference lowKey = TupleUtils.createTuple(fieldSerdes, "cbf", "ddd");
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
index e1b71d2..40b9f05 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/btree/OrderedIndexTestUtils.java
@@ -63,8 +63,8 @@
             DataInput dataIn = new DataInputStream(inStream);
             Object actualObj = fieldSerdes[i].deserialize(dataIn);
             if (!actualObj.equals(expected.getField(i))) {
-                fail("Actual and expected fields do not match on field " + i + ".\nExpected: " + expected.getField(i)
-                        + "\nActual  : " + actualObj);
+                 fail("Actual and expected fields do not match on field " + i + ".\nExpected: " + expected.getField(i)
+                         + "\nActual  : " + actualObj);
             }
         }
     }
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java
index 8fa6c6a..ffdae7d 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java
@@ -66,7 +66,7 @@
 		}
 		return compareTo((T) o) == 0;
 	}
-    
+
 	@Override
 	public int hashCode() {
 		int hash = 0;
@@ -75,27 +75,27 @@
 		}
 		return hash;
 	}
-	
+
 	public void setIsHighKey(boolean isHighKey) {
 	    this.isHighKey = isHighKey;
 	}
-	
+
 	public T getField(int idx) {
 		return (T) fields[idx];
 	}
-    
+
     public void setField(int idx, T e) {
         fields[idx] = e;
     }
-    
+
     public int size() {
         return fields.length;
     }
-    
+
     public int getNumKeys() {
         return numKeys;
     }
-    
+
     @Override
     public String toString() {
         StringBuilder strBuilder = new StringBuilder();
@@ -107,4 +107,4 @@
         }
         return strBuilder.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java
index f15d1f3..e1352b5 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java
@@ -46,7 +46,7 @@
 
     public ArrayTupleBuilder getTupleBuilder();
 
-    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);      
+    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);
 
     public void deleteCheckTuple(T checkTuple, Collection<T> checkTuples);
 
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java
index 7589b47..48f7419 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java
@@ -46,7 +46,7 @@
 
     public ArrayTupleBuilder getTupleBuilder();
 
-    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);      
+    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);
 
     public void deleteCheckTuple(T checkTuple, Collection<T> checkTuples);
 
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexTestContext.java
index 97eb433..8761fe3 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IndexTestContext.java
@@ -83,4 +83,4 @@
     public void deleteCheckTuple(T checkTuple, Collection<T> checkTuples) {
         checkTuples.remove(checkTuple);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationCallback.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationCallback.java
index 8e6a11d..15d8a60 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationCallback.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationCallback.java
@@ -25,7 +25,7 @@
 import org.apache.hyracks.storage.am.common.api.IModificationOperationCallback;
 import org.apache.hyracks.storage.am.common.api.ISearchOperationCallback;
 
-public enum TestOperationCallback implements ISearchOperationCallback, IModificationOperationCallback {
+public enum TestOperationCallback implements ISearchOperationCallback,IModificationOperationCallback {
     INSTANCE;
 
     private static final int RANDOM_SEED = 50;
@@ -48,12 +48,12 @@
 
     @Override
     public void before(ITupleReference tuple) {
-        // Do nothing.        
+        // Do nothing.
     }
 
     @Override
     public void found(ITupleReference before, ITupleReference after) {
-        // Do nothing.        
+        // Do nothing.
     }
 
     @Override
@@ -66,4 +66,9 @@
         // Do nothing.
     }
 
+    @Override
+    public void setOp(Operation op) throws HyracksDataException {
+        // Do nothing.
+    }
+
 }
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java
index 6f29bd7..f804f89 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java
@@ -33,18 +33,18 @@
         RANGE_SEARCH,
         SCAN,
         DISKORDER_SCAN,
-        MERGE        
+        MERGE
     }
-    
+
     private final TestOperation[] ops;
-    private final int[] cumulIntRanges;    
-    
+    private final int[] cumulIntRanges;
+
     public TestOperationSelector(TestOperation[] ops, double[] opProbs) {
         sanityCheck(ops, opProbs);
         this.ops = ops;
         this.cumulIntRanges = ProbabilityHelper.getCumulIntRanges(opProbs);
     }
-    
+
     private void sanityCheck(TestOperation[] ops, double[] opProbs) {
         if (ops.length == 0) {
             throw new RuntimeException("Empty op array.");
@@ -63,7 +63,7 @@
             throw new RuntimeException("Op probabilities don't add up to 1.");
         }
     }
-    
+
     public TestOperation getOp(int randomInt) {
         int ix = ProbabilityHelper.choose(cumulIntRanges, randomInt);
         return ops[ix];
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java
index f60eca2..84c4ec4 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java
@@ -29,7 +29,7 @@
         this.ops = ops;
         this.opProbs = opProbs;
     }
-    
+
     public String toString() {
         StringBuilder strBuilder = new StringBuilder();
         for (TestOperation op : ops) {
@@ -39,4 +39,4 @@
         strBuilder.deleteCharAt(strBuilder.length() - 1);
         return strBuilder.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
index bf03aea..464291a 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TreeIndexTestUtils.java
@@ -138,7 +138,12 @@
                             + ctx.getCheckTuples().size() + "\nActual  : " + actualCount);
                 }
             } finally {
-                diskOrderCursor.close();
+                try {
+                    diskOrderCursor.close();
+                }
+                catch(Exception ex){
+                    LOGGER.log(Level.WARNING,"Error during scan cursor close",ex);
+                }
             }
         } catch (UnsupportedOperationException e) {
             // Ignore exception because some indexes, e.g. the LSMTrees, don't
@@ -251,9 +256,9 @@
         int c = 1;
         for (CheckTuple checkTuple : checkTuples) {
             if (LOGGER.isLoggable(Level.INFO)) {
-                if (c % (numTuples / 10) == 0) {
+                //if (c % (numTuples / 10) == 0) {
                     LOGGER.info("Bulk Loading Tuple " + c + "/" + numTuples);
-                }
+                //}
             }
             createTupleFromCheckTuple(checkTuple, tupleBuilder, tuple, ctx.getFieldSerdes());
             bulkLoader.add(tuple);
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/config/AccessMethodTestsConfig.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/config/AccessMethodTestsConfig.java
index bcb3482..60e10ad 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/config/AccessMethodTestsConfig.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/config/AccessMethodTestsConfig.java
@@ -89,15 +89,15 @@
     // Test parameters.
     public static final int LSM_INVINDEX_NUM_DOCS_TO_INSERT = 100;
     // Used for full-fledged search test.
-    public static final int LSM_INVINDEX_NUM_DOC_QUERIES = 1000;
-    public static final int LSM_INVINDEX_NUM_RANDOM_QUERIES = 1000;
+    public static final int LSM_INVINDEX_NUM_DOC_QUERIES = 50;
+    public static final int LSM_INVINDEX_NUM_RANDOM_QUERIES = 50;
     // Used for non-search tests to sanity check index searches.
-    public static final int LSM_INVINDEX_TINY_NUM_DOC_QUERIES = 200;
-    public static final int LSM_INVINDEX_TINY_NUM_RANDOM_QUERIES = 200;
+    public static final int LSM_INVINDEX_TINY_NUM_DOC_QUERIES = 10;
+    public static final int LSM_INVINDEX_TINY_NUM_RANDOM_QUERIES = 10;
     public static final int LSM_INVINDEX_NUM_BULKLOAD_ROUNDS = 5;
     public static final int LSM_INVINDEX_MAX_TREES_TO_MERGE = 5;
-    public static final int LSM_INVINDEX_NUM_INSERT_ROUNDS = 3;
-    public static final int LSM_INVINDEX_NUM_DELETE_ROUNDS = 3;
+    public static final int LSM_INVINDEX_NUM_INSERT_ROUNDS = 2;
+    public static final int LSM_INVINDEX_NUM_DELETE_ROUNDS = 2;
     // Allocate a generous size to make sure we have enough elements for all tests.
     public static final int LSM_INVINDEX_SCAN_COUNT_ARRAY_SIZE = 1000000;
     public static final int LSM_INVINDEX_MULTITHREAD_NUM_OPERATIONS = 200;
@@ -123,7 +123,7 @@
 // Test params for LSMRTree and LSMRTreeWithAntiMatterTuples.
 public static final int LSM_RTREE_BULKLOAD_ROUNDS = 5;
 public static final boolean LSM_RTREE_TEST_RSTAR_POLICY = false;
-public static final int LSM_RTREE_MAX_TREES_TO_MERGE = 3;	
+public static final int LSM_RTREE_MAX_TREES_TO_MERGE = 3;
 public static final int LSM_RTREE_NUM_MUTABLE_COMPONENTS = 2;
 
 // Test params for BTree, LSMBTree.
@@ -136,14 +136,14 @@
 public static final int LSM_BTREE_BULKLOAD_ROUNDS = 5;
 public static final int LSM_BTREE_MAX_TREES_TO_MERGE = 10;
 public static final int LSM_BTREE_NUM_MUTABLE_COMPONENTS = 2;
-	
-	
+
+
 // Mem configuration for RTree.
 public static final int RTREE_PAGE_SIZE = 512;
 public static final int RTREE_NUM_PAGES = 1000;
 public static final int RTREE_MAX_OPEN_FILES = Integer.MAX_VALUE;
 public static final int RTREE_HYRACKS_FRAME_SIZE = 128;
-	
+
 // Mem configuration for LSMRTree and LSMRTreeWithAntiMatterTuples.
 public static final int LSM_RTREE_DISK_PAGE_SIZE = 512;
 public static final int LSM_RTREE_DISK_NUM_PAGES = 10000;
@@ -152,13 +152,13 @@
 public static final int LSM_RTREE_MEM_NUM_PAGES = 1000;
 public static final int LSM_RTREE_HYRACKS_FRAME_SIZE = 128;
 public static final double LSM_RTREE_BLOOMFILTER_FALSE_POSITIVE_RATE = 0.01;
-	
+
 // Mem configuration for BTree.
 public static final int BTREE_PAGE_SIZE = 256;
 public static final int BTREE_NUM_PAGES = 100;
 public static final int BTREE_MAX_OPEN_FILES = Integer.MAX_VALUE;
 public static final int BTREE_HYRACKS_FRAME_SIZE = 128;
-	
+
 // Mem configuration for LSMBTree.
 public static final int LSM_BTREE_DISK_PAGE_SIZE = 256;
 public static final int LSM_BTREE_DISK_NUM_PAGES = 10000;
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
index 6cd81c3..b8f1e01 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeExamplesTest.java
@@ -210,7 +210,7 @@
         // Declare field serdes.
         ISerializerDeserializer[] fieldSerdes = { IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() };
 
         // Declare RTree keys.
         int rtreeKeyFieldCount = 4;
@@ -350,7 +350,7 @@
         // Declare field serdes.
         ISerializerDeserializer[] fieldSerdes = { IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                IntegerSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
+                IntegerSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() };
 
         // Declare RTree keys.
         int rtreeKeyFieldCount = 4;
@@ -918,4 +918,4 @@
             rangeCursor.close();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeTestContext.java
index 71852b6..de846ed 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/AbstractRTreeTestContext.java
@@ -40,4 +40,4 @@
     public Collection<RTreeCheckTuple> getCheckTuples() {
         return checkTuples;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/RTreeCheckTuple.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/RTreeCheckTuple.java
index 6a5ee44..4f7066f 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/RTreeCheckTuple.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/rtree/RTreeCheckTuple.java
@@ -30,14 +30,18 @@
 
     @Override
     public boolean equals(Object o) {
-        RTreeCheckTuple<T> other = (RTreeCheckTuple<T>) o;
-        for (int i = 0; i < fields.length; i++) {
-            int cmp = fields[i].compareTo(other.getField(i));
-            if (cmp != 0) {
-                return false;
+        if (o instanceof RTreeCheckTuple) {
+            RTreeCheckTuple<T> other = (RTreeCheckTuple<T>) o;
+            for (int i = 0; i < fields.length; i++) {
+                int cmp = fields[i].compareTo(other.getField(i));
+                if (cmp != 0) {
+                    return false;
+                }
             }
+            return true;
+        } else {
+            return false;
         }
-        return true;
     }
 
     public boolean intersect(T o) {
@@ -57,4 +61,4 @@
         return true;
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/CounterContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/CounterContext.java
index 42d8478..7cbf948 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/CounterContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/CounterContext.java
@@ -49,4 +49,4 @@
             dumpMap.put(c.getName(), c.get());
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java
index ba4c006..d7cbc9a 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestJobletContext.java
@@ -126,4 +126,4 @@
         return this.getClass().getClassLoader();
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestNCApplicationContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestNCApplicationContext.java
index b2a5765..f619be0 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestNCApplicationContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestNCApplicationContext.java
@@ -29,6 +29,7 @@
 import org.apache.hyracks.api.lifecycle.LifeCycleComponentManager;
 import org.apache.hyracks.api.messages.IMessageBroker;
 import org.apache.hyracks.api.resources.memory.IMemoryManager;
+import org.apache.hyracks.api.service.IControllerService;
 
 public class TestNCApplicationContext implements INCApplicationContext {
     private final ILifeCycleComponentManager lccm;
@@ -128,4 +129,9 @@
     @Override
     public void setStateDumpHandler(IStateDumpHandler handler) {
     }
+
+    @Override
+    public IControllerService getControllerService() {
+        return null;
+    }
 }
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestRootContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestRootContext.java
index d11bce3..3a5a6a8 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestRootContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestRootContext.java
@@ -49,4 +49,4 @@
     public Map<String, NodeControllerInfo> getNodeControllerInfos() throws Exception {
         return null;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
index d987501..482dccd 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerComponentHolder.java
@@ -133,4 +133,4 @@
         }
         return resourceIdFactory;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerInterface.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerInterface.java
index d701f42..e4f77fd 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerInterface.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestStorageManagerInterface.java
@@ -48,4 +48,4 @@
 	public ResourceIdFactory getResourceIdFactory(IHyracksTaskContext ctx) {
 		return TestStorageManagerComponentHolder.getResourceIdFactory(ctx);
 	}
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestTaskContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestTaskContext.java
index fb036d8..f796812 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestTaskContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestTaskContext.java
@@ -19,6 +19,9 @@
 package org.apache.hyracks.test.support;
 
 import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
 
 import org.apache.hyracks.api.context.IHyracksJobletContext;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
@@ -27,7 +30,6 @@
 import org.apache.hyracks.api.dataset.IDatasetPartitionManager;
 import org.apache.hyracks.api.deployment.DeploymentId;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.exceptions.HyracksException;
 import org.apache.hyracks.api.io.FileReference;
 import org.apache.hyracks.api.io.IIOManager;
 import org.apache.hyracks.api.job.profiling.counters.ICounterContext;
@@ -40,7 +42,9 @@
     private final TaskAttemptId taskId;
     private WorkspaceFileFactory fileFactory;
 
-    public TestTaskContext(TestJobletContext jobletContext, TaskAttemptId taskId) throws HyracksException {
+    private Map<Object, IStateObject> stateObjectMap = new HashMap<>();
+
+    public TestTaskContext(TestJobletContext jobletContext, TaskAttemptId taskId) {
         this.jobletContext = jobletContext;
         this.taskId = taskId;
         fileFactory = new WorkspaceFileFactory(this, (IOManager) getIOManager());
@@ -59,7 +63,7 @@
     @Override
     public ByteBuffer reallocateFrame(ByteBuffer tobeDeallocate, int newSizeInBytes, boolean copyOldData)
             throws HyracksDataException {
-        return jobletContext.reallocateFrame(tobeDeallocate,newSizeInBytes, copyOldData);
+        return jobletContext.reallocateFrame(tobeDeallocate, newSizeInBytes, copyOldData);
 
     }
 
@@ -114,13 +118,13 @@
     }
 
     @Override
-    public void setStateObject(IStateObject taskState) {
-
+    public synchronized void setStateObject(IStateObject taskState) {
+        stateObjectMap.put(taskState.getId(), taskState);
     }
 
     @Override
-    public IStateObject getStateObject(Object id) {
-        return null;
+    public synchronized IStateObject getStateObject(Object id) {
+        return stateObjectMap.get(id);
     }
 
     @Override
@@ -129,8 +133,21 @@
     }
 
     @Override
-    public void sendApplicationMessageToCC(byte[] message, DeploymentId deploymentId, String nodeId) throws Exception {
-        // TODO Auto-generated method stub
+    public void sendApplicationMessageToCC(byte[] message, DeploymentId deploymentId) throws Exception {
 
     }
+
+    @Override
+    public ExecutorService getExecutorService() {
+        return null;
+    }
+
+    @Override
+    public Object getSharedObject() {
+        return null;
+    }
+
+    @Override
+    public void setSharedObject(Object sharedObject) {
+    }
 }
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java
index 965bbb2..2a78e8b 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestUtils.java
@@ -41,4 +41,4 @@
             throw new RuntimeException(e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestVirtualBufferCacheProvider.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestVirtualBufferCacheProvider.java
index 1dba387..6c1775f 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestVirtualBufferCacheProvider.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/test/support/TestVirtualBufferCacheProvider.java
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCacheProvider;
 import org.apache.hyracks.storage.am.lsm.common.impls.VirtualBufferCache;
@@ -40,7 +41,7 @@
     }
 
     @Override
-    public List<IVirtualBufferCache> getVirtualBufferCaches(IHyracksTaskContext ctx) {
+    public List<IVirtualBufferCache> getVirtualBufferCaches(IHyracksTaskContext ctx, IFileSplitProvider fileSplitProvider) {
         List<IVirtualBufferCache> vbcs = new ArrayList<IVirtualBufferCache>();
         for (int i = 0; i < 2; i++) {
             IVirtualBufferCache vbc = new VirtualBufferCache(new HeapBufferAllocator(), pageSize, numPages / 2);
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/pom.xml
index 0d326e7..4273f3a 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/pom.xml
@@ -31,15 +31,6 @@
     <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>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-deploy-plugin</artifactId>
         <configuration>
             <skip>true</skip>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/BloomFilterTest.java b/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/BloomFilterTest.java
index 49df30f..80a69c4 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/BloomFilterTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/BloomFilterTest.java
@@ -135,9 +135,9 @@
                 bloomFilterSpec.getNumBucketsPerElements());
 
         int fieldCount = 5;
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
         ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fieldCount);
         ArrayTupleReference tuple = new ArrayTupleReference();
 
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/MurmurHashForITupleReferenceTest.java b/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/MurmurHashForITupleReferenceTest.java
index 1d7aa90..3284f8d 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/MurmurHashForITupleReferenceTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/src/test/java/org/apache/hyracks/storage/am/bloomfilter/MurmurHashForITupleReferenceTest.java
@@ -109,7 +109,7 @@
         }
 
         int fieldCount = 2;
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer() };
         ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fieldCount);
         ArrayTupleReference tuple = new ArrayTupleReference();
         String s = randomString(100, rnd);
@@ -137,8 +137,8 @@
         }
 
         int fieldCount = 3;
-        ISerializerDeserializer[] fieldSerdes = { UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE };
+        ISerializerDeserializer[] fieldSerdes = { new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() };
         ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fieldCount);
         ArrayTupleReference tuple = new ArrayTupleReference();
         String s1 = randomString(40, rnd);
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 788a138..ef4ffb1 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml
@@ -33,17 +33,7 @@
   </properties>
 
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
+   <plugins>
      <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-deploy-plugin</artifactId>
@@ -52,8 +42,8 @@
       </configuration>
     </plugin>
    </plugins>
-
   </build>
+
   <dependencies>
   	<dependency>
   		<groupId>org.apache.hyracks</groupId>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java
index 211e587..2b1f4dc 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java
@@ -31,10 +31,10 @@
 import org.apache.hyracks.storage.am.btree.util.BTreeTestHarness;
 
 /**
- * Tests the BTree insert operation with strings and integer fields using 
- * various numbers of key and payload fields. Each tests first fills a BTree with 
- * randomly generated tuples. We compare the following operations against expected results: 
- *      1) Point searches for all tuples 
+ * Tests the BTree insert operation with strings and integer fields using
+ * various numbers of key and payload fields. Each tests first fills a BTree with
+ * randomly generated tuples. We compare the following operations against expected results:
+ *      1) Point searches for all tuples
  *      2) Ordered scan
  *      3) Disk-order scan
  *      4) Range search (and prefix search for composite keys)
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java
index 6e009e8..15d63f6 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java
@@ -28,6 +28,8 @@
 import java.util.TreeSet;
 import java.util.logging.Level;
 
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -53,13 +55,8 @@
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.btree.util.AbstractBTreeTest;
 import org.apache.hyracks.storage.am.common.TestOperationCallback;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -97,7 +94,7 @@
         IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) leafFrameFactory.createFrame();
         IBTreeInteriorFrame interiorFrame = (IBTreeInteriorFrame) interiorFrameFactory.createFrame();
 
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
 
         BTree btree = new BTree(bufferCache, harness.getFileMapProvider(), freePageManager, interiorFrameFactory,
                 leafFrameFactory, cmpFactories, fieldCount, harness.getFileReference());
@@ -174,7 +171,7 @@
         IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) leafFrameFactory.createFrame();
         IBTreeInteriorFrame interiorFrame = (IBTreeInteriorFrame) interiorFrameFactory.createFrame();
 
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
 
         BTree btree = new BTree(bufferCache, harness.getFileMapProvider(), freePageManager, interiorFrameFactory,
                 leafFrameFactory, cmpFactories, fieldCount, harness.getFileReference());
@@ -248,7 +245,7 @@
         IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) leafFrameFactory.createFrame();
         IBTreeInteriorFrame interiorFrame = (IBTreeInteriorFrame) interiorFrameFactory.createFrame();
 
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
 
         BTree btree = new BTree(bufferCache, harness.getFileMapProvider(), freePageManager, interiorFrameFactory,
                 leafFrameFactory, cmpFactories, fieldCount, harness.getFileReference());
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java
index 54505dd..4049185 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java
@@ -22,6 +22,7 @@
 import java.util.Random;
 import java.util.logging.Level;
 
+import org.apache.hyracks.storage.am.common.api.*;
 import org.junit.Test;
 
 import org.apache.hyracks.api.comm.IFrame;
@@ -46,14 +47,9 @@
 import org.apache.hyracks.storage.am.btree.impls.BTree;
 import org.apache.hyracks.storage.am.btree.util.AbstractBTreeTest;
 import org.apache.hyracks.storage.am.common.TestOperationCallback;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.am.common.util.TreeIndexBufferCacheWarmup;
 import org.apache.hyracks.storage.am.common.util.TreeIndexStats;
@@ -99,7 +95,7 @@
         IBTreeInteriorFrame interiorFrame = (IBTreeInteriorFrame) interiorFrameFactory.createFrame();
         ITreeIndexMetaDataFrame metaFrame = metaFrameFactory.createFrame();
 
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
 
         BTree btree = new BTree(bufferCache, fmp, freePageManager, interiorFrameFactory, leafFrameFactory,
                 cmpFactories, fieldCount, harness.getFileReference());
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpdateSearchTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpdateSearchTest.java
index 4915751..40fc0ef 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpdateSearchTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpdateSearchTest.java
@@ -21,6 +21,8 @@
 import java.util.Random;
 import java.util.logging.Level;
 
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.junit.Test;
 
 import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -41,14 +43,8 @@
 import org.apache.hyracks.storage.am.btree.impls.RangePredicate;
 import org.apache.hyracks.storage.am.btree.util.AbstractBTreeTest;
 import org.apache.hyracks.storage.am.common.TestOperationCallback;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 
@@ -81,7 +77,7 @@
 
         IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) leafFrameFactory.createFrame();
 
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
         BTree btree = new BTree(bufferCache, harness.getFileMapProvider(), freePageManager, interiorFrameFactory,
                 leafFrameFactory, cmpFactories, fieldCount, harness.getFileReference());
         btree.create();
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java
index a797d79..e19a618 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java
@@ -31,10 +31,10 @@
 import org.apache.hyracks.storage.am.btree.util.BTreeTestHarness;
 
 /**
- * Tests the BTree insert operation with strings and integer fields using 
- * various numbers of key and payload fields. Each tests first fills a BTree with 
- * randomly generated tuples. We compare the following operations against expected results: 
- *      1) Point searches for all tuples 
+ * Tests the BTree insert operation with strings and integer fields using
+ * various numbers of key and payload fields. Each tests first fills a BTree with
+ * randomly generated tuples. We compare the following operations against expected results:
+ *      1) Point searches for all tuples
  *      2) Ordered scan
  *      3) Disk-order scan
  *      4) Range search (and prefix search for composite keys)
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java
index 008255e..07f3ba7 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java
@@ -77,7 +77,7 @@
         workloadConfs.add(new TestWorkloadConf(insertSearchOnlyOps, ProbabilityHelper
                 .getUniformProbDist(insertSearchOnlyOps.length)));
 
-        // Inserts, updates, deletes, and upserts.        
+        // Inserts, updates, deletes, and upserts.
         TestOperation[] insertDeleteUpdateUpsertOps = new TestOperation[] { TestOperation.INSERT, TestOperation.DELETE,
                 TestOperation.UPDATE, TestOperation.UPSERT };
         workloadConfs.add(new TestWorkloadConf(insertDeleteUpdateUpsertOps, ProbabilityHelper
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java
index 924c0b8..77ad13c 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java
@@ -95,7 +95,7 @@
 
             case UPSERT:
                 accessor.upsert(tuple);
-                // Upsert should not throw. If it does, there's 
+                // Upsert should not throw. If it does, there's
                 // a bigger problem and the test should fail.
                 break;
 
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/pom.xml
index ea4fa25..5fa81dd 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/pom.xml
@@ -31,15 +31,6 @@
     <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>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-deploy-plugin</artifactId>
         <configuration>
             <skip>true</skip>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
index 283b934..09c0f7c 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
@@ -66,4 +66,4 @@
     protected Random getRandom() {
         return harness.getRandom();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java
index 00d637a..20dfb9c 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java
@@ -22,9 +22,6 @@
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
@@ -41,6 +38,8 @@
 import org.apache.hyracks.storage.am.lsm.btree.util.LSMBTreeTestHarness;
 import org.apache.hyracks.storage.am.lsm.btree.util.LSMBTreeUtils;
 import org.apache.hyracks.storage.am.lsm.common.impls.NoOpOperationTrackerProvider;
+import org.junit.Assert;
+import org.junit.Test;
 
 public class LSMBTreeSearchOperationCallbackTest extends AbstractSearchOperationCallbackTest {
     private final LSMBTreeTestHarness harness;
@@ -207,6 +206,9 @@
                         expectedTupleToBeLockedValue);
             }
 
+            @Override
+            public void before(ITupleReference tuple) throws HyracksDataException {
+            }
         }
     }
 
@@ -279,7 +281,7 @@
                 throw new IllegalArgumentException("Invalid range: [" + begin + ", " + end + "]");
             }
 
-            IIndexBulkLoader bulkloader = index.createBulkLoader(1.0f, false, end - begin, true);
+            IIndexBulkLoader bulkloader = index.createBulkLoader(1.0f, false, end - begin, true, true);
             for (int i = begin; i <= end; i++) {
                 TupleUtils.createIntegerTuple(builder, tuple, i);
                 bulkloader.add(tuple);
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java
index 46d9b22..684ef57 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java
@@ -40,16 +40,16 @@
             Logger logger = LogManager.getLogManager().getLogger(loggerName);
             logger.setLevel(Level.OFF);
         }
-        
+
         int numTuples = 1000000;
         int batchSize = 10000;
         int numBatches = numTuples / batchSize;
-        
+
         ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE };
         ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes, 30);
-        
+
         IBinaryComparatorFactory[] cmpFactories = SerdeUtils.serdesToComparatorFactories(fieldSerdes, fieldSerdes.length);
-        
+
         runExperiment(numBatches, batchSize, 1024, 100000, fieldSerdes, cmpFactories, typeTraits);
         runExperiment(numBatches, batchSize, 2048, 100000, fieldSerdes, cmpFactories, typeTraits);
         runExperiment(numBatches, batchSize, 4096, 25000, fieldSerdes, cmpFactories, typeTraits);
@@ -60,7 +60,7 @@
         runExperiment(numBatches, batchSize, 131072, 782, fieldSerdes, cmpFactories, typeTraits);
         runExperiment(numBatches, batchSize, 262144, 391, fieldSerdes, cmpFactories, typeTraits);
     }
-    
+
     private static void runExperiment(int numBatches, int batchSize, int pageSize, int numPages, ISerializerDeserializer[] fieldSerdes, IBinaryComparatorFactory[] cmpFactories, ITypeTraits[] typeTraits) throws Exception {
         System.out.println("PAGE SIZE: " + pageSize);
         System.out.println("NUM PAGES: " + numPages);
@@ -73,7 +73,7 @@
         int numThreads = 1;
         for (int i = 0; i < repeats; i++) {
             DataGenThread dataGen = new DataGenThread(numThreads, numBatches, batchSize, fieldSerdes, 30, 50, 10, false);
-            dataGen.start();            
+            dataGen.start();
             times[i] = runner.runExperiment(dataGen, numThreads);
             System.out.println("TIME " + i + ": " + times[i] + "ms");
         }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java
index 529326a..783844d 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java
@@ -23,12 +23,12 @@
 
 public interface IExperimentRunner {
     public static int DEFAULT_MAX_OUTSTANDING = 100000;
-    
+
     public void init() throws Exception;
-    
+
     public long runExperiment(DataGenThread dataGen, int numThreads) throws Exception;
-    
+
     public void reset() throws Exception;
-    
+
     public void deinit() throws Exception;
 }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/InMemoryBTreeRunner.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/InMemoryBTreeRunner.java
index 62bc7d0..bcb11d3 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/InMemoryBTreeRunner.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/InMemoryBTreeRunner.java
@@ -31,7 +31,7 @@
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
 import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
 import org.apache.hyracks.storage.am.btree.impls.BTree;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
 import org.apache.hyracks.storage.am.common.api.TreeIndexException;
@@ -39,7 +39,7 @@
 import org.apache.hyracks.storage.am.common.datagen.TupleBatch;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
-import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager;
+import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.lsm.common.impls.VirtualBufferCache;
 import org.apache.hyracks.storage.common.buffercache.HeapBufferAllocator;
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
@@ -71,7 +71,7 @@
         TypeAwareTupleWriterFactory tupleWriterFactory = new TypeAwareTupleWriterFactory(typeTraits);
         ITreeIndexFrameFactory leafFrameFactory = new BTreeNSMLeafFrameFactory(tupleWriterFactory);
         ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(tupleWriterFactory);
-        IFreePageManager freePageManager = new VirtualFreePageManager(bufferCache.getNumPages());
+        IMetaDataPageManager freePageManager = new VirtualMetaDataPageManager(bufferCache.getNumPages());
         btree = new BTree(bufferCache, new TransientFileMapManager(), freePageManager, interiorFrameFactory,
                 leafFrameFactory, cmpFactories, typeTraits.length, file);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java
index 7ba97a9..56c97bf 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java
@@ -83,7 +83,7 @@
             //String btreeName = "071211";
             //BTreeSearchRunner runner = new BTreeSearchRunner(btreeName, 10, numBatches, 8192, 25000, typeTraits, cmp);
             //LSMTreeRunner runner = new LSMTreeRunner(numBatches, 8192, 100, 8192, 250, typeTraits, cmp);
-            //LSMTreeSearchRunner runner = new LSMTreeSearchRunner(100000, numBatches, 8192, 24750, 8192, 250, typeTraits, cmp); 
+            //LSMTreeSearchRunner runner = new LSMTreeSearchRunner(100000, numBatches, 8192, 24750, 8192, 250, typeTraits, cmp);
             int inMemPageSize = 131072; // 128kb
             int onDiskPageSize = inMemPageSize;
             int inMemNumPages = 8192; // 1GB
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java
index a7215a5..91467de 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java
@@ -43,7 +43,7 @@
 public class LSMBTreeTuplesTest {
 
     private final Random rnd = new Random(50);
-    
+
     private ByteBuffer writeTuple(ITupleReference tuple, LSMBTreeTupleWriter tupleWriter) {
         // Write tuple into a buffer, then later try to read it.
         int bytesRequired = tupleWriter.bytesRequired(tuple);
@@ -52,36 +52,36 @@
         tupleWriter.writeTuple(tuple, bytes, 0);
         return targetBuf;
     }
-    
-    private void testLSMBTreeTuple(ISerializerDeserializer[] maxFieldSerdes) throws HyracksDataException {        
+
+    private void testLSMBTreeTuple(ISerializerDeserializer[] maxFieldSerdes) throws HyracksDataException {
         // Create a tuple with the max-1 fields for checking setFieldCount() of tuple references later.
-        ITypeTraits[] maxTypeTraits = SerdeUtils.serdesToTypeTraits(maxFieldSerdes); 
+        ITypeTraits[] maxTypeTraits = SerdeUtils.serdesToTypeTraits(maxFieldSerdes);
         IFieldValueGenerator[] maxFieldGens = DataGenUtils.getFieldGensFromSerdes(maxFieldSerdes, rnd, false);
         // Generate a tuple with random field values.
         Object[] maxFields = new Object[maxFieldSerdes.length];
         for (int j = 0; j < maxFieldSerdes.length; j++) {
             maxFields[j] = maxFieldGens[j].next();
-        }            
-        
+        }
+
         // Run test for varying number of fields and keys.
         for (int numKeyFields = 1; numKeyFields < maxFieldSerdes.length; numKeyFields++) {
             // Create tuples with varying number of fields, and try to interpret their bytes with the lsmBTreeTuple.
-            for (int numFields = numKeyFields; numFields <= maxFieldSerdes.length; numFields++) {                
+            for (int numFields = numKeyFields; numFields <= maxFieldSerdes.length; numFields++) {
                 // Create and write tuple to bytes using an LSMBTreeTupleWriter.
                 LSMBTreeTupleWriter maxMatterTupleWriter = new LSMBTreeTupleWriter(maxTypeTraits, numKeyFields, false);
                 ITupleReference maxTuple = TupleUtils.createTuple(maxFieldSerdes, (Object[])maxFields);
                 ByteBuffer maxMatterBuf = writeTuple(maxTuple, maxMatterTupleWriter);
                 // Tuple reference should work for both matter and antimatter tuples (doesn't matter which factory creates it).
                 LSMBTreeTupleReference maxLsmBTreeTuple = (LSMBTreeTupleReference) maxMatterTupleWriter.createTupleReference();
-                
+
                 ISerializerDeserializer[] fieldSerdes = Arrays.copyOfRange(maxFieldSerdes, 0, numFields);
-                ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes);                
+                ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes);
                 IFieldValueGenerator[] fieldGens = DataGenUtils.getFieldGensFromSerdes(fieldSerdes, rnd, false);
                 // Generate a tuple with random field values.
                 Object[] fields = new Object[numFields];
                 for (int j = 0; j < numFields; j++) {
                     fields[j] = fieldGens[j].next();
-                }            
+                }
                 // Create and write tuple to bytes using an LSMBTreeTupleWriter.
                 ITupleReference tuple = TupleUtils.createTuple(fieldSerdes, (Object[])fields);
                 LSMBTreeTupleWriter matterTupleWriter = new LSMBTreeTupleWriter(typeTraits, numKeyFields, false);
@@ -96,44 +96,44 @@
                 }
 
                 // Tuple reference should work for both matter and antimatter tuples (doesn't matter which factory creates it).
-                LSMBTreeTupleReference lsmBTreeTuple = (LSMBTreeTupleReference) matterTupleWriter.createTupleReference();                
-                
+                LSMBTreeTupleReference lsmBTreeTuple = (LSMBTreeTupleReference) matterTupleWriter.createTupleReference();
+
                 // Use LSMBTree tuple reference to interpret the written tuples.
                 // Repeat the block inside to test that repeated resetting to matter/antimatter tuples works.
                 for (int r = 0; r < 4; r++) {
-                    
+
                     // Check matter tuple with lsmBTreeTuple.
                     lsmBTreeTuple.resetByTupleOffset(matterBuf, 0);
                     checkTuple(lsmBTreeTuple, numFields, false, fieldSerdes, fields);
-                    
+
                     // Create a copy using copyTupleWriter, and verify again.
                     ByteBuffer copyMatterBuf = writeTuple(lsmBTreeTuple, copyTupleWriter);
                     lsmBTreeTuple.resetByTupleOffset(copyMatterBuf, 0);
                     checkTuple(lsmBTreeTuple, numFields, false, fieldSerdes, fields);
-                    
+
                     // Check antimatter tuple with lsmBTreeTuple.
-                    lsmBTreeTuple.resetByTupleOffset(antimatterBuf, 0);                                        
+                    lsmBTreeTuple.resetByTupleOffset(antimatterBuf, 0);
                     // Should only contain keys.
                     checkTuple(lsmBTreeTuple, numKeyFields, true, fieldSerdes, fields);
-                    
+
                     // Create a copy using copyTupleWriter, and verify again.
                     ByteBuffer copyAntimatterBuf = writeTuple(lsmBTreeTuple, copyTupleWriter);
                     lsmBTreeTuple.resetByTupleOffset(copyAntimatterBuf, 0);
                     // Should only contain keys.
                     checkTuple(lsmBTreeTuple, numKeyFields, true, fieldSerdes, fields);
-                    
+
                     // Check matter tuple with maxLsmBTreeTuple.
-                    // We should be able to manually set a prefix of the fields 
+                    // We should be able to manually set a prefix of the fields
                     // (the passed type traits in the tuple factory's constructor).
                     maxLsmBTreeTuple.setFieldCount(numFields);
                     maxLsmBTreeTuple.resetByTupleOffset(matterBuf, 0);
                     checkTuple(maxLsmBTreeTuple, numFields, false, fieldSerdes, fields);
-                    
+
                     // Check antimatter tuple with maxLsmBTreeTuple.
                     maxLsmBTreeTuple.resetByTupleOffset(antimatterBuf, 0);
                     // Should only contain keys.
                     checkTuple(maxLsmBTreeTuple, numKeyFields, true, fieldSerdes, fields);
-                    
+
                     // Resetting maxLsmBTreeTuple should set its field count to
                     // maxFieldSerdes.length, based on the its type traits.
                     maxLsmBTreeTuple.resetByTupleOffset(maxMatterBuf, 0);
@@ -142,7 +142,7 @@
             }
         }
     }
-    
+
     private void checkTuple(LSMBTreeTupleReference tuple, int expectedFieldCount, boolean expectedAntimatter, ISerializerDeserializer[] fieldSerdes, Object[] expectedFields) throws HyracksDataException {
         assertEquals(expectedFieldCount, tuple.getFieldCount());
         assertEquals(expectedAntimatter, tuple.isAntimatter());
@@ -151,24 +151,24 @@
             assertEquals(expectedFields[j], deserMatterTuple[j]);
         }
     }
-    
+
     @Test
-    public void testLSMBTreeTuple() throws HyracksDataException {        
+    public void testLSMBTreeTuple() throws HyracksDataException {
         ISerializerDeserializer[] intFields = new IntegerSerializerDeserializer[] {
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE };
         testLSMBTreeTuple(intFields);
-        
+
         ISerializerDeserializer[] stringFields = new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE };
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
+                new UTF8StringSerializerDeserializer() };
         testLSMBTreeTuple(stringFields);
-        
+
         ISerializerDeserializer[] mixedFields = new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
-                UTF8StringSerializerDeserializer.INSTANCE, UTF8StringSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
+                new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                 IntegerSerializerDeserializer.INSTANCE };
         testLSMBTreeTuple(mixedFields);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/pom.xml
index b01d950..131e20e 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/pom.xml
@@ -31,15 +31,6 @@
     <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>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-deploy-plugin</artifactId>
         <configuration>
             <skip>true</skip>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/VirtualFreePageManagerTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/VirtualFreePageManagerTest.java
index 634589d..86f75d4 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/VirtualFreePageManagerTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/VirtualFreePageManagerTest.java
@@ -21,16 +21,16 @@
 
 import static org.junit.Assert.assertEquals;
 
+import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualMetaDataPageManager;
 import org.junit.Test;
 
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager;
 
 public class VirtualFreePageManagerTest {
 
     private final int NUM_PAGES = 100;
 
-    private void testInMemoryFreePageManager(VirtualFreePageManager virtualFreePageManager) throws HyracksDataException {
+    private void testInMemoryFreePageManager(VirtualMetaDataPageManager virtualFreePageManager) throws HyracksDataException {
         // The first two pages are reserved for the BTree's metadata page and
         // root page.
         // The "actual" capacity is therefore numPages - 2.
@@ -53,7 +53,7 @@
 
     @Test
     public void test01() throws HyracksDataException {
-        VirtualFreePageManager virtualFreePageManager = new VirtualFreePageManager(NUM_PAGES);
+        VirtualMetaDataPageManager virtualFreePageManager = new VirtualMetaDataPageManager(NUM_PAGES);
         testInMemoryFreePageManager(virtualFreePageManager);
         // We expect exactly the same behavior after a reset().
         virtualFreePageManager.reset();
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/pom.xml
index cb3e3b2..8972b97 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/pom.xml
@@ -17,62 +17,62 @@
  ! under the License.
  !-->
 
-<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-storage-am-lsm-invertedindex-test</artifactId>
+<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-storage-am-lsm-invertedindex-test</artifactId>
 
-	<parent>
-		<artifactId>hyracks-tests</artifactId>
-		<groupId>org.apache.hyracks</groupId>
-		<version>0.2.18-SNAPSHOT</version>
-		<relativePath>..</relativePath>
-	</parent>
+    <parent>
+        <artifactId>hyracks-tests</artifactId>
+        <groupId>org.apache.hyracks</groupId>
+        <version>0.2.18-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
 
-	<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>
-				</configuration>
-			</plugin>
-			<plugin>
-				 <groupId>org.apache.maven.plugins</groupId>
-				 <artifactId>maven-deploy-plugin</artifactId>
-				 <configuration>
-					<skip>true</skip>
-				 </configuration>
-			</plugin>
-		</plugins>
-	</build>
-	<properties>
-			<root.dir>${basedir}/../../..</root.dir>
-	</properties>
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.hyracks</groupId>
-			<artifactId>hyracks-storage-am-lsm-invertedindex</artifactId>
-			<version>0.2.18-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>compile</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hyracks</groupId>
-			<artifactId>hyracks-test-support</artifactId>
-			<version>0.2.18-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.hyracks</groupId>
-			<artifactId>hyracks-data-std</artifactId>
-			<version>0.2.18-SNAPSHOT</version>
-			<type>jar</type>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
+   <build>
+      <plugins>
+         <plugin>
+             <groupId>org.apache.maven.plugins</groupId>
+             <artifactId>maven-deploy-plugin</artifactId>
+             <configuration>
+               <skip>true</skip>
+             </configuration>
+         </plugin>
+      </plugins>
+   </build>
+   <properties>
+         <root.dir>${basedir}/../../..</root.dir>
+   </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-storage-am-lsm-invertedindex</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-test-support</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-data-std</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hyracks</groupId>
+            <artifactId>hyracks-util</artifactId>
+            <version>0.2.18-SNAPSHOT</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/LSMInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/LSMInvertedIndexDeleteTest.java
index d9c1f21..7fe77f7 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/LSMInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/LSMInvertedIndexDeleteTest.java
@@ -27,4 +27,4 @@
     public LSMInvertedIndexDeleteTest() {
         super(InvertedIndexType.LSM, false);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/PartitionedLSMInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/PartitionedLSMInvertedIndexDeleteTest.java
index a071721..5d3966d 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/PartitionedLSMInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/PartitionedLSMInvertedIndexDeleteTest.java
@@ -27,4 +27,4 @@
     public PartitionedLSMInvertedIndexDeleteTest() {
         super(InvertedIndexType.PARTITIONED_LSM, false);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexDeleteTest.java
index 4dbfe6a..e59f85c 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexDeleteTest.java
@@ -45,15 +45,22 @@
     protected void runTest(LSMInvertedIndexTestContext testCtx, TupleGenerator tupleGen) throws IOException,
             IndexException {
         IIndex invIndex = testCtx.getIndex();
-        invIndex.create();
-        invIndex.activate();
+
+        if ((invIndexType != InvertedIndexType.LSM) && (invIndexType != InvertedIndexType.PARTITIONED_LSM) || !bulkLoad) {
+            invIndex.create();
+            invIndex.activate();
+        }
 
         for (int i = 0; i < numInsertRounds; i++) {
             // Start generating documents ids from 0 again.
             tupleGen.reset();
-
             if (bulkLoad) {
-                LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT);
+                if ((invIndexType != InvertedIndexType.LSM) && (invIndexType != InvertedIndexType.PARTITIONED_LSM)) {
+                    LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT, false);
+                } else {
+
+                    LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT, true);
+                }
             } else {
                 LSMInvertedIndexTestUtils.insertIntoInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT);
             }
@@ -74,7 +81,8 @@
 
     @Test
     public void wordTokensInvIndexTest() throws IOException, IndexException {
-        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createWordInvIndexTestContext(harness, invIndexType);
+        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createWordInvIndexTestContext(harness,
+                invIndexType);
         TupleGenerator tupleGen = LSMInvertedIndexTestUtils.createStringDocumentTupleGen(harness.getRandom());
         runTest(testCtx, tupleGen);
     }
@@ -89,7 +97,8 @@
 
     @Test
     public void ngramTokensInvIndexTest() throws IOException, IndexException {
-        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createNGramInvIndexTestContext(harness, invIndexType);
+        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createNGramInvIndexTestContext(harness,
+                invIndexType);
         TupleGenerator tupleGen = LSMInvertedIndexTestUtils.createPersonNamesTupleGen(harness.getRandom());
         runTest(testCtx, tupleGen);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexLoadTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexLoadTest.java
index 4467394..78b6d0e 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexLoadTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexLoadTest.java
@@ -42,11 +42,12 @@
     protected void runTest(LSMInvertedIndexTestContext testCtx, TupleGenerator tupleGen) throws IOException,
             IndexException {
         IIndex invIndex = testCtx.getIndex();
-        invIndex.create();
-        invIndex.activate();
-
+        if(invIndexType != InvertedIndexType.PARTITIONED_ONDISK && invIndexType != InvertedIndexType.ONDISK) {
+            invIndex.create();
+            invIndex.activate();
+        }
         if (bulkLoad) {
-            LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT);
+                LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT, true);
         } else {
             LSMInvertedIndexTestUtils.insertIntoInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT);
         }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexSearchTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexSearchTest.java
index 6b14951..3a188fe 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexSearchTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/common/AbstractInvertedIndexSearchTest.java
@@ -25,8 +25,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.junit.Test;
-
 import org.apache.hyracks.storage.am.common.api.IIndex;
 import org.apache.hyracks.storage.am.common.api.IndexException;
 import org.apache.hyracks.storage.am.common.datagen.TupleGenerator;
@@ -38,6 +36,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext;
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestUtils;
+import org.junit.Test;
 
 public abstract class AbstractInvertedIndexSearchTest extends AbstractInvertedIndexTest {
 
@@ -55,11 +54,16 @@
     protected void runTest(LSMInvertedIndexTestContext testCtx, TupleGenerator tupleGen,
             List<IInvertedIndexSearchModifier> searchModifiers) throws IOException, IndexException {
         IIndex invIndex = testCtx.getIndex();
-        invIndex.create();
-        invIndex.activate();
-
+        if ((invIndexType != InvertedIndexType.LSM) && (invIndexType != InvertedIndexType.PARTITIONED_LSM) || !bulkLoad) {
+            invIndex.create();
+            invIndex.activate();
+        }
         if (bulkLoad) {
-            LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT);
+            if ((invIndexType != InvertedIndexType.LSM) && (invIndexType != InvertedIndexType.PARTITIONED_LSM)) {
+                LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT, false);
+            } else {
+                LSMInvertedIndexTestUtils.bulkLoadInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT, true);
+            }
         } else {
             LSMInvertedIndexTestUtils.insertIntoInvIndex(testCtx, tupleGen, NUM_DOCS_TO_INSERT);
         }
@@ -82,8 +86,7 @@
         List<IInvertedIndexSearchModifier> searchModifiers = new ArrayList<IInvertedIndexSearchModifier>();
         searchModifiers.add(new ConjunctiveSearchModifier());
         searchModifiers.add(new JaccardSearchModifier(1.0f));
-        searchModifiers.add(new JaccardSearchModifier(0.9f));
-        searchModifiers.add(new JaccardSearchModifier(0.7f));
+        searchModifiers.add(new JaccardSearchModifier(0.8f));
         searchModifiers.add(new JaccardSearchModifier(0.5f));
         runTest(testCtx, tupleGen, searchModifiers);
     }
@@ -93,8 +96,7 @@
         List<IInvertedIndexSearchModifier> searchModifiers = new ArrayList<IInvertedIndexSearchModifier>();
         searchModifiers.add(new ConjunctiveSearchModifier());
         searchModifiers.add(new JaccardSearchModifier(1.0f));
-        searchModifiers.add(new JaccardSearchModifier(0.9f));
-        searchModifiers.add(new JaccardSearchModifier(0.7f));
+        searchModifiers.add(new JaccardSearchModifier(0.8f));
         searchModifiers.add(new JaccardSearchModifier(0.5f));
         searchModifiers.add(new EditDistanceSearchModifier(LSMInvertedIndexTestUtils.TEST_GRAM_LENGTH, 0));
         searchModifiers.add(new EditDistanceSearchModifier(LSMInvertedIndexTestUtils.TEST_GRAM_LENGTH, 1));
@@ -105,7 +107,8 @@
 
     @Test
     public void wordTokensInvIndexTest() throws IOException, IndexException {
-        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createWordInvIndexTestContext(harness, invIndexType);
+        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createWordInvIndexTestContext(harness,
+                invIndexType);
         testWordInvIndexIndex(testCtx);
     }
 
@@ -118,7 +121,8 @@
 
     @Test
     public void ngramTokensInvIndexTest() throws IOException, IndexException {
-        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createNGramInvIndexTestContext(harness, invIndexType);
+        LSMInvertedIndexTestContext testCtx = LSMInvertedIndexTestUtils.createNGramInvIndexTestContext(harness,
+                invIndexType);
         testNGramInvIndexIndex(testCtx);
     }
 
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java
index 9a77f0d..56091e1 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 
 public class InMemoryInvertedIndexDeleteTest extends AbstractInvertedIndexDeleteTest {
-    
+
     public InMemoryInvertedIndexDeleteTest() {
         super(InvertedIndexType.INMEMORY, false);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java
index 85ed7cd..d05f066 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 
 public class InMemoryInvertedIndexInsertTest extends AbstractInvertedIndexLoadTest {
-    
+
     public InMemoryInvertedIndexInsertTest() {
         super(InvertedIndexType.INMEMORY, false);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java
index 0778208..c869720 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 
 public class PartitionedInMemoryInvertedIndexDeleteTest extends AbstractInvertedIndexDeleteTest {
-    
+
     public PartitionedInMemoryInvertedIndexDeleteTest() {
         super(InvertedIndexType.PARTITIONED_INMEMORY, false);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
index a5cdcaa..4e5ccb9 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
@@ -44,7 +44,7 @@
      * Frames containing FixedSizeFrameTuple's require neither tuple slots nor
      * field slots. The tests inserts generated data into a frame until the
      * frame is full, and then verifies the frame's contents.
-     * 
+     *
      */
     @Test
     public void singleFieldTest() throws Exception {
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramTokenizerTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramTokenizerTest.java
index f372dbe..6e764c3 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramTokenizerTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/NGramTokenizerTest.java
@@ -20,21 +20,19 @@
 package org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
 import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.util.string.UTF8StringReader;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.hyracks.data.std.util.GrowableArray;
-
 public class NGramTokenizerTest {
 
     private char PRECHAR = '#';
@@ -72,11 +70,7 @@
 
     @Before
     public void init() throws Exception {
-        // serialize string into bytes
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        DataOutput dos = new DataOutputStream(baos);
-        dos.writeUTF(str);
-        inputBuffer = baos.toByteArray();
+        inputBuffer = UTF8StringUtil.writeStringToBytes(str);
     }
 
     void runTestNGramTokenizerWithCountedHashedUTF8Tokens(boolean prePost) throws IOException {
@@ -192,7 +186,8 @@
             ByteArrayInputStream bais = new ByteArrayInputStream(tokenData.getByteArray());
             DataInput in = new DataInputStream(bais);
 
-            String strGram = in.readUTF();
+            UTF8StringReader reader = new UTF8StringReader();
+            String strGram = reader.readUTF(in);
 
             // System.out.println("\"" + strGram + "\"");
 
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/WordTokenizerTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/WordTokenizerTest.java
index c42022e..78ba6a3 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/WordTokenizerTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/tokenizers/WordTokenizerTest.java
@@ -20,21 +20,19 @@
 package org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
 import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import junit.framework.Assert;
-
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.util.string.UTF8StringReader;
+import org.apache.hyracks.util.string.UTF8StringUtil;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.hyracks.data.std.util.GrowableArray;
+import junit.framework.Assert;
 
 public class WordTokenizerTest {
 
@@ -46,7 +44,8 @@
     private ArrayList<Integer> expectedCountedHashedUTF8Tokens = new ArrayList<Integer>();
 
     private boolean isSeparator(char c) {
-        return !(Character.isLetterOrDigit(c) || Character.getType(c) == Character.OTHER_LETTER || Character.getType(c) == Character.OTHER_NUMBER);
+        return !(Character.isLetterOrDigit(c) || Character.getType(c) == Character.OTHER_LETTER
+                || Character.getType(c) == Character.OTHER_NUMBER);
     }
 
     private void tokenize(String text, ArrayList<String> tokens) {
@@ -78,10 +77,7 @@
     @Before
     public void init() throws IOException {
         // serialize text into bytes
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        DataOutput dos = new DataOutputStream(baos);
-        dos.writeUTF(text);
-        inputBuffer = baos.toByteArray();
+        inputBuffer = UTF8StringUtil.writeStringToBytes(text);
 
         // init expected string tokens
         tokenize(text, expectedUTF8Tokens);
@@ -144,7 +140,8 @@
     public void testWordTokenizerWithHashedUTF8Tokens() throws IOException {
 
         HashedUTF8WordTokenFactory tokenFactory = new HashedUTF8WordTokenFactory();
-        DelimitedUTF8StringBinaryTokenizer tokenizer = new DelimitedUTF8StringBinaryTokenizer(true, false, tokenFactory);
+        DelimitedUTF8StringBinaryTokenizer tokenizer = new DelimitedUTF8StringBinaryTokenizer(true, false,
+                tokenFactory);
 
         tokenizer.reset(inputBuffer, 0, inputBuffer.length);
 
@@ -175,7 +172,8 @@
     public void testWordTokenizerWithUTF8Tokens() throws IOException {
 
         UTF8WordTokenFactory tokenFactory = new UTF8WordTokenFactory();
-        DelimitedUTF8StringBinaryTokenizer tokenizer = new DelimitedUTF8StringBinaryTokenizer(true, false, tokenFactory);
+        DelimitedUTF8StringBinaryTokenizer tokenizer = new DelimitedUTF8StringBinaryTokenizer(true, false,
+                tokenFactory);
 
         tokenizer.reset(inputBuffer, 0, inputBuffer.length);
 
@@ -194,7 +192,8 @@
             ByteArrayInputStream bais = new ByteArrayInputStream(tokenData.getByteArray());
             DataInput in = new DataInputStream(bais);
 
-            String strToken = in.readUTF();
+            UTF8StringReader reader = new UTF8StringReader();
+            String strToken = reader.readUTF(in);
 
             Assert.assertEquals(expectedUTF8Tokens.get(tokenCount), strToken);
 
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
index 7a9db2f..fec5121 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
@@ -40,7 +40,7 @@
 import org.apache.hyracks.storage.am.common.CheckTuple;
 import org.apache.hyracks.storage.am.common.api.IIndex;
 import org.apache.hyracks.storage.am.common.api.IndexException;
-import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager;
+import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualMetaDataPageManager;
 import org.apache.hyracks.storage.am.lsm.invertedindex.api.IInvertedIndex;
 import org.apache.hyracks.storage.am.lsm.invertedindex.common.LSMInvertedIndexTestHarness;
 import org.apache.hyracks.storage.am.lsm.invertedindex.exceptions.InvertedIndexException;
@@ -123,20 +123,20 @@
             invListTypeTraits[i] = allTypeTraits[i + tokenFieldCount];
             invListCmpFactories[i] = allCmpFactories[i + tokenFieldCount];
         }
-        // Create index and test context.        
+        // Create index and test context.
         IInvertedIndex invIndex;
         assert harness.getVirtualBufferCaches().size() > 0;
         switch (invIndexType) {
             case INMEMORY: {
                 invIndex = InvertedIndexUtils.createInMemoryBTreeInvertedindex(harness.getVirtualBufferCaches().get(0),
-                        new VirtualFreePageManager(harness.getVirtualBufferCaches().get(0).getNumPages()),
+                        new VirtualMetaDataPageManager(harness.getVirtualBufferCaches().get(0).getNumPages()),
                         invListTypeTraits, invListCmpFactories, tokenTypeTraits, tokenCmpFactories, tokenizerFactory,
                         new FileReference(new File(harness.getOnDiskDir())));
                 break;
             }
             case PARTITIONED_INMEMORY: {
                 invIndex = InvertedIndexUtils.createPartitionedInMemoryBTreeInvertedindex(harness
-                        .getVirtualBufferCaches().get(0), new VirtualFreePageManager(harness.getVirtualBufferCaches()
+                        .getVirtualBufferCaches().get(0), new VirtualMetaDataPageManager(harness.getVirtualBufferCaches()
                         .get(0).getNumPages()), invListTypeTraits, invListCmpFactories, tokenTypeTraits,
                         tokenCmpFactories, tokenizerFactory, new FileReference(new File(harness.getOnDiskDir())));
                 break;
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
index 36f615f..39a2f74 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
@@ -88,7 +88,7 @@
         fieldGens[0] = new DocumentStringFieldValueGenerator(2, 10, 10000, rnd);
         fieldGens[1] = new SortedIntegerFieldValueGenerator(0);
         ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE };
         TupleGenerator tupleGen = new TupleGenerator(fieldGens, fieldSerdes, 0);
         return tupleGen;
     }
@@ -98,7 +98,7 @@
         fieldGens[0] = new PersonNameFieldValueGenerator(rnd, 0.5f);
         fieldGens[1] = new SortedIntegerFieldValueGenerator(0);
         ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] {
-                UTF8StringSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
+                new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE };
         TupleGenerator tupleGen = new TupleGenerator(fieldGens, fieldSerdes, 0);
         return tupleGen;
     }
@@ -110,7 +110,7 @@
             case INMEMORY:
             case ONDISK:
             case LSM: {
-                fieldSerdes = new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE,
+                fieldSerdes = new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
                         IntegerSerializerDeserializer.INSTANCE };
                 break;
             }
@@ -118,7 +118,7 @@
             case PARTITIONED_ONDISK:
             case PARTITIONED_LSM: {
                 // Such indexes also include the set-size for partitioning.
-                fieldSerdes = new ISerializerDeserializer[] { UTF8StringSerializerDeserializer.INSTANCE,
+                fieldSerdes = new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(),
                         ShortSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
                 break;
             }
@@ -199,7 +199,7 @@
         return testCtx;
     }
 
-    public static void bulkLoadInvIndex(LSMInvertedIndexTestContext testCtx, TupleGenerator tupleGen, int numDocs)
+    public static void bulkLoadInvIndex(LSMInvertedIndexTestContext testCtx, TupleGenerator tupleGen, int numDocs, boolean appendOnly)
             throws IndexException, IOException {
         SortedSet<CheckTuple> tmpMemIndex = new TreeSet<CheckTuple>();
         // First generate the expected index by inserting the documents one-by-one.
@@ -210,7 +210,7 @@
         ISerializerDeserializer[] fieldSerdes = testCtx.getFieldSerdes();
 
         // Use the expected index to bulk-load the actual index.
-        IIndexBulkLoader bulkLoader = testCtx.getIndex().createBulkLoader(1.0f, false, numDocs, true);
+        IIndexBulkLoader bulkLoader = testCtx.getIndex().createBulkLoader(1.0f, false, numDocs, true, appendOnly);
         ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(testCtx.getFieldSerdes().length);
         ArrayTupleReference tuple = new ArrayTupleReference();
         Iterator<CheckTuple> checkTupleIter = tmpMemIndex.iterator();
@@ -465,7 +465,7 @@
                 highKey.appendField(Short.valueOf(numTokensUpperBound));
             }
 
-            // Get view over check tuples containing inverted-list corresponding to token. 
+            // Get view over check tuples containing inverted-list corresponding to token.
             SortedSet<CheckTuple> invList = OrderedIndexTestUtils.getPrefixExpectedSubset(checkTuples, lowKey, highKey);
             Iterator<CheckTuple> invListIter = invList.iterator();
             // Iterate over inverted list and update scan count array.
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-rtree-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-am-lsm-rtree-test/pom.xml
index 5411335..2a16328 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-rtree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-rtree-test/pom.xml
@@ -30,15 +30,6 @@
   <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>
-        </configuration>
-      </plugin>
-      <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-deploy-plugin</artifactId>
       <configuration>
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 6bc0c00..28e5fb4 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml
@@ -31,16 +31,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-deploy-plugin</artifactId>
       <configuration>
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java
index 73ef717..2541bd8 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java
@@ -40,7 +40,7 @@
 	public RTreeDeleteTest() {
 		super(AccessMethodTestsConfig.RTREE_TEST_RSTAR_POLICY);
 	}
-	
+
     @Before
     public void setUp() throws HyracksDataException {
         harness.setUp();
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java
index 8fa7835..621055b 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java
@@ -40,7 +40,7 @@
 	public RTreeInsertTest() {
 		super(AccessMethodTestsConfig.RTREE_TEST_RSTAR_POLICY);
 	}
-	
+
     @Before
     public void setUp() throws HyracksDataException {
         harness.setUp();
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeSearchCursorTest.java b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeSearchCursorTest.java
index c444d68..b613724 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeSearchCursorTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeSearchCursorTest.java
@@ -23,6 +23,8 @@
 import java.util.Random;
 import java.util.logging.Level;
 
+import org.apache.hyracks.storage.am.common.api.*;
+import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -36,15 +38,8 @@
 import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
 import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
 import org.apache.hyracks.dataflow.common.util.TupleUtils;
-import org.apache.hyracks.storage.am.common.api.IFreePageManager;
-import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.api.TreeIndexException;
+import org.apache.hyracks.storage.am.common.api.IMetaDataPageManager;
 import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import org.apache.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback;
 import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator;
 import org.apache.hyracks.storage.am.common.util.HashMultiSet;
@@ -119,7 +114,7 @@
 
         IRTreeInteriorFrame interiorFrame = (IRTreeInteriorFrame) interiorFrameFactory.createFrame();
         IRTreeLeafFrame leafFrame = (IRTreeLeafFrame) leafFrameFactory.createFrame();
-        IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, 0, metaFrameFactory);
+        IMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(bufferCache, metaFrameFactory);
 
         RTree rtree = new RTree(bufferCache, harness.getFileMapProvider(), freePageManager, interiorFrameFactory,
                 leafFrameFactory, cmpFactories, fieldCount, harness.getFileReference());
diff --git a/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml b/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
index fe83cee..7457572 100644
--- a/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
+++ b/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml
@@ -31,16 +31,6 @@
   <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>
-          <fork>true</fork>
-        </configuration>
-      </plugin>
-      <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-deploy-plugin</artifactId>
       <configuration>
diff --git a/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java b/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
index 1f365df..3e410ad 100644
--- a/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
@@ -89,7 +89,7 @@
                 page.getBuffer().putInt(i * 4, i);
             }
 
-            // try pin should succeed         
+            // try pin should succeed
             ICachedPage page2 = bufferCache.tryPin(BufferedFileHandle.getDiskPageId(fileId, testPageId));
             Assert.assertNotNull(page2);
             bufferCache.unpin(page2);
@@ -124,7 +124,7 @@
         // open file again
         bufferCache.openFile(fileId);
 
-        // tryPin should succeed because page should still be cached        
+        // tryPin should succeed because page should still be cached
         page = bufferCache.tryPin(BufferedFileHandle.getDiskPageId(fileId, testPageId));
         Assert.assertNotNull(page);
         page.acquireReadLatch();
@@ -283,7 +283,7 @@
         }
         Assert.assertTrue(exceptionThrown);
 
-        // close a few random files again        
+        // close a few random files again
         for (int i = 0; i < filesToClose; i++) {
             int ix = Math.abs(rnd.nextInt()) % fileIds.size();
             bufferCache.closeFile(fileIds.get(ix));
@@ -319,102 +319,6 @@
         bufferCache.close();
     }
 
-    @Test
-    public void virtualPageTest() throws HyracksDataException {
-        TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
-        IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
-        IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
-
-        List<Integer> fileIds = new ArrayList<Integer>();
-        Map<Integer, ArrayList<Integer>> pageContents = new HashMap<Integer, ArrayList<Integer>>();
-        ArrayList<Integer> memVals;
-        int num = 10;
-        int testPageId = 0;
-        int lastRealPage = 0;
-        String fileName = getFileName();
-        FileReference file = new FileReference(new File(fileName));
-        bufferCache.createFile(file);
-        int memFileId = bufferCache.createMemFile();
-        int fileId = fmp.lookupFileId(file);
-        bufferCache.openFile(fileId);
-        fileIds.add(fileId);
-
-        // try and write a few somethings into an on-disk paged file
-        ICachedPage page = null;
-        for (; lastRealPage < 10; lastRealPage++) {
-            page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, lastRealPage), true);
-            page.acquireWriteLatch();
-            try {
-                ArrayList<Integer> values = new ArrayList<Integer>();
-                for (int j = 0; j < num; j++) {
-                    int x = Math.abs(rnd.nextInt());
-                    page.getBuffer().putInt(j * 4, x);
-                    values.add(x);
-                }
-                pageContents.put(lastRealPage, values);
-            } finally {
-                page.releaseWriteLatch(true);
-                bufferCache.unpin(page);
-            }
-        }
-        //now try the same thing, but for a virtual page
-        page = bufferCache.pinVirtual(BufferedFileHandle.getDiskPageId(memFileId, testPageId));
-        page.acquireWriteLatch();
-        try {
-            ArrayList<Integer> values = new ArrayList<Integer>();
-            for (int j = 0; j < num; j++) {
-                int x = Math.abs(rnd.nextInt());
-                page.getBuffer().putInt(j * 4, x);
-                values.add(x);
-            }
-            memVals = values;
-        } finally {
-            page.releaseWriteLatch(true);
-            //no unpin here.
-        }
-        //write some more stuff...
-        for (; lastRealPage < 20; lastRealPage++) {
-            page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, lastRealPage), true);
-            page.acquireWriteLatch();
-            try {
-                ArrayList<Integer> values = new ArrayList<Integer>();
-                for (int j = 0; j < num; j++) {
-                    int x = Math.abs(rnd.nextInt());
-                    page.getBuffer().putInt(j * 4, x);
-                    values.add(x);
-                }
-                pageContents.put(lastRealPage, values);
-            } finally {
-                page.releaseWriteLatch(true);
-                bufferCache.unpin(page);
-            }
-        }
-        //now try putting the virtual page after the other pages
-        ICachedPage realPage = bufferCache.unpinVirtual(BufferedFileHandle.getDiskPageId(memFileId, testPageId),
-                BufferedFileHandle.getDiskPageId(fileId, lastRealPage));
-        bufferCache.unpin(realPage);
-        pageContents.put(lastRealPage, memVals);
-
-        bufferCache.closeFile(fileId);
-
-        //now try reading it back!
-        bufferCache.openFile(fileId);
-        for (int i : pageContents.keySet()) {
-            page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, i), false);
-            page.acquireReadLatch();
-            try {
-                ArrayList<Integer> values = pageContents.get(i);
-                for (int j = 0; j < values.size(); j++) {
-                    Assert.assertEquals(values.get(j).intValue(), page.getBuffer().getInt(j * 4));
-                }
-            } finally {
-                page.releaseReadLatch();
-                bufferCache.unpin(page);
-            }
-        }
-        bufferCache.closeFile(fileId);
-    }
-
     @AfterClass
     public static void cleanup() throws Exception {
         for (String s : openedFiles) {
diff --git a/hyracks/hyracks-util/pom.xml b/hyracks/hyracks-util/pom.xml
new file mode 100644
index 0000000..9bf3459
--- /dev/null
+++ b/hyracks/hyracks-util/pom.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<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">
+    <parent>
+        <artifactId>hyracks</artifactId>
+        <groupId>org.apache.hyracks</groupId>
+        <version>0.2.18-SNAPSHOT</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <artifactId>hyracks-util</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/MathUtil.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/MathUtil.java
similarity index 92%
rename from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/MathUtil.java
rename to hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/MathUtil.java
index ebdeeefc..2b157e4 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/util/MathUtil.java
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/MathUtil.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.util;
+package org.apache.hyracks.util;
 
 public class MathUtil {
     /**
@@ -51,4 +51,8 @@
 
         return log + (n >>> 1);
     }
+
+    public static int stripSignBit(int n) {
+        return n & 0x7fffffff;
+    }
 }
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/Base64Parser.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/Base64Parser.java
new file mode 100644
index 0000000..257daee
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/Base64Parser.java
@@ -0,0 +1,250 @@
+/*
+ * 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.hyracks.util.bytes;
+
+import java.util.Arrays;
+
+public class Base64Parser {
+    private static final byte[] DECODE_MAP = initDecodeMap();
+    private static final byte PADDING = 127;
+
+    private static byte[] initDecodeMap() {
+        byte[] map = new byte[128];
+        Arrays.fill(map, (byte) -1);
+
+        int i;
+        for (i = 'A'; i <= 'Z'; i++) {
+            map[i] = (byte) (i - 'A');
+        }
+        for (i = 'a'; i <= 'z'; i++) {
+            map[i] = (byte) (i - 'a' + 26);
+        }
+        for (i = '0'; i <= '9'; i++) {
+            map[i] = (byte) (i - '0' + 52);
+        }
+        map['+'] = 62;
+        map['/'] = 63;
+        map['='] = PADDING;
+
+        return map;
+    }
+
+    private byte[] quadruplet = new byte[4];
+    private byte[] storage;
+    private int length = 0;
+
+    /**
+     * Parse the Base64 sequence from {@code input} into {@code out}
+     * Note, the out should have enough space by checking the {@link #guessLength(char[], int, int)} first
+     *
+     * @param input
+     * @param start
+     * @param length
+     * @param out
+     * @param offset
+     * @return
+     */
+    public int parseBase64String(char[] input, int start, int length, byte[] out, int offset) {
+        int outLength = 0;
+
+        int i;
+        int q = 0;
+
+        // convert each quadruplet to three bytes.
+        for (i = 0; i < length; i++) {
+            char ch = input[start + i];
+            byte v = DECODE_MAP[ch];
+
+            if (v == -1) {
+                throw new IllegalArgumentException("Invalid Base64 character");
+            }
+            quadruplet[q++] = v;
+
+            if (q == 4) {
+                outLength += dumpQuadruplet(out, offset + outLength);
+                q = 0;
+            }
+        }
+
+        return outLength;
+    }
+
+    /**
+     * Parse the Base64 sequence from {@code input} into {@code out}
+     * Note, the out should have enough space by checking the {@link #guessLength(byte[], int, int)} first
+     *
+     * @param input
+     * @param start
+     * @param length
+     * @param out
+     * @param offset
+     * @return the number of written bytes
+     */
+    public int parseBase64String(byte[] input, int start, int length, byte[] out, int offset) {
+        int outLength = 0;
+
+        int i;
+        int q = 0;
+
+        // convert each quadruplet to three bytes.
+        for (i = 0; i < length; i++) {
+            char ch = (char) input[start + i];
+            byte v = DECODE_MAP[ch];
+
+            if (v == -1) {
+                throw new IllegalArgumentException("Invalid Base64 character");
+            }
+            quadruplet[q++] = v;
+
+            if (q == 4) {
+                outLength += dumpQuadruplet(out, offset + outLength);
+                q = 0;
+            }
+        }
+
+        return outLength;
+    }
+
+    /**
+     * computes the length of binary data speculatively.
+     * Our requirement is to create byte[] of the exact length to store the binary data.
+     * If we do this in a straight-forward way, it takes two passes over the data.
+     * Experiments show that this is a non-trivial overhead (35% or so is spent on
+     * the first pass in calculating the length.)
+     * So the approach here is that we compute the length speculatively, without looking
+     * at the whole contents. The obtained speculative value is never less than the
+     * actual length of the binary data, but it may be bigger. So if the speculation
+     * goes wrong, we'll pay the cost of reallocation and buffer copying.
+     * If the base64 text is tightly packed with no indentation nor illegal char
+     * (like what most web services produce), then the speculation of this method
+     * will be correct, so we get the performance benefit.
+     */
+    public static int guessLength(char[] chars, int start, int length) {
+
+        // compute the tail '=' chars
+        int j = length - 1;
+        for (; j >= 0; j--) {
+            byte code = DECODE_MAP[chars[start + j]];
+            if (code == PADDING) {
+                continue;
+            }
+            if (code == -1) // most likely this base64 text is indented. go with the upper bound
+            {
+                return length / 4 * 3;
+            }
+            break;
+        }
+
+        j++;    // text.charAt(j) is now at some base64 char, so +1 to make it the size
+        int padSize = length - j;
+        if (padSize > 2) // something is wrong with base64. be safe and go with the upper bound
+        {
+            return length / 4 * 3;
+        }
+
+        // so far this base64 looks like it's unindented tightly packed base64.
+        // take a chance and create an array with the expected size
+        return length / 4 * 3 - padSize;
+    }
+
+    public static int guessLength(byte[] chars, int start, int length) {
+
+        // compute the tail '=' chars
+        int j = length - 1;
+        for (; j >= 0; j--) {
+            byte code = DECODE_MAP[chars[start + j]];
+            if (code == PADDING) {
+                continue;
+            }
+            if (code == -1) // most likely this base64 text is indented. go with the upper bound
+            {
+                return length / 4 * 3;
+            }
+            break;
+        }
+
+        j++;    // text.charAt(j) is now at some base64 char, so +1 to make it the size
+        int padSize = length - j;
+        if (padSize > 2) // something is wrong with base64. be safe and go with the upper bound
+        {
+            return length / 4 * 3;
+        }
+
+        // so far this base64 looks like it's unindented tightly packed base64.
+        // take a chance and create an array with the expected size
+        return length / 4 * 3 - padSize;
+    }
+
+    public byte[] getByteArray() {
+        return storage;
+    }
+
+    public int getLength() {
+        return length;
+    }
+
+    /**
+     * Same as {@link #parseBase64String(byte[], int, int, byte[], int)}, but we will provide the storage for caller
+     *
+     * @param input
+     * @param start
+     * @param length
+     */
+    public void generatePureByteArrayFromBase64String(byte[] input, int start, int length) {
+        // The base64 character length equals to utf8length
+        if (length % 4 != 0) {
+            throw new IllegalArgumentException(
+                    "Invalid Base64 string, the length of the string should be a multiple of 4");
+        }
+        final int buflen = guessLength(input, start, length);
+        ensureCapacity(buflen);
+        this.length = parseBase64String(input, start, length, storage, 0);
+    }
+
+    public void generatePureByteArrayFromBase64String(char[] input, int start, int length) {
+        if (length % 4 != 0) {
+            throw new IllegalArgumentException(
+                    "Invalid Base64 string, the length of the string should be a multiple of 4");
+        }
+        final int buflen = guessLength(input, start, length);
+        ensureCapacity(buflen);
+        this.length = parseBase64String(input, start, length, storage, 0);
+    }
+
+    private void ensureCapacity(int length) {
+        if (storage == null || storage.length < length) {
+            storage = new byte[length];
+        }
+    }
+
+    private int dumpQuadruplet(byte[] out, int offset) {
+        int outLength = 0;
+        // quadruplet is now filled.
+        out[offset + outLength++] = (byte) ((quadruplet[0] << 2) | (quadruplet[1] >> 4));
+        if (quadruplet[2] != PADDING) {
+            out[offset + outLength++] = (byte) ((quadruplet[1] << 4) | (quadruplet[2] >> 2));
+        }
+        if (quadruplet[3] != PADDING) {
+            out[offset + outLength++] = (byte) ((quadruplet[2] << 6) | (quadruplet[3]));
+        }
+        return outLength;
+    }
+
+}
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/Base64Printer.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/Base64Printer.java
new file mode 100644
index 0000000..0e1c078
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/Base64Printer.java
@@ -0,0 +1,125 @@
+/*
+ * 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.hyracks.util.bytes;
+
+import java.io.IOException;
+
+public class Base64Printer {
+    /**
+     * Encodes a byte array into a {@code Appendable} stream by doing base64 encoding.
+     *
+     * @return the same input stream.
+     */
+    public static Appendable printBase64Binary(byte[] input, int offset, int len, Appendable appendable)
+            throws IOException {
+        // encode elements until only 1 or 2 elements are left to encode
+        int remaining = len;
+        int i;
+        for (i = offset; remaining >= 3; remaining -= 3, i += 3) {
+            appendable.append(encode(input[i] >> 2));
+            appendable.append(encode(
+                    ((input[i] & 0x3) << 4)
+                            | ((input[i + 1] >> 4) & 0xF)));
+            appendable.append(encode(
+                    ((input[i + 1] & 0xF) << 2)
+                            | ((input[i + 2] >> 6) & 0x3)));
+            appendable.append(encode(input[i + 2] & 0x3F));
+        }
+        // encode when exactly 1 element (left) to encode
+        if (remaining == 1) {
+            appendable.append(encode(input[i] >> 2));
+            appendable.append(encode(((input[i]) & 0x3) << 4));
+            appendable.append('=');
+            appendable.append('=');
+        }
+        // encode when exactly 2 elements (left) to encode
+        if (remaining == 2) {
+            appendable.append(encode(input[i] >> 2));
+            appendable.append(encode(((input[i] & 0x3) << 4)
+                    | ((input[i + 1] >> 4) & 0xF)));
+            appendable.append(encode((input[i + 1] & 0xF) << 2));
+            appendable.append('=');
+        }
+        return appendable;
+    }
+
+    /**
+     * Encodes a byte array into a char array by doing base64 encoding.
+     * The caller must supply a big enough buffer.
+     *
+     * @return the value of {@code ptr+((len+2)/3)*4}, which is the new offset
+     * in the output buffer where the further bytes should be placed.
+     */
+    public static int printBase64Binary(byte[] input, int offset, int len, char[] buf, int ptr) {
+        // encode elements until only 1 or 2 elements are left to encode
+        int remaining = len;
+        int i;
+        for (i = offset; remaining >= 3; remaining -= 3, i += 3) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(
+                    ((input[i] & 0x3) << 4)
+                            | ((input[i + 1] >> 4) & 0xF));
+            buf[ptr++] = encode(
+                    ((input[i + 1] & 0xF) << 2)
+                            | ((input[i + 2] >> 6) & 0x3));
+            buf[ptr++] = encode(input[i + 2] & 0x3F);
+        }
+        // encode when exactly 1 element (left) to encode
+        if (remaining == 1) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(((input[i]) & 0x3) << 4);
+            buf[ptr++] = '=';
+            buf[ptr++] = '=';
+        }
+        // encode when exactly 2 elements (left) to encode
+        if (remaining == 2) {
+            buf[ptr++] = encode(input[i] >> 2);
+            buf[ptr++] = encode(((input[i] & 0x3) << 4)
+                    | ((input[i + 1] >> 4) & 0xF));
+            buf[ptr++] = encode((input[i + 1] & 0xF) << 2);
+            buf[ptr++] = '=';
+        }
+        return ptr;
+    }
+
+    private static final char[] encodeMap = initEncodeMap();
+
+    private static char[] initEncodeMap() {
+        char[] map = new char[64];
+        int i;
+        for (i = 0; i < 26; i++) {
+            map[i] = (char) ('A' + i);
+        }
+        for (i = 26; i < 52; i++) {
+            map[i] = (char) ('a' + (i - 26));
+        }
+        for (i = 52; i < 62; i++) {
+            map[i] = (char) ('0' + (i - 52));
+        }
+        map[62] = '+';
+        map[63] = '/';
+
+        return map;
+    }
+
+    public static char encode(int i) {
+        return encodeMap[i & 0x3F];
+    }
+}
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/HexParser.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/HexParser.java
new file mode 100644
index 0000000..ba7276b
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/HexParser.java
@@ -0,0 +1,97 @@
+/*
+ * 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.hyracks.util.bytes;
+
+public class HexParser {
+    public static boolean isValidHexChar(char c) {
+        if (c >= '0' && c <= '9'
+                || c >= 'a' && c <= 'f'
+                || c >= 'A' && c <= 'F') {
+            return true;
+        }
+        return false;
+    }
+
+    public static int getValueFromValidHexChar(char c) {
+        if (c >= '0' && c <= '9') {
+            return c - '0';
+        }
+        if (c >= 'a' && c <= 'f') {
+            return 10 + c - 'a';
+        }
+        if (c >= 'A' && c <= 'F') {
+            return 10 + c - 'A';
+        }
+        throw new IllegalArgumentException("Invalid hex character : " + c);
+    }
+
+    private byte[] storage;
+    private int length;
+
+    public byte[] getByteArray() {
+        return storage;
+    }
+
+    public int getLength() {
+        return length;
+    }
+
+    public void generateByteArrayFromHexString(char[] input, int start, int length) {
+        if (length % 2 != 0) {
+            throw new IllegalArgumentException(
+                    "Invalid hex string for binary type: the string length should be a muliple of 2.");
+        }
+        this.length = length / 2;
+        ensureCapacity(this.length);
+        generateByteArrayFromHexString(input, start, length, storage, 0);
+    }
+
+    public void generateByteArrayFromHexString(byte[] input, int start, int length) {
+        if (length % 2 != 0) {
+            throw new IllegalArgumentException(
+                    "Invalid hex string for binary type: the string length should be a muliple of 2.");
+        }
+        this.length = length / 2;
+        ensureCapacity(this.length);
+        generateByteArrayFromHexString(input, start, length, storage, 0);
+    }
+
+    private void ensureCapacity(int capacity) {
+        if (storage == null || storage.length < capacity) {
+            storage = new byte[capacity];
+        }
+    }
+
+    public static void generateByteArrayFromHexString(char[] input, int start, int length, byte[] output,
+            int offset) {
+        for (int i = 0; i < length; i += 2) {
+            output[offset + i / 2] = (byte) ((getValueFromValidHexChar(input[start + i]) << 4) +
+                    getValueFromValidHexChar(input[start + i + 1]));
+        }
+    }
+
+    public static void generateByteArrayFromHexString(byte[] input, int start, int length, byte[] output,
+            int offset) {
+        for (int i = 0; i < length; i += 2) {
+            output[offset + i / 2] = (byte) ((getValueFromValidHexChar((char) input[start + i]) << 4) +
+                    getValueFromValidHexChar((char) input[start + i + 1]));
+        }
+    }
+}
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/HexPrinter.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/HexPrinter.java
new file mode 100644
index 0000000..5a9c064
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/bytes/HexPrinter.java
@@ -0,0 +1,48 @@
+/*
+ * 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.hyracks.util.bytes;
+
+import java.io.IOException;
+
+public class HexPrinter {
+    public enum CASE {
+        LOWER_CASE,
+        UPPER_CASE,
+    }
+
+    public static byte hex(int i, CASE c) {
+        switch (c) {
+            case LOWER_CASE:
+                return (byte) (i < 10 ? i + '0' : i + ('a' - 10));
+            case UPPER_CASE:
+                return (byte) (i < 10 ? i + '0' : i + ('A' - 10));
+        }
+        return Byte.parseByte(null);
+    }
+
+    public static Appendable printHexString(byte[] bytes, int start, int length, Appendable appendable)
+            throws IOException {
+        for (int i = 0; i < length; ++i) {
+            appendable.append((char) hex((bytes[start + i] >>> 4) & 0x0f, CASE.UPPER_CASE));
+            appendable.append((char) hex((bytes[start + i] & 0x0f), CASE.UPPER_CASE));
+        }
+        return appendable;
+    }
+}
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/encoding/VarLenIntEncoderDecoder.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/encoding/VarLenIntEncoderDecoder.java
new file mode 100644
index 0000000..a3ba969
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/encoding/VarLenIntEncoderDecoder.java
@@ -0,0 +1,147 @@
+/*
+ * 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.hyracks.util.encoding;
+
+import java.io.DataInput;
+import java.io.IOException;
+
+/**
+ * Encodes positive integers in a variable-bytes format.
+ * Each byte stores seven bits of the number. The first bit of each byte notifies if it is the last byte.
+ * Specifically, if the first bit is set, then we need to shift the current value by seven and
+ * continue to read the next byte util we meet a byte whose first byte is unset.
+ * e.g. if the number is < 128, it will be stored using one byte and the byte value keeps as original.
+ * To store the number 255 (0xff) , it will be encoded as [0x81,0x7f]. To decode that value, it reads the 0x81
+ * to know that the current value is (0x81 & 0x7f)= 0x01, and the first bit tells that there are more bytes to
+ * be read. When it meets 0x7f, whose first flag is unset, it knows that it is the final byte to decode.
+ * Finally it will return ( 0x01 << 7) + 0x7f === 255.
+ */
+public class VarLenIntEncoderDecoder {
+    // sometimes the dec number is easier to get the sense of how big it is.
+    public static final int BOUND_ONE_BYTE = 128; // 1 << 7
+    public static final int BOUND_TWO_BYTE = 16384; // 1 << 14
+    public static final int BOUND_THREE_BYTE = 2097152; // 1 << 21
+    public static final int BOUND_FOUR_BYTE = 268435456; // 1 << 28
+    public static final int BOUND_FIVE_BYTE = Integer.MAX_VALUE;
+
+    public static final int ENCODE_MASK = 0x0000007F;
+    public static final byte CONTINUE_CHUNK = (byte) 0x80;
+    public static final byte DECODE_MASK = 0x7F;
+
+    // calculate the number of bytes needed for encoding
+    public static int getBytesRequired(int length) {
+        if (length < 0) {
+            throw new IllegalArgumentException("The length must be an non-negative value");
+        }
+
+        int byteCount = 0;
+        while (length > ENCODE_MASK) {
+            length = length >>> 7;
+            byteCount++;
+        }
+        return byteCount + 1;
+    }
+
+    public static int decode(DataInput in) throws IOException {
+        int sum = 0;
+        byte b = in.readByte();
+        while ((b & CONTINUE_CHUNK) == CONTINUE_CHUNK) {
+            sum = (sum + (b & DECODE_MASK)) << 7;
+            b = in.readByte();
+        }
+        sum += b;
+        return sum;
+    }
+
+    public static int decode(byte[] srcBytes, int startPos) {
+        int sum = 0;
+        while (startPos < srcBytes.length && (srcBytes[startPos] & CONTINUE_CHUNK) == CONTINUE_CHUNK) {
+            sum = (sum + (srcBytes[startPos] & DECODE_MASK)) << 7;
+            startPos++;
+        }
+        if (startPos < srcBytes.length) {
+            sum += srcBytes[startPos];
+        } else {
+            throw new IllegalStateException("Corrupted string bytes: trying to access entry " + startPos
+                    + " in a byte array of length " + srcBytes.length);
+        }
+        return sum;
+    }
+
+    public static int encode(int lengthVal, byte[] destBytes, int startPos) {
+        if (lengthVal < 0) {
+            throw new IllegalArgumentException("The length must be an non-negative value");
+        }
+        int nextPos = startPos;
+        while (lengthVal > ENCODE_MASK) {
+            destBytes[nextPos++] = (byte) (lengthVal & ENCODE_MASK);
+            lengthVal = lengthVal >>> 7;
+        }
+        destBytes[nextPos++] = (byte) lengthVal;
+
+        // reverse order to optimize for decoding speed
+        int length = nextPos - startPos;
+        int i = 0;
+        for (; i < length / 2; i++) {
+            byte b = destBytes[startPos + i];
+            destBytes[startPos + i] = (byte) (destBytes[startPos + length - 1 - i] | CONTINUE_CHUNK);
+            destBytes[startPos + length - 1 - i] = (byte) (b | CONTINUE_CHUNK);
+        }
+        destBytes[startPos + i] |= CONTINUE_CHUNK;
+        destBytes[nextPos - 1] &= ENCODE_MASK;
+        return length;
+    }
+
+    public static VarLenIntDecoder createDecoder() {
+        return new VarLenIntDecoder();
+    }
+
+    // keep the stateful version for the ease of the continuously decoding behaviors.
+    public static class VarLenIntDecoder {
+
+        private byte[] bytes = null;
+        private int pos = 0;
+
+        public VarLenIntDecoder reset(byte[] bytes, int pos) {
+            this.bytes = bytes;
+            this.pos = pos;
+            return this;
+        }
+
+        /**
+         * @return the int value
+         */
+        public int decode() {
+            int sum = 0;
+            while ((bytes[pos] & CONTINUE_CHUNK) == CONTINUE_CHUNK) {
+                sum = (sum + (bytes[pos] & DECODE_MASK)) << 7;
+                pos++;
+            }
+            sum += bytes[pos++];
+            return sum;
+        }
+
+        public int getPos() {
+            return pos;
+        }
+
+    }
+
+}
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringReader.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringReader.java
new file mode 100644
index 0000000..27d6008
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringReader.java
@@ -0,0 +1,60 @@
+/*
+ * 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.hyracks.util.string;
+
+import java.io.DataInput;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.UTFDataFormatException;
+
+public class UTF8StringReader {
+
+    byte[] bytearr = null;
+    char[] chararr = null;
+
+    /**
+     * Reads from the
+     * stream <code>in</code> a representation
+     * of a Unicode character string encoded in
+     * <a href="DataInput.html#modified-utf-8">modified UTF-8</a> format;
+     * this string of characters is then returned as a <code>String</code>.
+     * The details of the modified UTF-8 representation
+     * are exactly the same as for the <code>readUTF</code>
+     * method of <code>DataInput</code>.
+     *
+     * @param in
+     *            a data input stream.
+     * @return a Unicode string.
+     * @throws EOFException
+     *             if the input stream reaches the end
+     *             before all the bytes.
+     * @throws IOException
+     *             the stream has been closed and the contained
+     *             input stream does not support reading after close, or
+     *             another I/O error occurs.
+     * @throws UTFDataFormatException
+     *             if the bytes do not represent a
+     *             valid modified UTF-8 encoding of a Unicode string.
+     * @see java.io.DataInputStream#readUnsignedShort()
+     */
+    public final String readUTF(DataInput in) throws IOException {
+        return UTF8StringUtil.readUTF8(in, this);
+    }
+}
diff --git a/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java
new file mode 100644
index 0000000..ee05b03
--- /dev/null
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringUtil.java
@@ -0,0 +1,628 @@
+/**
+ * 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.hyracks.util.string;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UTFDataFormatException;
+
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+
+/**
+ * A helper package to operate the UTF8String in Hyracks.
+ * Most of the codes were migrated from asterix-fuzzyjoin and hyracks-storage-am-invertedindex
+ */
+public class UTF8StringUtil {
+    public static char charAt(byte[] b, int s) {
+        if (s >= b.length) {
+            throw new ArrayIndexOutOfBoundsException("Are you crazy?");
+        }
+        int c = b[s] & 0xff;
+        switch (c >> 4) {
+            case 0:
+            case 1:
+            case 2:
+            case 3:
+            case 4:
+            case 5:
+            case 6:
+            case 7:
+                return (char) c;
+
+            case 12:
+            case 13:
+                return (char) (((c & 0x1F) << 6) | ((b[s + 1]) & 0x3F));
+
+            case 14:
+                return (char) (((c & 0x0F) << 12) | (((b[s + 1]) & 0x3F) << 6) | (((b[s + 2]) & 0x3F) << 0));
+
+            default:
+                throw new IllegalArgumentException();
+        }
+    }
+
+    public static int charSize(byte[] b, int s) {
+        int c = b[s] & 0xff;
+        switch (c >> 4) {
+            case 0:
+            case 1:
+            case 2:
+            case 3:
+            case 4:
+            case 5:
+            case 6:
+            case 7:
+                return 1;
+
+            case 12:
+            case 13:
+                return 2;
+
+            case 14:
+                return 3;
+        }
+        throw new IllegalStateException();
+    }
+
+    public static int getModifiedUTF8Len(char c) {
+        if (c >= 0x0001 && c <= 0x007F) {
+            return 1;
+        } else if (c <= 0x07FF) {
+            return 2;
+        } else {
+            return 3;
+        }
+    }
+
+    public static int writeCharAsModifiedUTF8(char c, DataOutput dos) throws IOException {
+        if (c >= 0x0001 && c <= 0x007F) {
+            dos.writeByte(c);
+            return 1;
+        } else if (c <= 0x07FF) {
+            dos.writeByte((byte) (0xC0 | ((c >> 6) & 0x3F)));
+            dos.writeByte((byte) (0x80 | (c & 0x3F)));
+            return 2;
+        } else {
+            dos.writeByte((byte) (0xE0 | ((c >> 12) & 0x0F)));
+            dos.writeByte((byte) (0x80 | ((c >> 6) & 0x3F)));
+            dos.writeByte((byte) (0x80 | (c & 0x3F)));
+            return 3;
+        }
+    }
+
+    public static int writeCharAsModifiedUTF8(char c, OutputStream dos) throws IOException {
+        if (c >= 0x0001 && c <= 0x007F) {
+            dos.write(c);
+            return 1;
+        } else if (c <= 0x07FF) {
+            dos.write((byte) (0xC0 | ((c >> 6) & 0x3F)));
+            dos.write((byte) (0x80 | (c & 0x3F)));
+            return 2;
+        } else {
+            dos.write((byte) (0xE0 | ((c >> 12) & 0x0F)));
+            dos.write((byte) (0x80 | ((c >> 6) & 0x3F)));
+            dos.write((byte) (0x80 | (c & 0x3F)));
+            return 3;
+        }
+    }
+
+    public static int getStringLength(byte[] b, int s) {
+        int len = getUTFLength(b, s);
+        int pos = s + getNumBytesToStoreLength(len);
+        int end = pos + len;
+        int charCount = 0;
+        while (pos < end) {
+            charCount++;
+            pos += charSize(b, pos);
+        }
+        return charCount;
+    }
+
+    public static int getUTFLength(byte[] b, int s) {
+        return VarLenIntEncoderDecoder.decode(b, s);
+    }
+
+    public static int getNumBytesToStoreLength(int strlen) {
+        return VarLenIntEncoderDecoder.getBytesRequired(strlen);
+    }
+
+    public static int UTF8ToCodePoint(byte[] b, int s) {
+        if (b[s] >> 7 == 0) {
+            // 1 byte
+            return b[s];
+        } else if ((b[s] & 0xe0) == 0xc0) { /*0xe0 = 0b1110000*/
+            // 2 bytes
+            return (b[s] & 0x1f) << 6 | /*0x3f = 0b00111111*/
+                    (b[s + 1] & 0x3f);
+        } else if ((b[s] & 0xf0) == 0xe0) {
+            // 3bytes
+            return (b[s] & 0xf) << 12 | (b[s + 1] & 0x3f) << 6 | (b[s + 2] & 0x3f);
+        } else if ((b[s] & 0xf8) == 0xf0) {
+            // 4bytes
+            return (b[s] & 0x7) << 18 | (b[s + 1] & 0x3f) << 12 | (b[s + 2] & 0x3f) << 6 | (b[s + 3] & 0x3f);
+        } else if ((b[s] & 0xfc) == 0xf8) {
+            // 5bytes
+            return (b[s] & 0x3) << 24 | (b[s + 1] & 0x3f) << 18 | (b[s + 2] & 0x3f) << 12 | (b[s + 3] & 0x3f) << 6
+                    | (b[s + 4] & 0x3f);
+        } else if ((b[s] & 0xfe) == 0xfc) {
+            // 6bytes
+            return (b[s] & 0x1) << 30 | (b[s + 1] & 0x3f) << 24 | (b[s + 2] & 0x3f) << 18 | (b[s + 3] & 0x3f) << 12
+                    | (b[s + 4] & 0x3f) << 6 | (b[s + 5] & 0x3f);
+        }
+        return 0;
+    }
+
+    public static int codePointToUTF8(int c, byte[] outputUTF8) {
+        if (c < 0x80) {
+            outputUTF8[0] = (byte) (c & 0x7F /* mask 7 lsb: 0b1111111 */);
+            return 1;
+        } else if (c < 0x0800) {
+            outputUTF8[0] = (byte) (c >> 6 & 0x1F | 0xC0);
+            outputUTF8[1] = (byte) (c & 0x3F | 0x80);
+            return 2;
+        } else if (c < 0x010000) {
+            outputUTF8[0] = (byte) (c >> 12 & 0x0F | 0xE0);
+            outputUTF8[1] = (byte) (c >> 6 & 0x3F | 0x80);
+            outputUTF8[2] = (byte) (c & 0x3F | 0x80);
+            return 3;
+        } else if (c < 0x200000) {
+            outputUTF8[0] = (byte) (c >> 18 & 0x07 | 0xF0);
+            outputUTF8[1] = (byte) (c >> 12 & 0x3F | 0x80);
+            outputUTF8[2] = (byte) (c >> 6 & 0x3F | 0x80);
+            outputUTF8[3] = (byte) (c & 0x3F | 0x80);
+            return 4;
+        } else if (c < 0x4000000) {
+            outputUTF8[0] = (byte) (c >> 24 & 0x03 | 0xF8);
+            outputUTF8[1] = (byte) (c >> 18 & 0x3F | 0x80);
+            outputUTF8[2] = (byte) (c >> 12 & 0x3F | 0x80);
+            outputUTF8[3] = (byte) (c >> 6 & 0x3F | 0x80);
+            outputUTF8[4] = (byte) (c & 0x3F | 0x80);
+            return 5;
+        } else if (c < 0x80000000) {
+            outputUTF8[0] = (byte) (c >> 30 & 0x01 | 0xFC);
+            outputUTF8[1] = (byte) (c >> 24 & 0x3F | 0x80);
+            outputUTF8[2] = (byte) (c >> 18 & 0x3F | 0x80);
+            outputUTF8[3] = (byte) (c >> 12 & 0x3F | 0x80);
+            outputUTF8[4] = (byte) (c >> 6 & 0x3F | 0x80);
+            outputUTF8[5] = (byte) (c & 0x3F | 0x80);
+            return 6;
+        }
+        return 0;
+    }
+
+    /**
+     * Compute the normalized key of the UTF8 string.
+     * The normalized key in Hyracks is mainly used to speedup the comparison between pointable data.
+     * In the UTF8StringPTR case, we compute the integer value by using the first 2 chars.
+     * The comparator will first use this integer to get the result ( <,>, or =), it will check
+     * the actual bytes only if the normalized key is equal. Thus this normalized key must be
+     * consistent with the comparison result.
+     */
+    public static int normalize(byte[] bytes, int start) {
+        int len = getUTFLength(bytes, start);
+        long nk = 0;
+        int offset = start + getNumBytesToStoreLength(len);
+        for (int i = 0; i < 2; ++i) {
+            nk <<= 16;
+            if (i < len) {
+                nk += (charAt(bytes, offset)) & 0xffff;
+                offset += charSize(bytes, offset);
+            }
+        }
+        return (int) (nk >> 1); // make it always positive.
+    }
+
+    public static int compareTo(byte[] thisBytes, int thisStart, byte[] thatBytes, int thatStart) {
+        return compareTo(thisBytes, thisStart, thatBytes, thatStart, false, false);
+    }
+
+    /**
+     * This function provides the raw bytes-based comparison for UTF8 strings.
+     * Note that the comparison may not deliver the correct ordering for certain languages that include 2 or 3 bytes characters.
+     * But it works for single-byte character languages.
+     */
+    public static int rawByteCompareTo(byte[] thisBytes, int thisStart, byte[] thatBytes, int thatStart) {
+        return compareTo(thisBytes, thisStart, thatBytes, thatStart, false, true);
+    }
+
+    public static int lowerCaseCompareTo(byte[] thisBytes, int thisStart, byte[] thatBytes, int thatStart) {
+        return compareTo(thisBytes, thisStart, thatBytes, thatStart, true, false);
+    }
+
+    public static int hash(byte[] bytes, int start, int coefficient, int r) {
+        return hash(bytes, start, false, false, coefficient, r);
+    }
+
+    public static int hash(byte[] bytes, int start) {
+        return hash(bytes, start, false, false, 31, Integer.MAX_VALUE);
+    }
+
+    /**
+     * This function provides the raw bytes-based hash function for UTF8 strings.
+     * Note that the hash values may not deliver the correct ordering for certain languages that include 2 or 3 bytes characters.
+     * But it works for single-byte character languages.
+     */
+    public static int rawBytehash(byte[] bytes, int start) {
+        return hash(bytes, start, false, true, 31, Integer.MAX_VALUE);
+    }
+
+    public static int lowerCaseHash(byte[] bytes, int start) {
+        return hash(bytes, start, true, false, 31, Integer.MAX_VALUE);
+    }
+
+    public static StringBuilder toString(StringBuilder builder, byte[] bytes, int start) {
+        int utfLen = getUTFLength(bytes, start);
+        int offset = getNumBytesToStoreLength(utfLen);
+        while (utfLen > 0) {
+            char c = charAt(bytes, start + offset);
+            builder.append(c);
+            int cLen = getModifiedUTF8Len(c);
+            offset += cLen;
+            utfLen -= cLen;
+        }
+        return builder;
+    }
+
+    public static void printUTF8StringWithQuotes(byte[] b, int s, int l, OutputStream os) throws IOException {
+        printUTF8String(b, s, l, os, true);
+    }
+
+    public static void printUTF8StringNoQuotes(byte[] b, int s, int l, OutputStream os) throws IOException {
+        printUTF8String(b, s, l, os, false);
+    }
+
+    public static void printUTF8StringWithQuotes(String str, OutputStream os) throws IOException {
+        printUTF8String(str, os, true);
+    }
+
+    public static void printUTF8StringNoQuotes(String str, OutputStream os) throws IOException {
+        printUTF8String(str, os, false);
+    }
+
+    public static int encodeUTF8Length(int length, byte[] bytes, int start) {
+        return VarLenIntEncoderDecoder.encode(length, bytes, start);
+    }
+
+    public static int writeUTF8Length(int length, byte[] bytes, DataOutput out) throws IOException {
+        int nbytes = encodeUTF8Length(length, bytes, 0);
+        out.write(bytes, 0, nbytes);
+        return nbytes;
+    }
+
+    private static void printUTF8String(byte[] b, int s, int l, OutputStream os, boolean useQuotes) throws IOException {
+        int stringLength = getUTFLength(b, s);
+        int position = s + getNumBytesToStoreLength(stringLength);
+        int maxPosition = position + stringLength;
+        if (useQuotes) {
+            os.write('\"');
+        }
+        while (position < maxPosition) {
+            char c = charAt(b, position);
+            switch (c) {
+                // escape
+                case '\\':
+                case '"':
+                    os.write('\\');
+                    break;
+            }
+            int sz = charSize(b, position);
+            while (sz > 0) {
+                os.write(b[position]);
+                position++;
+                sz--;
+            }
+        }
+        if (useQuotes) {
+            os.write('\"');
+        }
+    }
+
+    private static void printUTF8String(String string, OutputStream os, boolean useQuotes) throws IOException {
+        if (useQuotes) {
+            os.write('\"');
+        }
+        for (int i = 0; i < string.length(); i++) {
+            char ch = string.charAt(i);
+            writeCharAsModifiedUTF8(ch, os);
+        }
+        if (useQuotes) {
+            os.write('\"');
+        }
+    }
+
+    private static int compareTo(byte[] thisBytes, int thisStart, byte[] thatBytes, int thatStart, boolean useLowerCase,
+            boolean useRawByte) {
+        int utflen1 = getUTFLength(thisBytes, thisStart);
+        int utflen2 = getUTFLength(thatBytes, thatStart);
+
+        int c1 = 0;
+        int c2 = 0;
+
+        int s1Start = thisStart + getNumBytesToStoreLength(utflen1);
+        int s2Start = thatStart + getNumBytesToStoreLength(utflen2);
+
+        while (c1 < utflen1 && c2 < utflen2) {
+            char ch1, ch2;
+            if (useRawByte) {
+                ch1 = (char) thisBytes[s1Start + c1];
+                ch2 = (char) thatBytes[s2Start + c2];
+            } else {
+                ch1 = (charAt(thisBytes, s1Start + c1));
+                ch2 = (charAt(thatBytes, s2Start + c2));
+
+                if (useLowerCase) {
+                    ch1 = Character.toLowerCase(ch1);
+                    ch2 = Character.toLowerCase(ch2);
+                }
+            }
+
+            if (ch1 != ch2) {
+                return ch1 - ch2;
+            }
+            c1 += charSize(thisBytes, s1Start + c1);
+            c2 += charSize(thatBytes, s2Start + c2);
+        }
+        return utflen1 - utflen2;
+    }
+
+    private static int hash(byte[] bytes, int start, boolean useLowerCase, boolean useRawByte, int coefficient, int r) {
+        int h = 0;
+        int utflen = getUTFLength(bytes, start);
+        int sStart = start + getNumBytesToStoreLength(utflen);
+        int c = 0;
+
+        while (c < utflen) {
+            char ch;
+            if (useRawByte) {
+                ch = (char) bytes[sStart + c];
+            } else {
+                ch = charAt(bytes, sStart + c);
+                if (useLowerCase) {
+                    ch = Character.toLowerCase(ch);
+                }
+            }
+            h = (coefficient * h + ch) % r;
+            c += charSize(bytes, sStart + c);
+        }
+        return h;
+    }
+
+    public static byte[] writeStringToBytes(String string) {
+        UTF8StringWriter writer = new UTF8StringWriter();
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        DataOutputStream dos = new DataOutputStream(bos);
+        try {
+            writer.writeUTF8(string, dos);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        return bos.toByteArray();
+    }
+
+    /**
+     * Reads from the
+     * stream <code>in</code> a representation
+     * of a Unicode character string encoded in
+     * <a href="DataInput.html#modified-utf-8">modified UTF-8</a> format;
+     * this string of characters is then returned as a <code>String</code>.
+     * The details of the modified UTF-8 representation
+     * are exactly the same as for the <code>readUTF</code>
+     * method of <code>DataInput</code>.
+     *
+     * @param in
+     *            a data input stream.
+     * @return a Unicode string.
+     * @throws EOFException
+     *             if the input stream reaches the end
+     *             before all the bytes.
+     * @throws IOException
+     *             the stream has been closed and the contained
+     *             input stream does not support reading after close, or
+     *             another I/O error occurs.
+     * @throws UTFDataFormatException
+     *             if the bytes do not represent a
+     *             valid modified UTF-8 encoding of a Unicode string.
+     * @see java.io.DataInputStream#readUnsignedShort()
+     */
+    public static String readUTF8(DataInput in) throws IOException {
+        return readUTF8(in, null);
+    }
+
+    static String readUTF8(DataInput in, UTF8StringReader reader) throws IOException {
+        int utflen = VarLenIntEncoderDecoder.decode(in);
+        byte[] bytearr;
+        char[] chararr;
+
+        if (reader == null) {
+            bytearr = new byte[utflen * 2];
+            chararr = new char[utflen * 2];
+        } else {
+            if (reader.bytearr == null || reader.bytearr.length < utflen) {
+                reader.bytearr = new byte[utflen * 2];
+                reader.chararr = new char[utflen * 2];
+            }
+            bytearr = reader.bytearr;
+            chararr = reader.chararr;
+        }
+
+        int c, char2, char3;
+        int count = 0;
+        int chararr_count = 0;
+
+        in.readFully(bytearr, 0, utflen);
+
+        while (count < utflen) {
+            c = bytearr[count] & 0xff;
+            if (c > 127)
+                break;
+            count++;
+            chararr[chararr_count++] = (char) c;
+        }
+
+        while (count < utflen) {
+            c = bytearr[count] & 0xff;
+            switch (c >> 4) {
+                case 0:
+                case 1:
+                case 2:
+                case 3:
+                case 4:
+                case 5:
+                case 6:
+                case 7:
+                    /* 0xxxxxxx*/
+                    count++;
+                    chararr[chararr_count++] = (char) c;
+                    break;
+                case 12:
+                case 13:
+                    /* 110x xxxx   10xx xxxx*/
+                    count += 2;
+                    if (count > utflen)
+                        throw new UTFDataFormatException("malformed input: partial character at end");
+                    char2 = bytearr[count - 1];
+                    if ((char2 & 0xC0) != 0x80)
+                        throw new UTFDataFormatException("malformed input around byte " + count);
+                    chararr[chararr_count++] = (char) (((c & 0x1F) << 6) | (char2 & 0x3F));
+                    break;
+                case 14:
+                    /* 1110 xxxx  10xx xxxx  10xx xxxx */
+                    count += 3;
+                    if (count > utflen)
+                        throw new UTFDataFormatException("malformed input: partial character at end");
+                    char2 = bytearr[count - 2];
+                    char3 = bytearr[count - 1];
+                    if (((char2 & 0xC0) != 0x80) || ((char3 & 0xC0) != 0x80))
+                        throw new UTFDataFormatException("malformed input around byte " + (count - 1));
+                    chararr[chararr_count++] = (char) (((c & 0x0F) << 12) | ((char2 & 0x3F) << 6)
+                            | ((char3 & 0x3F) << 0));
+                    break;
+                default:
+                    /* 10xx xxxx,  1111 xxxx */
+                    throw new UTFDataFormatException("malformed input around byte " + count);
+            }
+        }
+        // The number of chars produced may be less than utflen
+        return new String(chararr, 0, chararr_count);
+    }
+
+    /**
+     * Write a UTF8 String <code>str</code> into the DataOutput <code>out</code>
+     *
+     * @param str,
+     *            a Unicode string;
+     * @param out,
+     *            a Data output stream.
+     * @throws IOException
+     */
+    public static void writeUTF8(CharSequence str, DataOutput out) throws IOException {
+        writeUTF8(str, out, null);
+    }
+
+    static void writeUTF8(CharSequence str, DataOutput out, UTF8StringWriter writer) throws IOException {
+        int strlen = str.length();
+        int utflen = 0;
+        char c;
+        int count = 0;
+
+        for (int i = 0; i < strlen; i++) {
+            c = str.charAt(i);
+            utflen += UTF8StringUtil.getModifiedUTF8Len(c);
+        }
+
+        byte[] tempBytes = getTempBytes(writer, utflen);
+        count += VarLenIntEncoderDecoder.encode(utflen, tempBytes, count);
+        int i = 0;
+        for (; i < strlen; i++) {
+            c = str.charAt(i);
+            if (!((c >= 0x0001) && (c <= 0x007F))) {
+                break;
+            }
+            tempBytes[count++] = (byte) c;
+        }
+
+        for (; i < strlen; i++) {
+            c = str.charAt(i);
+            count += writeToBytes(tempBytes, count, c);
+        }
+        out.write(tempBytes, 0, count);
+    }
+
+    static void writeUTF8(char[] buffer, int start, int length, DataOutput out, UTF8StringWriter writer)
+            throws IOException {
+        int utflen = 0;
+        int count = 0;
+        char c;
+
+        for (int i = 0; i < length; i++) {
+            c = buffer[i + start];
+            utflen += UTF8StringUtil.getModifiedUTF8Len(c);
+        }
+
+        byte[] tempBytes = getTempBytes(writer, utflen);
+        count += VarLenIntEncoderDecoder.encode(utflen, tempBytes, count);
+
+        int i = 0;
+        for (; i < length; i++) {
+            c = buffer[i + start];
+            if (!((c >= 0x0001) && (c <= 0x007F))) {
+                break;
+            }
+            tempBytes[count++] = (byte) c;
+        }
+
+        for (; i < length; i++) {
+            c = buffer[i + start];
+            count += writeToBytes(tempBytes, count, c);
+        }
+        out.write(tempBytes, 0, count);
+    }
+
+    private static int writeToBytes(byte[] tempBytes, int count, char c) {
+        int orig = count;
+        if ((c >= 0x0001) && (c <= 0x007F)) {
+            tempBytes[count++] = (byte) c;
+        } else if (c > 0x07FF) {
+            tempBytes[count++] = (byte) (0xE0 | ((c >> 12) & 0x0F));
+            tempBytes[count++] = (byte) (0x80 | ((c >> 6) & 0x3F));
+            tempBytes[count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
+        } else {
+            tempBytes[count++] = (byte) (0xC0 | ((c >> 6) & 0x1F));
+            tempBytes[count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
+        }
+        return count - orig;
+    }
+
+    private static byte[] getTempBytes(UTF8StringWriter writer, int utflen) {
+        byte[] tempBytes;
+        if (writer == null) {
+            tempBytes = new byte[utflen + 5];
+        } else {
+            if (writer.tempBytes == null || writer.tempBytes.length < utflen + 5) {
+                writer.tempBytes = new byte[utflen + 5];
+            }
+            tempBytes = writer.tempBytes;
+        }
+        return tempBytes;
+    }
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringWriter.java
similarity index 63%
copy from hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java
copy to hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringWriter.java
index 1dfccfd..485bd7d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/sort/RunAndMaxFrameSizePair.java
+++ b/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/string/UTF8StringWriter.java
@@ -16,21 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.hyracks.util.string;
 
-package org.apache.hyracks.dataflow.std.sort;
+import java.io.DataOutput;
+import java.io.IOException;
 
-import org.apache.hyracks.api.comm.IFrameReader;
+public class UTF8StringWriter {
+    byte[] tempBytes;
 
-public class RunAndMaxFrameSizePair {
-    public IFrameReader run;
-    public int maxFrameSize;
-
-    public RunAndMaxFrameSizePair(IFrameReader run, int maxFrameSize) {
-        this.run = run;
-        this.maxFrameSize = maxFrameSize;
+    public final void writeUTF8(CharSequence str, DataOutput out) throws IOException {
+        UTF8StringUtil.writeUTF8(str, out, this);
     }
 
-    void updateSize(int newMaxSize){
-        this.maxFrameSize = newMaxSize;
+    public final void writeUTF8(char[] buffer, int start, int length, DataOutput out) throws IOException {
+        UTF8StringUtil.writeUTF8(buffer, start, length, out, this);
     }
+
 }
diff --git a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/util/MathTest.java b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/MathTest.java
similarity index 96%
rename from hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/util/MathTest.java
rename to hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/MathTest.java
index bbdcf94..c3443c8 100644
--- a/hyracks/hyracks-dataflow-std/src/test/java/org/apache/hyracks/dataflow/std/util/MathTest.java
+++ b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/MathTest.java
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-package org.apache.hyracks.dataflow.std.util;
-
-import static org.junit.Assert.assertTrue;
+package org.apache.hyracks.util;
 
 import java.util.Random;
 
 import org.junit.Test;
 
+import static org.junit.Assert.assertTrue;
+
 public class MathTest {
 
     @Test
@@ -41,4 +41,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/encoding/VarLenIntEncoderDecoderTest.java b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/encoding/VarLenIntEncoderDecoderTest.java
new file mode 100644
index 0000000..1b272a9
--- /dev/null
+++ b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/encoding/VarLenIntEncoderDecoderTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.hyracks.util.encoding;
+
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_FIVE_BYTE;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_FOUR_BYTE;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_ONE_BYTE;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_THREE_BYTE;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_TWO_BYTE;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.VarLenIntDecoder;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.createDecoder;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.decode;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.encode;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.getBytesRequired;
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class VarLenIntEncoderDecoderTest {
+
+    int[] bounds = new int[] { 0, BOUND_ONE_BYTE, BOUND_TWO_BYTE, BOUND_THREE_BYTE, BOUND_FOUR_BYTE, BOUND_FIVE_BYTE };
+
+    @Test
+    public void testGetBytesRequired() throws Exception {
+        for (int bound = 0; bound < bounds.length - 1; bound++) {
+            assertEquals(bound + 1, getBytesRequired(bounds[bound]));
+            assertEquals(bound + 1, getBytesRequired(bounds[bound + 1] - 1));
+        }
+    }
+
+    @Test
+    public void testEncodeDecode() throws Exception {
+        byte[] bytes = new byte[10];
+        int startPos = 3;
+        for (int i = 1; i < bounds.length - 1; i++) {
+            testEncodeDecode(i, bounds[i] - 1, bytes, startPos);
+            testEncodeDecode(i + 1, bounds[i], bytes, startPos);
+            testEncodeDecode(i + 1, bounds[i] + 1, bytes, startPos);
+        }
+        // Integer.Max
+        testEncodeDecode(5, BOUND_FIVE_BYTE, bytes, startPos);
+    }
+
+    @Test
+    public void testCreateDecoder() throws Exception {
+        VarLenIntDecoder decoder = createDecoder();
+        byte[] bytes = new byte[100];
+        int pos = 1;
+        for (int b : bounds) {
+            pos += encode(b, bytes, pos);
+        }
+        decoder.reset(bytes, 1);
+        for (int b : bounds) {
+            assertEquals(b, decoder.decode());
+        }
+    }
+
+    protected void testEncodeDecode(int expectedBytes, int value, byte[] bytes, int startPos) throws IOException {
+        assertEquals(expectedBytes, encode(value, bytes, startPos));
+        assertEquals(value, decode(bytes, startPos));
+
+        ByteArrayInputStream bis = new ByteArrayInputStream(bytes, startPos, bytes.length - startPos);
+        DataInputStream dis = new DataInputStream(bis);
+        assertEquals(value, decode(dis));
+    }
+}
diff --git a/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringReaderWriterTest.java b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringReaderWriterTest.java
new file mode 100644
index 0000000..9010c9c
--- /dev/null
+++ b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringReaderWriterTest.java
@@ -0,0 +1,90 @@
+/*
+ * 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.hyracks.util.string;
+
+import static org.apache.hyracks.util.string.UTF8StringSample.EMPTY_STRING;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_127;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_128;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_3;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_LARGE;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_LARGE_SUB_1;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_MEDIUM;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_MEDIUM_SUB_1;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_UTF8_3;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_UTF8_MIX;
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class UTF8StringReaderWriterTest {
+
+    UTF8StringWriter writer = new UTF8StringWriter();
+    UTF8StringReader reader = new UTF8StringReader();
+
+    @Test
+    public void testWriterReader() throws IOException {
+        writeAndReadOneString(EMPTY_STRING);
+        writeAndReadOneString(STRING_LEN_3);
+
+        writeAndReadOneString(STRING_LEN_127);
+        writeAndReadOneString(STRING_LEN_128);
+        writeAndReadOneString(STRING_LEN_MEDIUM_SUB_1);
+    }
+
+    @Test
+    public void testMedium() throws IOException {
+        writeAndReadOneString(STRING_LEN_MEDIUM);
+        writeAndReadOneString(STRING_LEN_LARGE_SUB_1);
+    }
+
+    @Test
+    public void testLarge() throws IOException {
+        writeAndReadOneString(STRING_LEN_LARGE);
+    }
+
+    @Test
+    public void testUTF8() throws IOException {
+        writeAndReadOneString(STRING_UTF8_3);
+        writeAndReadOneString(STRING_UTF8_MIX);
+    }
+
+    private void writeAndReadOneString(String testString) throws IOException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        DataOutputStream dos = new DataOutputStream(bos);
+        writer.writeUTF8(testString, dos);
+
+        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray(), 0, bos.size());
+        assertEquals(testString, reader.readUTF(new DataInputStream(bis)));
+
+        int lastOffset = bos.size();
+        char[] charArray = testString.toCharArray();
+        writer.writeUTF8(charArray, 0, charArray.length, dos);
+
+        bis = new ByteArrayInputStream(bos.toByteArray(), lastOffset, bos.size());
+        assertEquals(testString, reader.readUTF(new DataInputStream(bis)));
+    }
+
+}
diff --git a/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java
new file mode 100644
index 0000000..3e6e984
--- /dev/null
+++ b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringSample.java
@@ -0,0 +1,56 @@
+/*
+ * 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.hyracks.util.string;
+
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_THREE_BYTE;
+import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.BOUND_TWO_BYTE;
+
+import java.util.Arrays;
+
+/**
+ * Util class to provide the sample test string
+ */
+public class UTF8StringSample {
+    public static String EMPTY_STRING = "";
+
+    public static char ONE_ASCII_CHAR = 'x';
+    public static char ONE_UTF8_CHAR = 'à';
+
+    public static String STRING_LEN_3 = "xyz";
+    public static String STRING_UTF8_3 = "锟斤拷";
+    public static String STRING_UTF8_MIX = "\uD841\uDF0E\uD841\uDF31锟X斤Y拷Zà"; // one, two, three, and four bytes
+    public static String STRING_UTF8_MIX_LOWERCASE = "\uD841\uDF0E\uD841\uDF31锟x斤y拷zà";
+
+    public static String STRING_LEN_127 = generateStringRepeatBy(ONE_ASCII_CHAR, 127);
+    public static String STRING_LEN_128 = generateStringRepeatBy(ONE_ASCII_CHAR, 128);
+
+    public static String STRING_LEN_MEDIUM_SUB_1 = generateStringRepeatBy(ONE_ASCII_CHAR, BOUND_TWO_BYTE - 1);
+    public static String STRING_LEN_MEDIUM = generateStringRepeatBy(ONE_ASCII_CHAR, BOUND_TWO_BYTE);
+
+    public static String STRING_LEN_LARGE_SUB_1 = generateStringRepeatBy(ONE_ASCII_CHAR, BOUND_THREE_BYTE - 1);
+    public static String STRING_LEN_LARGE = generateStringRepeatBy(ONE_ASCII_CHAR, BOUND_THREE_BYTE);
+
+    public static String generateStringRepeatBy(char c, int times) {
+        char[] chars = new char[times];
+        Arrays.fill(chars, c);
+        return new String(chars);
+    }
+
+}
diff --git a/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java
new file mode 100644
index 0000000..f101ab1
--- /dev/null
+++ b/hyracks/hyracks-util/src/test/java/org/apache/hyracks/util/string/UTF8StringUtilTest.java
@@ -0,0 +1,144 @@
+/*
+ * 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.hyracks.util.string;
+
+import static org.apache.hyracks.util.string.UTF8StringUtil.writeStringToBytes;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_127;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_128;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_LEN_MEDIUM;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_UTF8_3;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_UTF8_MIX;
+import static org.apache.hyracks.util.string.UTF8StringSample.STRING_UTF8_MIX_LOWERCASE;
+import static org.apache.hyracks.util.string.UTF8StringUtil.charAt;
+import static org.apache.hyracks.util.string.UTF8StringUtil.charSize;
+import static org.apache.hyracks.util.string.UTF8StringUtil.compareTo;
+import static org.apache.hyracks.util.string.UTF8StringUtil.getModifiedUTF8Len;
+import static org.apache.hyracks.util.string.UTF8StringUtil.getNumBytesToStoreLength;
+import static org.apache.hyracks.util.string.UTF8StringUtil.getStringLength;
+import static org.apache.hyracks.util.string.UTF8StringUtil.getUTFLength;
+import static org.apache.hyracks.util.string.UTF8StringUtil.lowerCaseCompareTo;
+import static org.apache.hyracks.util.string.UTF8StringUtil.lowerCaseHash;
+import static org.apache.hyracks.util.string.UTF8StringUtil.normalize;
+import static org.apache.hyracks.util.string.UTF8StringUtil.rawByteCompareTo;
+import static org.apache.hyracks.util.string.UTF8StringUtil.hash;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class UTF8StringUtilTest {
+
+    @Test
+    public void testCharAtCharSizeGetLen() throws Exception {
+        char[] utf8Mix = STRING_UTF8_MIX.toCharArray();
+        byte[] buffer = writeStringToBytes(STRING_UTF8_MIX);
+        int pos = getNumBytesToStoreLength(getUTFLength(buffer, 0));
+        for (char c : utf8Mix) {
+            assertEquals(c, charAt(buffer, pos));
+            assertEquals(getModifiedUTF8Len(c), charSize(buffer, pos));
+            pos += charSize(buffer, pos);
+        }
+    }
+
+    @Test
+    public void testGetStringLength() throws Exception {
+        byte[] buffer = writeStringToBytes(STRING_UTF8_MIX);
+        assertEquals(STRING_UTF8_MIX.length(), getStringLength(buffer, 0));
+    }
+
+    @Test
+    public void testCompareToAndNormolize() throws Exception {
+        testCompare(STRING_UTF8_MIX, STRING_UTF8_MIX, OPTION.STANDARD);
+        testCompare(STRING_UTF8_3, STRING_UTF8_MIX, OPTION.STANDARD);
+        testCompare(STRING_LEN_MEDIUM, STRING_UTF8_MIX, OPTION.STANDARD);
+    }
+
+    public boolean isSameSign(int r1, int r2) {
+        if (r1 > 0) {
+            return r2 > 0;
+        }
+        if (r1 < 0) {
+            return r2 < 0;
+        }
+        return r2 == 0;
+    }
+
+    enum OPTION {STANDARD, RAW_BYTE, LOWERCASE}
+
+    public void testCompare(String str1, String str2, OPTION option) throws IOException {
+        byte[] buffer1 = writeStringToBytes(str1);
+        byte[] buffer2 = writeStringToBytes(str2);
+
+        switch (option) {
+            case STANDARD:
+                assertEquals(str1.compareTo(str2), compareTo(buffer1, 0, buffer2, 0));
+                int n1 = normalize(buffer1, 0);
+                int n2 = normalize(buffer2, 0);
+                assertTrue(isSameSign(str1.compareTo(str2), n1 - n2));
+                break;
+            case RAW_BYTE:
+                assertEquals(str1.compareTo(str2), rawByteCompareTo(buffer1, 0, buffer2, 0));
+                break;
+            case LOWERCASE:
+                assertEquals(str1.compareToIgnoreCase(str2), lowerCaseCompareTo(buffer1, 0, buffer2, 0));
+                break;
+        }
+
+    }
+
+    @Test
+    public void testRawByteCompareTo() throws Exception {
+        testCompare(STRING_LEN_MEDIUM, STRING_LEN_MEDIUM, OPTION.RAW_BYTE);
+        testCompare(STRING_LEN_127, STRING_LEN_128, OPTION.RAW_BYTE);
+    }
+
+    @Test
+    public void testLowerCaseCompareTo() throws Exception {
+        testCompare(STRING_LEN_127, STRING_LEN_128, OPTION.LOWERCASE);
+        testCompare(STRING_LEN_127, STRING_UTF8_MIX, OPTION.LOWERCASE);
+        testCompare(STRING_UTF8_MIX, STRING_UTF8_MIX_LOWERCASE, OPTION.LOWERCASE);
+        testCompare(STRING_UTF8_MIX_LOWERCASE, STRING_UTF8_MIX, OPTION.LOWERCASE);
+    }
+
+    @Test
+    public void testToString() throws Exception {
+
+        StringBuilder sb = new StringBuilder();
+        byte[] buffer = writeStringToBytes(STRING_UTF8_MIX);
+        assertEquals(STRING_UTF8_MIX, UTF8StringUtil.toString(sb, buffer, 0).toString());
+    }
+
+    @Test
+    public void testHash() throws IOException {
+        byte[] buffer = writeStringToBytes(STRING_UTF8_MIX_LOWERCASE);
+        int lowerHash = hash(buffer, 0);
+
+        buffer = writeStringToBytes(STRING_UTF8_MIX_LOWERCASE);
+        int upperHash = lowerCaseHash(buffer, 0);
+        assertEquals(lowerHash, upperHash);
+
+        int familyOne = hash(buffer, 0, 7, 297);
+        int familyTwo = hash(buffer, 0, 8, 297);
+        assertTrue(familyOne != familyTwo);
+    }
+
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
index 6527896..db6597c 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/pom.xml
@@ -33,15 +33,6 @@
   <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>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>appassembler-maven-plugin</artifactId>
         <executions>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/HyracksYarnApplicationMaster.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/HyracksYarnApplicationMaster.java
index f2d8cc8..86f1539 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/HyracksYarnApplicationMaster.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/HyracksYarnApplicationMaster.java
@@ -252,4 +252,4 @@
         AbstractProcess proc;
         Container allocation;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/AbstractProcess.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/AbstractProcess.java
index 34ba866..5c877ad 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/AbstractProcess.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/AbstractProcess.java
@@ -38,4 +38,4 @@
     public String getCommandLineArguments() {
         return cmdLineArgs;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java
index 61c6ace..666b05e 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java
@@ -18,5 +18,5 @@
  */
 package org.apache.hyracks.yarn.am.manifest;
 
-public class ClusterController extends AbstractProcess {    
-}
\ No newline at end of file
+public class ClusterController extends AbstractProcess {
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ContainerSpecification.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ContainerSpecification.java
index dc92b39..919a8bf 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ContainerSpecification.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ContainerSpecification.java
@@ -42,4 +42,4 @@
     public int getMemory() {
         return memory;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/HyracksCluster.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/HyracksCluster.java
index eef8e70..5536e0f 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/HyracksCluster.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/HyracksCluster.java
@@ -55,4 +55,4 @@
     public List<NodeController> getNodeControllers() {
         return ncs;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ManifestParser.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ManifestParser.java
index 1b9a798..fd85353 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ManifestParser.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ManifestParser.java
@@ -48,4 +48,4 @@
         d.addSetNext("*/container-specification", "setContainerSpecification");
         return d;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/NodeController.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/NodeController.java
index 4e7b220..2356bb0 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/NodeController.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/NodeController.java
@@ -28,4 +28,4 @@
     public String getId() {
         return id;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
index db8af6f..afa9b83 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-client/pom.xml
@@ -33,15 +33,6 @@
   <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>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>appassembler-maven-plugin</artifactId>
         <executions>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/KillHyracksApplication.java b/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/KillHyracksApplication.java
index 13c21346..8f3b68d 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/KillHyracksApplication.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/KillHyracksApplication.java
@@ -55,4 +55,4 @@
         @Option(name = "-application-id", required = true, usage = "Application Id")
         String appId;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/LaunchHyracksApplication.java b/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/LaunchHyracksApplication.java
index 4255bb7..e5d727f 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/LaunchHyracksApplication.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-client/src/main/java/org/apache/hyracks/yarn/client/LaunchHyracksApplication.java
@@ -102,4 +102,4 @@
         @Option(name = "-extra-jars", required = false, usage = "Other jars that need to be added to the classpath")
         String extraJars = "";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml b/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
index 0b6b2a6..e0081cc 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/pom.xml
@@ -30,19 +30,6 @@
       <root.dir>${basedir}/../../..</root.dir>
   </properties>
 
-  <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>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
   <dependency>
   	<groupId>org.apache.hadoop</groupId>
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/amrm/AMRMConnection.java b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/amrm/AMRMConnection.java
index cd4f466..931f39d 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/amrm/AMRMConnection.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/amrm/AMRMConnection.java
@@ -60,4 +60,4 @@
     public AMRMProtocol getAMRMProtocol() {
         return amrmp;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnApplication.java b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnApplication.java
index 556046a..8ea8f21 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnApplication.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnApplication.java
@@ -59,4 +59,4 @@
 
         return response.getApplicationId();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnClientRMConnection.java b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnClientRMConnection.java
index 49cc113..8ed9a98 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnClientRMConnection.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/protocols/clientrm/YarnClientRMConnection.java
@@ -66,4 +66,4 @@
         killRequest.setApplicationId(aid);
         crmp.forceKillApplication(killRequest);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/LocalResourceHelper.java b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/LocalResourceHelper.java
index e7ab89e..c185ef2 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/LocalResourceHelper.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/LocalResourceHelper.java
@@ -53,4 +53,4 @@
         lr.setType(LocalResourceType.ARCHIVE);
         return lr;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/ResourceHelper.java b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/ResourceHelper.java
index 140ba16..a878dc2 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/ResourceHelper.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-common/src/main/java/org/apache/hyracks/yarn/common/resources/ResourceHelper.java
@@ -27,4 +27,4 @@
         capability.setMemory(memory);
         return capability;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/pom.xml b/hyracks/pom.xml
index dad4dc2..563b7bb 100644
--- a/hyracks/pom.xml
+++ b/hyracks/pom.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <!--
  ! Licensed to the Apache Software Foundation (ASF) under one
  ! or more contributor license agreements.  See the NOTICE file
@@ -48,6 +47,35 @@
         </configuration>
       </plugin>
     </plugins>
+    <pluginManagement>
+        <plugins>
+            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+            <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-plugin-plugin</artifactId>
+                                    <versionRange>[3.4,)</versionRange>
+                                    <goals>
+                                        <goal>descriptor</goal>
+                                    </goals>
+                                </pluginExecutionFilter>
+                                <action>
+                                    <ignore></ignore>
+                                </action>
+                            </pluginExecution>
+                        </pluginExecutions>
+                    </lifecycleMappingMetadata>
+                </configuration>
+            </plugin>
+        </plugins>
+    </pluginManagement>
   </build>
 
   <properties>
@@ -80,13 +108,13 @@
   </pluginRepositories>
 
   <modules>
+    <module>hyracks-util</module>
     <module>hyracks-ipc</module>
     <module>hyracks-api</module>
     <module>hyracks-comm</module>
     <module>hyracks-client</module>
     <module>hyracks-dataflow-common</module>
     <module>hyracks-dataflow-std</module>
-    <module>hyracks-dataflow-hadoop</module>
     <module>hyracks-control</module>
     <module>hyracks-net</module>
     <module>hyracks-data</module>
@@ -108,6 +136,5 @@
     <module>hyracks-maven-plugins</module>
     <module>hyracks-hdfs</module>
     <module>hyracks-dist</module>
-    <!--module>hyracks-yarn</module -->
   </modules>
 </project>
diff --git a/pom.xml b/pom.xml
index 8a03ceb..4443b51 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,79 +26,80 @@
   <packaging>pom</packaging>
   <name>hyracks-ecosystem-full-stack</name>
 
-  <parent>
-    <groupId>org.apache</groupId>
-    <artifactId>apache</artifactId>
-    <version>LATEST</version>
-  </parent>
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>LATEST</version>
+    </parent>
 
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-      <comments>A business-friendly OSS license</comments>
-    </license>
-  </licenses>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+            <comments>A business-friendly OSS license</comments>
+        </license>
+    </licenses>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <root.dir>${basedir}</root.dir>
-    <jvm.extraargs />
-    <!-- Definition of tests in various categories which may be excluded -->
-    <hanging.pregelix.tests>**/pregelix/**/FailureRecovery*.java</hanging.pregelix.tests>
-    <hivesterix.perf.tests>**/hivesterix/perf/PerfTestSuite.java</hivesterix.perf.tests>
-    <global.test.includes>**/*TestSuite.java,**/*Test.java</global.test.includes>
-    <global.test.excludes>**/Abstract*.java,${hanging.pregelix.tests},${hivesterix.perf.tests}</global.test.excludes>
-    <!-- Versions under dependencymanagement or used in many projects via properties -->
-    <hadoop.version>2.2.0</hadoop.version>
-    <junit.version>4.8.1</junit.version>
-    <commons.io.version>2.4</commons.io.version>
-  </properties>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>${junit.version}</version>
-      </dependency>
-          <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-yarn-client</artifactId>
-            <version>${hadoop.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-client</artifactId>
-            <version>${hadoop.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-common</artifactId>
-            <version>${hadoop.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-hdfs</artifactId>
-            <version>${hadoop.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-minicluster</artifactId>
-            <version>${hadoop.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-mapreduce-client-core</artifactId>
-            <version>${hadoop.version}</version>
-          </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${commons.io.version}</version>
-        </dependency>
-    </dependencies>
-  </dependencyManagement>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <jdk.version>1.8</jdk.version>
+        <jvm.extraargs/>
+        <!-- Definition of tests in various categories which may be excluded -->
+        <hanging.pregelix.tests>**/pregelix/**/FailureRecovery*.java</hanging.pregelix.tests>
+        <hivesterix.perf.tests>**/hivesterix/perf/PerfTestSuite.java</hivesterix.perf.tests>
+        <global.test.includes>**/*TestSuite.java,**/*Test.java</global.test.includes>
+        <global.test.excludes>**/Abstract*.java,${hanging.pregelix.tests},${hivesterix.perf.tests}
+        </global.test.excludes>
+        <!-- Versions under dependencymanagement or used in many projects via properties -->
+        <hadoop.version>2.2.0</hadoop.version>
+        <junit.version>4.8.1</junit.version>
+        <commons.io.version>2.4</commons.io.version>
+    </properties>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>${junit.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hadoop</groupId>
+                <artifactId>hadoop-yarn-client</artifactId>
+                <version>${hadoop.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hadoop</groupId>
+                <artifactId>hadoop-client</artifactId>
+                <version>${hadoop.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hadoop</groupId>
+                <artifactId>hadoop-common</artifactId>
+                <version>${hadoop.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hadoop</groupId>
+                <artifactId>hadoop-hdfs</artifactId>
+                <version>${hadoop.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hadoop</groupId>
+                <artifactId>hadoop-minicluster</artifactId>
+                <version>${hadoop.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hadoop</groupId>
+                <artifactId>hadoop-mapreduce-client-core</artifactId>
+                <version>${hadoop.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons.io.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
 
   <build>
     <plugins>
@@ -144,6 +145,38 @@
           </licenseFamilies>
           <excludeSubProjects>false</excludeSubProjects>
           <excludes>
+           <exclude>**/algebricks-tests/src/test/resources/results/**</exclude>
+           <exclude>**/javascript/flot/*.js</exclude>
+           <exclude>**/javascript/jsplumb/*.js</exclude>
+           <exclude>**/javascript/jquery/*.js</exclude>
+           <exclude>**/javascript/adminconsole/*.js</exclude>
+           <exclude>**/stylesheet/jquery-ui/**</exclude>
+           <exclude>**/hyracks-dist/src/main/resources/conf/**</exclude>
+           <exclude>**/src/test/resources/data/**</exclude>
+           <exclude>**/src/test/resources/results/**</exclude>
+           <exclude>**/src/test/resources/expected/**</exclude>
+           <exclude>**/testcases/*.piglet</exclude>
+           <exclude>**/data/**/*.tbl</exclude>
+           <exclude>**/data/**/*.ddl</exclude>
+           <exclude>**/data/**/*.tsv</exclude>
+           <exclude>**/actual/conf.xml</exclude>
+           <exclude>**/actual/customer_result/part-*</exclude>
+           <exclude>**/src/main/resources/conf/*</exclude>
+           <exclude>**/data/dfs/**</exclude>
+           <exclude>**/invIndex*/**</exclude>
+           <exclude>**/*.job</exclude>
+           <exclude>**/*.conf</exclude>
+           <exclude>**/src/main/resources/*.cleaned</exclude>
+           <exclude>**/ClusterControllerService/**</exclude>
+           <exclude>**/target/**</exclude>
+           <exclude>**/output/**</exclude>
+           <exclude>**/target/**</exclude>
+           <exclude>**/*.iml</exclude>
+           <exclude>**/*.prefs</exclude>
+           <exclude>**/data/*.txt</exclude>
+           <exclude>**/data/**/*.txt</exclude>
+           <exclude>**/.classpath</exclude>
+           <exclude>**/.project</exclude>
            <exclude>**/target/**</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/.classpath</exclude>
@@ -196,24 +229,24 @@
           <excludes>
             <exclude>${global.test.excludes},${test.excludes}</exclude>
           </excludes>
-	</configuration>
-      </plugin>
-      <plugin>
+   </configuration>
+   </plugin>
+   <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-<!-- We override the configuration plugin to override the descriptor to use for building
-  the source release zip. Specifically, we would like to control the inclusions/exclusions.
-  For example, we exclude the KEYS file from the zip -->
+          <!-- We override the configuration plugin to override the descriptor to use for building
+            the source release zip. Specifically, we would like to control the inclusions/exclusions.
+            For example, we exclude the KEYS file from the zip -->
           <executions>
               <execution>
-    <!-- Use this id to match the id mentioned in the assembly plugin configuration in
-      the apache parent POM under the apache-release profile -->
+                  <!-- Use this id to match the id mentioned in the assembly plugin configuration in
+                    the apache parent POM under the apache-release profile -->
                   <id>source-release-assembly</id>
                   <phase>package</phase>
                   <goals>
                       <goal>single</goal>
                   </goals>
-    <!-- combine.self should be override to replace the configuration in the parent POM -->
+                  <!-- combine.self should be override to replace the configuration in the parent POM -->
                   <configuration combine.self="override">
                       <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                       <descriptors>
@@ -224,6 +257,16 @@
           </executions>
       </plugin>
       <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>3.1</version>
+            <configuration>
+               <source>${jdk.version}</source>
+               <target>${jdk.version}</target>
+               <compilerArgument>-Xlint:all</compilerArgument>
+            </configuration>
+      </plugin>
+      <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <version>2.7</version>
         <executions>
@@ -262,10 +305,6 @@
               </execution>
           </executions>
       </plugin>
-      <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-      </plugin>
     </plugins>
   </build>
 
@@ -284,6 +323,47 @@
         <hanging.pregelix.tests />
       </properties>
     </profile>
+    <profile>
+      <id>asterix-release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-assembly-plugin</artifactId>
+            <!-- We override the configuration plugin to override the descriptor to use for building
+            the source release zip. Specifically, we would like to control the inclusions/exclusions.
+            For example, we exclude the KEYS file from the zip -->
+            <executions>
+              <execution>
+                <!-- Use this id to match the id mentioned in the assembly plugin configuration in
+                the apache parent POM under the apache-release profile -->
+                <id>source-release-assembly</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>single</goal>
+                </goals>
+                <!-- combine.self should be override to replace the configuration in the parent POM -->
+                <configuration combine.self="override">
+                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
+                  <descriptors>
+                    <descriptor>src/main/assembly/source.xml</descriptor>
+                  </descriptors>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+        <id>java8</id>
+        <activation>
+            <jdk>1.8</jdk>
+        </activation>
+         <properties>
+            <jdk.version>1.8</jdk.version>
+         </properties>
+    </profile>
   </profiles>
 
   <repositories>
