 			std::cout << std::endl;
 		}
 	}
+*/
 
 	{
 		ecuda::array<Coordinate,60> deviceArray;
-		fetchAll<<<1,1>>>( deviceCube, deviceArray );
-		CUDA_CHECK_ERRORS();
-		CUDA_CALL( cudaDeviceSynchronize() );
+//		fetchAll<<<1,1>>>( deviceCube, deviceArray );
+		fetchAll<<<1,1>>>( deviceCube.begin(), deviceCube.end(), deviceArray );
+		CUDA_CALL( cudaDeviceSynchronize() );
+		CUDA_CHECK_ERRORS();
 		std::vector<Coordinate> hostArray( 60 );
 		deviceArray >> hostArray;
 		for( unsigned i = 0; i < hostArray.size(); ++i ) {

	{
		ecuda::array<Coordinate,3> deviceArray;
		iterateAll<<<1,1>>>( deviceCube, deviceArray );
		CUDA_CHECK_ERRORS();
		CUDA_CALL( cudaDeviceSynchronize() );
		std::vector<Coordinate> hostArray( 3 );
		deviceArray >> hostArray;
		for( unsigned i = 0; i < hostArray.size(); ++i ) {

template<typename T>
struct coord_t {
	T x, y, z;
	HOST DEVICE coord_t( const T& x = T(), const T& y = T(), const T& z = T() ) : x(x), y(y), z(z) {}
	bool operator==( const coord_t& other ) const { return x == other.x and y == other.y and z == other.z; }
	bool operator!=( const coord_t& other ) const { return !operator==(other); }
	friend std::ostream& operator<<( std::ostream& out, const coord_t& coord ) {
