diff --git a/src/partition_allocator/partition_allocator.c b/src/partition_allocator/partition_allocator.c
index bfb65ecf78a4e447eaf9b5866c8cec04e25c261d..9d575742cdb4b659b975822f5b6ca729f306a494 100644
--- a/src/partition_allocator/partition_allocator.c
+++ b/src/partition_allocator/partition_allocator.c
@@ -304,7 +304,13 @@ void pa_init(node_info_msg_t *node_info_ptr)
 		DIM_SIZE[Y]++;
 		DIM_SIZE[Z]++;
 		pa_system_ptr->num_of_proc = node_info_ptr->record_count;
-        }
+        } else {
+		/* Set up a reasonable configuration size */
+		DIM_SIZE[X] = 2;
+		DIM_SIZE[Y] = 4;
+		DIM_SIZE[Z] = 4;
+	}
+	pa_system_ptr->num_of_proc = DIM_SIZE[X] * DIM_SIZE[Y] * DIM_SIZE[Z];
 	if(DIM_SIZE[X]==0 && DIM_SIZE[X]==0 && DIM_SIZE[X]==0) {
 		printf("You need to give me the dimensions\nto set up the system.\n");
 		return;
diff --git a/src/plugins/select/bluegene/bluegene.c b/src/plugins/select/bluegene/bluegene.c
index c210e860e3ba7cf6e1f222b7e96ac3b7df9ab619..881312525aa989dc2f843ea64a143db75c431a86 100644
--- a/src/plugins/select/bluegene/bluegene.c
+++ b/src/plugins/select/bluegene/bluegene.c
@@ -126,6 +126,7 @@ static int _sync_partitions(void)
 {
 	int rc = SLURM_SUCCESS;
 
+#if 0
 	/* Check if partitions configured in SLURM are already configured on
 	 * the system */
 	if ((rc = _validate_config_nodes())) {
@@ -133,6 +134,7 @@ static int _sync_partitions(void)
 		 * configure from scratch */
 		rc = _wire_bgl_partitions();
 	}
+#endif
 
 	return rc;
 }
@@ -686,21 +688,18 @@ extern int init_bgl(void)
 	read_bgl_conf();
 
 #ifdef HAVE_BGL_FILES
-	rc = rm_set_serial(bluegene_serial);
-	if (rc != STATUS_OK){
-		fatal("init_bgl: rm_set_serial failed, errno=%d", rc);
+	if ((rc = rm_set_serial(bluegene_serial)) != STATUS_OK) {
+		fatal("init_bgl: rm_set_serial(): %s", bgl_err_str(rc));
 		return SLURM_ERROR;
 	}
 	
-	rc = rm_get_BGL(&bgl);
-	if (rc != STATUS_OK){
-		fatal("init_bgl: rm_get_BGL failed, errno=%d", rc);
+	if ((rc = rm_get_BGL(&bgl)) != STATUS_OK) {
+		fatal("init_bgl: rm_get_BGL(): %s", bgl_err_str(rc));
 		return SLURM_ERROR;
 	}
 
-	rc = rm_get_data(bgl, RM_Msize, &bp_size);
-	if (rc != STATUS_OK) {
-		fatal("init_bgl: rm_get_data failed, errno=%d", rc);
+	if ((rc = rm_get_data(bgl, RM_Msize, &bp_size)) != STATUS_OK) {
+		fatal("init_bgl: rm_get_data(): %s", bgl_err_str(rc));
 		return SLURM_ERROR;
 	}
 	verbose("BlueGene configured with %d x %d x %d base partitions",
diff --git a/src/smap/job_functions.c b/src/smap/job_functions.c
index 7846f3d63ed0dca49236ba0b8dd907c19183bb25..6b586db0971b11fe584f29156042133bfe6e71db 100644
--- a/src/smap/job_functions.c
+++ b/src/smap/job_functions.c
@@ -28,10 +28,10 @@
 #include "src/common/uid.h"
 #include "src/smap/smap.h"
 
-void print_header_job(void);
-int print_text_job(job_info_t * job_ptr);
+static void _print_header_job(void);
+static int  _print_text_job(job_info_t * job_ptr);
 
-void get_job()
+extern void get_job(void)
 {
 	int error_code = -1, i, j, count = 0;
 
@@ -54,20 +54,16 @@ void get_job()
 
 	if (error_code)
 		if (quiet_flag != 1) {
-			wclear(pa_system_ptr->text_win);
-			pa_system_ptr->ycord =
-			    pa_system_ptr->text_win->_maxy / 2;
-			pa_system_ptr->xcord =
-			    pa_system_ptr->text_win->_maxx;
 			mvwprintw(pa_system_ptr->text_win,
-				  pa_system_ptr->ycord, 1,
-				  "slurm_load_job");
-
+				pa_system_ptr->ycord, 1,
+				"slurm_load_job: %s", 
+				slurm_strerror(slurm_get_errno()));
+			pa_system_ptr->ycord++;
 			return;
 		}
 
 	if (new_job_ptr->record_count && !params.no_header)
-		print_header_job();
+		_print_header_job();
 	for (i = 0; i < new_job_ptr->record_count; i++) {
 		job = new_job_ptr->job_array[i];
 		if (job.node_inx[0] != -1) {
@@ -87,7 +83,7 @@ void get_job()
 			wattron(pa_system_ptr->text_win,
 				COLOR_PAIR(pa_system_ptr->
 					   fill_in_value[count].color));
-			print_text_job(&job);
+			_print_text_job(&job);
 			wattroff(pa_system_ptr->text_win,
 				 COLOR_PAIR(pa_system_ptr->
 					    fill_in_value[count].color));
@@ -98,7 +94,7 @@ void get_job()
 	return;
 }
 
-void print_header_job(void)
+static void _print_header_job(void)
 {
 	mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 		  pa_system_ptr->xcord, "ID");
@@ -131,7 +127,7 @@ void print_header_job(void)
 
 }
 
-int print_text_job(job_info_t * job_ptr)
+static int _print_text_job(job_info_t * job_ptr)
 {
 	time_t time;
 	int printed = 0;
diff --git a/src/smap/partition_functions.c b/src/smap/partition_functions.c
index f99717e97473bd02856cabf14e19f2dc668facaf..d5ec6c9c64a6081f4f32eb4b02a5e0d29c9741e2 100644
--- a/src/smap/partition_functions.c
+++ b/src/smap/partition_functions.c
@@ -72,7 +72,7 @@ static int _print_rest(void *object, void *arg);
 
 void get_part(void)
 {
-	int error_code, i, j, count = 0;
+	int error_code, i, j, recs, count = 0;
 	static partition_info_msg_t *part_info_ptr = NULL, *new_part_ptr;
 	partition_info_t part;
 	char node_entry[13];
@@ -94,24 +94,25 @@ void get_part(void)
 	}
 	if (error_code) {
 		if (quiet_flag != 1) {
-			wclear(pa_system_ptr->text_win);
-			pa_system_ptr->ycord =
-				pa_system_ptr->text_win->_maxy / 2;
-			pa_system_ptr->xcord =
-				pa_system_ptr->text_win->_maxx;
 			mvwprintw(pa_system_ptr->text_win,
 				pa_system_ptr->ycord, 1,
-				"slurm_load_partitions error");
+				"slurm_load_partitions: %s",
+				slurm_strerror(slurm_get_errno()));
+			pa_system_ptr->ycord++;
 		}
-		return;
 	}
 
 	if (params.display == BGLPART)
 		_read_part_db2();
 
-	if (new_part_ptr->record_count && !params.no_header)
+	if (!params.no_header)
 		_print_header_part();
-	for (i = 0; i < new_part_ptr->record_count; i++) {
+
+	if (new_part_ptr)
+		recs = new_part_ptr->record_count;
+	else
+		recs = 0;
+	for (i = 0; i < recs; i++) {
 		j = 0;
 		part = new_part_ptr->partition_array[i];
 		
@@ -238,10 +239,11 @@ static int _print_text_part(partition_info_t * part_ptr,
 	int width = 0;
 	char *nodes, time_buf[20];
 
+	mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
+		pa_system_ptr->xcord, "%c", part_ptr->root_only);
+	pa_system_ptr->xcord += 4;
+
 	if (part_ptr->name) {
-		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
-			pa_system_ptr->xcord, "%c", part_ptr->root_only);
-		pa_system_ptr->xcord += 4;
 		mvwprintw(pa_system_ptr->text_win, pa_system_ptr->ycord,
 			pa_system_ptr->xcord, "%.9s", part_ptr->name);
 		pa_system_ptr->xcord += 10;
@@ -265,7 +267,7 @@ static int _print_text_part(partition_info_t * part_ptr,
 			time_buf);
 		pa_system_ptr->xcord += 11;
 	} else
-		pa_system_ptr->xcord += 32;
+		pa_system_ptr->xcord += 28;
 
 	if (params.display == BGLPART) {
 		if (db2_info_ptr) {
@@ -333,10 +335,6 @@ static int _print_text_part(partition_info_t * part_ptr,
 		i++;
 	}
 
-	/* FIXME: Report any BGL Blocks not reported above */
-	if (params.display == BGLPART) {
-	}
-
 	pa_system_ptr->xcord = 1;
 	pa_system_ptr->ycord++;
 
@@ -446,11 +444,14 @@ static int _print_rest(void *object, void *arg)
 	int *count = (int *) arg;
 	int start, startx, starty, startz, endx, endy, endz;
 	partition_info_t part;
+	hostlist_t hostlist;
+	hostlist_iterator_t host_iter;
+	char *host_name;
 
 	if (block_ptr->printed)
 		return SLURM_SUCCESS;
 
-	if (block_ptr->nodes[3] == '[') {
+	if (block_ptr->nodes[11] == ']') {	/* "bgl[###x###]" */
 		start = atoi(block_ptr->nodes + 4);
 		startx = start / 100;
 		starty = (start % 100) / 10;
@@ -459,32 +460,54 @@ static int _print_rest(void *object, void *arg)
 		endx = start / 100;
 		endy = (start % 100) / 10;
 		endz = (start % 10);
-	} else {
-		start = atoi(block_ptr->nodes + 3);
-		startx = endx = start / 100;
-		starty = endy = (start % 100) / 10;
-		startz = endz = (start % 10);
+		set_grid_bgl(startx, starty, startz,
+			endx, endy, endz, *count);
+	} else {				/* any other format */
+		hostlist_t hostlist;
+		hostlist_iterator_t host_iter;
+		char *host_name;
+
+		part.total_nodes = 0;
+		hostlist  = hostlist_create(block_ptr->nodes);
+		host_iter = hostlist_iterator_create(hostlist);
+		while ((host_name = hostlist_next(host_iter))) {
+			part.total_nodes++;
+			start = atoi(host_name + 3);
+			startx = endx = start / 100;
+			starty = endy = (start % 100) / 10;
+			startz = endz = (start % 10);
+			set_grid_bgl(startx, starty, startz,
+				endx, endy, endz, *count);
+			free(host_name);
+		}
+		hostlist_iterator_destroy(host_iter);
+		hostlist_destroy(hostlist);
 	}
 
 	part.name = NULL;
 	part.allow_groups = block_ptr->nodes;
-	part.total_nodes =  set_grid_bgl(startx, starty, startz, 
-			endx, endy, endz, *count);
 	part.root_only = (int) pa_system_ptr->fill_in_value[*count].letter;
+	if (block_ptr->bgl_conn_type == SELECT_TORUS)
+		part.root_only += 32;
+	wattron(pa_system_ptr->text_win, 
+		COLOR_PAIR(pa_system_ptr->fill_in_value[*count].color));
 	_print_text_part(&part, block_ptr);
+	wattroff(pa_system_ptr->text_win,
+		COLOR_PAIR(pa_system_ptr->fill_in_value[*count].color));
+	(*count)++;
 	return SLURM_SUCCESS;
 }
 #ifdef HAVE_BGL_FILES
 static int _post_block_read(void *object, void *arg)
 {
 	db2_block_info_t *block_ptr = (db2_block_info_t *) object;
-	int i = 64;
+	int len = 1024;
 
-	block_ptr->nodes = xmalloc(i);
-	while (hostlist_ranged_string(block_ptr->hostlist, i, block_ptr->nodes)
-			< 0) {
-		i *= 2;
-		xrealloc(block_ptr->nodes, i);
+	block_ptr->nodes = xmalloc(len);
+	while (hostlist_ranged_string(block_ptr->hostlist, len, 
+			block_ptr->nodes) < 0) {
+		len *= 2;
+		xrealloc(block_ptr->nodes, len);
 	}
 
 #if _DEBUG
diff --git a/src/smap/smap.c b/src/smap/smap.c
index 6f2534d07849c7ce2db75dbc6eac31071136367c..6f4083e4ddfe5b54af278e6e450fd76803bdf564 100644
--- a/src/smap/smap.c
+++ b/src/smap/smap.c
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
 	error_code = slurm_load_node((time_t) NULL, &node_info_ptr, 0);
 	if (error_code) {
 		slurm_perror("slurm_load_node");
-		exit(0);
+		pa_init(NULL);
 	} else {
 		pa_init(node_info_ptr);
         }