 template<typename T>
 struct coord_t {
 	T x, y, z;
-	coord_t( const T& x = T(), const T& y = T(), const T& z = T() ) : x(x), y(y), z(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 ) {

		ecuda::cube<Coordinate>::slice_yz_type slice = deviceCube.get_yz(0);
		slice[0].assign( v.begin(), v.end() );
	}

	{
		ecuda::array<Coordinate,3> deviceRow;
		fetchRow<<<1,1>>>( deviceCube, deviceRow );

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