     // THREAD_NUM == MTGPDC_FLOOR_2P == 256
     // BLOCK_NUM_MAX == CURAND_NUM_MTGP32_PARAMS == 200
 
-    //m_seed = clotho::utility::clock_type::now().time_since_epoch().count();
-
-    m_seeds.reserve( STREAM_COUNT );
+    m_seed = clotho::utility::clock_type::now().time_since_epoch().count();
 
     assert( cudaMalloc( (void ** ) &dStates, STREAM_COUNT * BLOCK_NUM_MAX * sizeof( state_type ) ) == cudaSuccess );
     assert( cudaMalloc( (void ** ) &dParams, sizeof( state_param_type ) ) == cudaSuccess );
 
     assert( curandMakeMTGP32Constants( MTGPDC_PARAM_TABLE, dParams ) == CURAND_STATUS_SUCCESS );
 
-
-    for( unsigned int i = 0; i < STREAM_COUNT; ++i ) {
-        cudaStreamCreate( &streams[i] );
-
-        unsigned long long seed = clotho::utility::clock_type::now().time_since_epoch().count();
-
-        assert( curandMakeMTGP32KernelState( dStates + i * BLOCK_NUM_MAX, MTGPDC_PARAM_TABLE, dParams, BLOCK_NUM_MAX, seed) == CURAND_STATUS_SUCCESS );
-
-        m_seeds.push_back(seed);
-    }
+    assert( curandMakeMTGP32KernelState( dStates, MTGPDC_PARAM_TABLE, dParams, BLOCK_NUM_MAX, m_seed) == CURAND_STATUS_SUCCESS );
 }
 
 void crossover< 3 >::operator()(  real_type * rand_pool

crossover< 3 >::~crossover() {
    cudaFree( dStates );
    cudaFree( dParams );

    for( unsigned int i = 0; i < STREAM_COUNT; ++i ) {
        cudaStreamSynchronize( streams[i] );

        cudaStreamDestroy( streams[i] );
    }
}

void crossover< 3 >::get_state( boost::property_tree::ptree & n ) {
    n.put( "crossover.version", 3 );
    n.put( "crossover.curand.state_type", clotho::cuda::curand_helper< typename crossover< 3 >::state_type >::StateName );
    
    boost::property_tree::ptree sds;
    clotho::utility::add_value_array( sds, m_seeds.begin(), m_seeds.end() );

    n.add_child( "crossover.curand.seed", sds  );

#ifdef USE_TEXTURE_MEMORY_FOR_ALLELE
    n.put( "crossover.use_texture_memory_for_allele", true );

#ifdef USE_TEXTURE_MEMORY_FOR_ALLELE
    cudaBindTexture(0, allele_tex, allele_list, nAlleles * 4);
#endif  // USE_TEXTURE_MEMORY_FOR_ALLELE

    crossover_kernel_3<<< BLOCK_NUM_MAX, THREAD_NUM >>>( dStates, rand_pool, allele_list, event_list, sequences, nSequences, nAlleles, sequence_width, rho );
}
