   avg_column->size = output_size;
 }
 
+/* --------------------------------------------------------------------------*/
+/** 
+ * @Synopsis Computes the SUM and COUNT aggregations for the group by inputs. Calls 
+ * another function to compute the AVG aggregator based on the SUM and COUNT results.
+ * 
+ * @Param ncols The number of input groupby columns
+ * @Param in_groupby_columns[] The groupby input columns
+ * @Param in_aggregation_column The aggregation input column
+ * @Param out_groupby_columns[] The output groupby columns
+ * @Param out_aggregation_column The output aggregation column
+ * @tparam sum_type The type used for the SUM aggregation output column
+ * 
+ * @Returns gdf_error with error code on failure, otherwise GDF_SUCCESS
+ */
+/* ----------------------------------------------------------------------------*/
 template <typename sum_type>
 gdf_error multi_pass_avg(int ncols,               
                          gdf_column* in_groupby_columns[],        

#include "hash/groupby_compute_api.h"
#include "hash/aggregation_operations.cuh"

template <typename groupby_type, typename aggregation_type, template <typename T> class op>
gdf_error dispatched_groupby(int ncols,               
                             gdf_column* in_groupby_columns[],        

template <template <typename> class T>
struct is_same_functor<T,T> : std::true_type{};

/* --------------------------------------------------------------------------*/
/** 
 * @Synopsis  Helper function for gdf_groupby_hash. Deduces the type of the aggregation
 * column and calls another function to perform the group by.
 * 
 */
/* ----------------------------------------------------------------------------*/
template <typename groupby_type, template <typename T> class op>
gdf_error dispatch_aggregation_type(int ncols,               
                                    gdf_column* in_groupby_columns[],        
