                           thrust::raw_pointer_cast(d_aggregation_column.data()));
   }
 
-  void compute_reference_solution(bool print = false)
-  {
+  std::map<key_type, value_type> compute_reference_solution(bool print = false)
+  {
+
+    std::map<key_type, value_type> expected_values;
+
     for(size_t i = 0; i < groupby_column.size(); ++i){
 
       key_type current_key = groupby_column[i];

  const int num_keys = 1<<12;
  const int num_values_per_key = 1;
  auto input = this->create_input(num_keys, num_values_per_key, 1000, 1000);
  this->compute_reference_solution();

  const unsigned int result_size = this->groupby(input.first, input.second);
  this->verify_groupby_result(result_size);

  // The size of the result should be equal to the number of unique keys
  auto begin = this->d_groupby_column.begin();


  }

  void verify_aggregation_table(std::map<key_type, value_type> const & expected_values){

    for(auto const &expected : expected_values)
    {
      key_type test_key = expected.first;

