diff --git a/src/scontrol/scontrol.c b/src/scontrol/scontrol.c
index 7ea26555d9c81c124ea8f979de579c105d05c7d9..6c490e8a029211eb4d08115ff708998a8d3de122 100644
--- a/src/scontrol/scontrol.c
+++ b/src/scontrol/scontrol.c
@@ -1,6 +1,6 @@
 /*****************************************************************************\
- * scontrol - administration tool for slurm. 
- * provides interface to read, write, update, and configurations.
+ *  scontrol - administration tool for slurm. 
+ *  provides interface to read, write, update, and configurations.
  *****************************************************************************
  *  Copyright (C) 2002 The Regents of the University of California.
  *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
@@ -485,39 +485,22 @@ print_part (char *partition_name)
 void 
 print_step (char *job_step_id_str)
 {
-	int error_code, i, print_cnt = 0;
-	uint32_t job_id = 0, step_id = 0;
-	static job_info_msg_t *old_job_buffer_ptr = NULL;
-	job_info_msg_t * job_buffer_ptr = NULL;
-	job_info_t *job_ptr = NULL;
+	int error_code, i, print_cnt=0;
+	uint32_t job_id = 0;
+	uint16_t step_id = 0;
 	char *next_str;
+	job_step_info_response_msg_t *job_step_info_ptr;
+	job_step_info_t * job_step_ptr;
 
-printf ("only printing job info at present\n");
-
-	if (old_job_buffer_ptr) {
-		error_code = slurm_load_jobs (old_job_buffer_ptr->last_update, 
-					&job_buffer_ptr);
-		if (error_code == 0)
-			slurm_free_job_info_msg (old_job_buffer_ptr);
-		else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) {
-			job_buffer_ptr = old_job_buffer_ptr;
-			error_code = 0;
-			if (quiet_flag == -1)
- 				printf ("slurm_free_job_info no change in data\n");
-		}
-	}
-	else
-		error_code = slurm_load_jobs ((time_t) NULL, &job_buffer_ptr);
+	error_code = slurm_get_job_steps ( job_id, step_id, &job_step_info_ptr);
 	if (error_code) {
 		if (quiet_flag != 1)
-			slurm_perror ("slurm_load_jobs error");
+			slurm_perror ("slurm_get_job_steps error");
 		return;
 	}
-	else if (error_code == 0)
-		old_job_buffer_ptr = job_buffer_ptr;
 	
 	if (quiet_flag == -1)
-		printf ("last_update_time=%ld\n", (long) job_buffer_ptr->last_update);
+		printf ("last_update_time=%ld,\n", (long) job_step_info_ptr->last_update);
 
 	if (job_step_id_str) {
 		job_id = (uint32_t) strtol (job_step_id_str, &next_str, 10);
@@ -525,22 +508,26 @@ printf ("only printing job info at present\n");
 			step_id = (uint32_t) strtol (&next_str[1], NULL, 10);
 	}
 
-	job_ptr = job_buffer_ptr->job_array ;
-	for (i = 0; i < job_buffer_ptr->record_count; i++) {
-		if (job_step_id_str && job_id != job_ptr[i].job_id) 
+	job_step_ptr = job_step_info_ptr->job_steps ;
+	for (i = 0; i < job_step_info_ptr->job_step_count; i++) {
+		if (job_step_id_str && job_id != job_step_ptr[i].job_id) 
+			continue;
+		if (job_step_id_str && step_id != job_step_ptr[i].step_id) 
 			continue;
 		print_cnt++;
-		slurm_print_job_info (stdout, & job_ptr[i] ) ;
+		slurm_print_job_step_info (stdout, & job_step_ptr[i] ) ;
 		if (job_step_id_str)
 			break;
 	}
 
 	if ((print_cnt == 0) && (quiet_flag != 1)) {
-		if (job_buffer_ptr->record_count)
+		if (job_step_info_ptr->job_step_count)
 			printf ("Job step %u.%u not found\n", job_id, step_id);
 		else
 			printf ("No job steps in the system\n");
 	}
+
+	slurm_free_job_step_info_response_msg (job_step_info_ptr);
 }