     return gdf_columns;
   }
 
+  /* --------------------------------------------------------------------------*/
+  /** 
+   * @Synopsis  Initializes two sets of columns, left and right, with random values for the join operation.
+   * 
+   * @Param left_column_length The length of the left set of columns
+   * @Param left_column_range The upper bound of random values for the left columns. Values are [0, left_column_range)
+   * @Param right_column_length The length of the right set of columns
+   * @Param right_column_range The upper bound of random values for the right columns. Values are [0, right_column_range)
+   * @Param print Optionally print the left and right set of columns for debug
+   */
+  /* ----------------------------------------------------------------------------*/
   void create_input( size_t left_column_length, size_t left_column_range,
                      size_t right_column_length, size_t right_column_range,
                      bool print = false)

  {
  }

  // Creates a gdf_column from a std::vector
  template <typename col_type>
  gdf_col_pointer create_gdf_column(std::vector<col_type> const & host_vector)
  {

    }
  }

  
  /* --------------------------------------------------------------------------*/
  /** 
   * @Synopsis  Computes a reference solution for joining the left and right sets of columns
   * 
   * @Param print Option to print the solution for debug
   * @Param sort Option to sort the solution. This is necessary for comparison against the gdf solution
   * 
   * @Returns A vector of 'result_type' where result_type is a structure with a left_index, right_index
   * where left_columns[left_index] == right_columns[right_index]
   */
  /* ----------------------------------------------------------------------------*/
  std::vector<result_type> compute_reference_solution(bool print = false, bool sort = true)
  {

