diff --git a/slurm_drmaa/job.c b/slurm_drmaa/job.c
index d2712c8..7fc4c77 100755
--- a/slurm_drmaa/job.c
+++ b/slurm_drmaa/job.c
@@ -329,10 +329,6 @@ slurmdrmaa_job_create(
 	const char *const *vector;
 	const char *job_category = "default";
 	
-	slurmdrmaa_init_job_desc( job_desc );
-
-	slurm_init_job_desc_msg( job_desc );
-	
 	job_desc->user_id = getuid();
 	job_desc->group_id = getgid();
 
diff --git a/slurm_drmaa/session.c b/slurm_drmaa/session.c
index 5413350..6cdf511 100755
--- a/slurm_drmaa/session.c
+++ b/slurm_drmaa/session.c
@@ -92,23 +92,32 @@ slurmdrmaa_session_run_bulk(
 {
 	fsd_job_t *volatile job = NULL;
 	char **volatile job_ids = NULL;
-	unsigned n_jobs = 0;
+	unsigned n_jobs = 1;
 	volatile bool connection_lock = false;
 	fsd_environ_t *volatile env = NULL;
 	job_desc_msg_t job_desc;
 	submit_response_msg_t *submit_response = NULL;
-	
-	TRY
-	 {
 
-		if( start != end )
-			n_jobs = (end - start) / incr + 1;
-		else 
-			n_jobs = 1;	
+    /* zero out the struct, and set default vaules */
+	slurm_init_job_desc_msg( &job_desc );
 
+	TRY
+	 {
 		if(  start != end )
 		 {
+#if SLURM_VERSION_NUMBER >= SLURM_VERSION_NUM(2,6,0)
+#define ARRAY_IDX_SIZE 31
+/* <int>-<int>:<int> should only add up to 30 */
+             int n;
+             fsd_calloc( job_desc.array_inx, ARRAY_IDX_SIZE+1, char*);
+
+             n = snprintf( job_desc.array_inx, ARRAY_IDX_SIZE, "%d-%d:%d", start, end, incr );
+             if ( n < 0 || n > ARRAY_IDX_SIZE )
+                 fsd_exc_raise_fmt( FSD_ERRNO_INTERNAL_ERROR,"slurmdrmma_session_run_bulk: snprintf failure.");
+         }
+#else
 			unsigned idx, i;
+			n_jobs = (end - start) / incr + 1;
 
 			fsd_calloc( job_ids, n_jobs+1, char* );
 
@@ -138,10 +147,11 @@ slurmdrmaa_session_run_bulk(
 		 }
 		else /* ! bulk */
 		 {
+#endif
 			fsd_calloc( job_ids, n_jobs+1, char* );
 			
 			connection_lock = fsd_mutex_lock( &self->drm_connection_mutex );
-			slurmdrmaa_job_create_req( self, jt, (fsd_environ_t**)&env , &job_desc, 0);
+			slurmdrmaa_job_create_req( self, jt, (fsd_environ_t**)&env , &job_desc, n_jobs);
 			if(slurm_submit_batch_job(&job_desc,&submit_response)){
 				fsd_exc_raise_fmt(
 					FSD_ERRNO_INTERNAL_ERROR,"slurm_submit_batch_job: %s",slurm_strerror(slurm_get_errno()));
@@ -158,7 +168,9 @@ slurmdrmaa_session_run_bulk(
 			self->jobs->add( self->jobs, job );
 			job->release( job );
 			job = NULL;
+#if SLURM_VERSION_NUMBER < SLURM_VERSION_NUM(2,6,0)
 		 }
+#endif
 	 }
 	 ELSE
 	{
