diff --git a/NEWS b/NEWS
index ea2b7c1e04df62a2e3eaf3187f390d1ac4b94de3..fde45a36985df506956f4ccbadaabb9f5dfea00b 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ documents those changes that are of interest to users and admins.
 * Changes in SLURM 2.2.0.pre6
 =============================
  -- sview - added ability to see database configuration.
+ -- sview - added ability to remove visible tabs.
 
 * Changes in SLURM 2.2.0.pre5
 =============================
diff --git a/src/sview/block_info.c b/src/sview/block_info.c
index f45e2d0bef2afb926d8169b415362152793a8c33..14f79d3bd07084c873a9fa6ea27ea64463254307 100644
--- a/src/sview/block_info.c
+++ b/src/sview/block_info.c
@@ -696,7 +696,7 @@ extern int get_new_info_block(block_info_msg_t **block_ptr,
 	static time_t last;
 	static bool changed = 0;
 
-	if(!force && ((now - last) < global_sleep_time)) {
+	if(!force && ((now - last) < sview_config.refresh_delay)) {
 		if(*block_ptr != bg_info_ptr)
 			error_code = SLURM_SUCCESS;
 		*block_ptr = bg_info_ptr;
@@ -963,7 +963,7 @@ display_it:
 	}
 	list_iterator_destroy(itr);
 	change_grid_color(grid_button_list, -1, -1, MAKE_WHITE, true, 0);
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 0);
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 1);
 	}
diff --git a/src/sview/common.c b/src/sview/common.c
index 287f60ee14efbcf31109a377f08b9f862dd0dbf4..92aaa608f9e740d4b5df69aa9d6103a6147c12a1 100644
--- a/src/sview/common.c
+++ b/src/sview/common.c
@@ -605,23 +605,40 @@ extern GtkWidget *create_entry()
 extern void create_page(GtkNotebook *notebook, display_data_t *display_data)
 {
 	GtkScrolledWindow *scrolled_window = create_scrolled_window();
-	GtkWidget *event_box = NULL;
-	GtkWidget *label = NULL;
+	GtkWidget *event_box = gtk_event_box_new();
+	GtkWidget *label = gtk_label_new(display_data->name);
+	GtkWidget *close_button = gtk_event_box_new();
+	GtkWidget *table = gtk_table_new(1, 3, FALSE);
+	GtkWidget *image = gtk_image_new_from_stock(
+		GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_SMALL_TOOLBAR);
 	int err;
 
-	event_box = gtk_event_box_new();
+	gtk_container_add(GTK_CONTAINER(close_button), image);
+	gtk_widget_set_size_request(close_button, 10, 10);
+	g_signal_connect(G_OBJECT(close_button), "button-press-event",
+			 G_CALLBACK(close_tab),
+			 display_data);
+
+	//gtk_event_box_set_above_child(GTK_EVENT_BOX(close_button), FALSE);
+
+	gtk_container_add(GTK_CONTAINER(event_box), label);
 	gtk_event_box_set_above_child(GTK_EVENT_BOX(event_box), FALSE);
 	g_signal_connect(G_OBJECT(event_box), "button-press-event",
 			 G_CALLBACK(tab_pressed),
 			 display_data);
 
-	label = gtk_label_new(display_data->name);
-	gtk_container_add(GTK_CONTAINER(event_box), label);
-	gtk_widget_show(label);
+	gtk_table_set_homogeneous(GTK_TABLE(table), FALSE);
+	gtk_table_set_col_spacings(GTK_TABLE(table), 5);
+	gtk_container_set_border_width(GTK_CONTAINER(table), 1);
+
+	gtk_table_attach_defaults(GTK_TABLE(table), event_box, 0, 1, 0, 1);
+	gtk_table_attach_defaults(GTK_TABLE(table), close_button, 2, 3, 0, 1);
+
+	gtk_widget_show_all(table);
 	//(display_data->set_fields)(GTK_MENU(menu));
 	if((err = gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
 					   GTK_WIDGET(scrolled_window),
-					   event_box)) == -1) {
+					   table)) == -1) {
 		g_error("Couldn't add page to notebook\n");
 	}
 
@@ -843,7 +860,7 @@ extern gboolean left_button_pressed(GtkTreeView *tree_view,
 	}
 	last_user_data = iter.user_data;
 
-	if(!admin_mode)
+	if(!sview_config.admin_mode)
 		rc = true;
 
 	last_time = now;
@@ -900,7 +917,7 @@ extern gboolean row_clicked(GtkTreeView *tree_view, GdkEventButton *event,
 		right_button_pressed(tree_view, path, event,
 				     signal_params, ROW_CLICKED);
 		did_something = TRUE;
-	} else if(!admin_mode)
+	} else if(!sview_config.admin_mode)
 		did_something = TRUE;
 	gtk_tree_path_free(path);
 
@@ -1171,7 +1188,7 @@ extern void *popup_thr(popup_info_t *popup_win)
 		gdk_threads_leave();
 		g_static_mutex_unlock(&sview_mutex);
 		//g_print("done popup_thr\n");
-		sleep(global_sleep_time);
+		sleep(sview_config.refresh_delay);
 	}
 	return NULL;
 }
@@ -1504,7 +1521,7 @@ extern void sview_widget_modify_bg(GtkWidget *widget, GtkStateType state,
 /* 	DEF_TIMERS; */
 
 /* 	START_TIMER; */
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		/* For some reason, QT Themes have a very slow call to for
 		 * gtk_widget_modify_bg as of 7-6-09.
 		 * Here we only take around 40 microsecs where
diff --git a/src/sview/grid.c b/src/sview/grid.c
index a286c93188b88ff98b490d6207ea35e0d669b74a..3fb95ed76219d1e98705ee48e97053972a8cf72e 100644
--- a/src/sview/grid.c
+++ b/src/sview/grid.c
@@ -788,23 +788,23 @@ extern void put_buttons_in_table(GtkTable *table, List button_list)
 
 #ifdef HAVE_3D
 	node_count = DIM_SIZE[X];
-	global_x_width = DIM_SIZE[X] + DIM_SIZE[Z];
+	sview_config.grid_x_width = DIM_SIZE[X] + DIM_SIZE[Z];
 	table_y = (DIM_SIZE[Z] * DIM_SIZE[Y]) + DIM_SIZE[Y];
 #else
-	if(!global_x_width) {
+	if(!sview_config.grid_x_width) {
 		if(node_count < 50) {
-			global_x_width = 1;
+			sview_config.grid_x_width = 1;
 		} else if(node_count < 500) {
-			global_x_width = 10;
+			sview_config.grid_x_width = 10;
 		} else {
-			global_x_width=20;
+			sview_config.grid_x_width=20;
 		}
 	}
-	table_y = node_count/global_x_width;
+	table_y = node_count/sview_config.grid_x_width;
 	table_y++;
 #endif
-	//g_print("the table size is y=%d x=%d\n", table_y, global_x_width);
-	gtk_table_resize(table, table_y, global_x_width);
+	//g_print("the table size is y=%d x=%d\n", table_y, sview_config.grid_x_width);
+	gtk_table_resize(table, table_y, sview_config.grid_x_width);
 	itr = list_iterator_create(button_list);
 	while((grid_button = list_next(itr))) {
 #ifdef HAVE_3D
@@ -830,17 +830,17 @@ extern void put_buttons_in_table(GtkTable *table, List button_list)
 
 		coord_x++;
 
-		if(coord_x == global_x_width) {
+		if(coord_x == sview_config.grid_x_width) {
 			coord_x = 0;
 			coord_y++;
-			if(!(coord_y % global_vertical))
+			if(!(coord_y % sview_config.grid_vert))
 				gtk_table_set_row_spacing(table, coord_y-1, 5);
 		}
 
 		if(coord_y == table_y)
 			break;
 
-		if(coord_x && !(coord_x % global_horizontal))
+		if(coord_x && !(coord_x % sview_config.grid_hori))
 			gtk_table_set_col_spacing(table, coord_x-1, 5);
 #endif
 	}
@@ -861,20 +861,20 @@ extern int update_grid_table(GtkTable *table, List button_list, List node_list)
 	int default_y_offset= (DIM_SIZE[Z] * DIM_SIZE[Y])
 		+ (DIM_SIZE[Y] - DIM_SIZE[Z]);
 	node_count = DIM_SIZE[X];
-	global_x_width = DIM_SIZE[X] + DIM_SIZE[Z];
+	sview_config.grid_x_width = DIM_SIZE[X] + DIM_SIZE[Z];
 	table_y = (DIM_SIZE[Z] * DIM_SIZE[Y]) + DIM_SIZE[Y];
 #else
 	node_count = list_count(node_list);
-	if(!global_x_width) {
+	if(!sview_config.grid_x_width) {
 		if(node_count < 50) {
-			global_x_width = 1;
+			sview_config.grid_x_width = 1;
 		} else if(node_count < 500) {
-			global_x_width = 10;
+			sview_config.grid_x_width = 10;
 		} else {
-			global_x_width = 20;
+			sview_config.grid_x_width = 20;
 		}
 	}
-	table_y = node_count/global_x_width;
+	table_y = node_count/sview_config.grid_x_width;
 	table_y++;
 #endif
 
@@ -883,7 +883,7 @@ extern int update_grid_table(GtkTable *table, List button_list, List node_list)
 		return SLURM_ERROR;
 	}
 
-	gtk_table_resize(table, table_y, global_x_width);
+	gtk_table_resize(table, table_y, sview_config.grid_x_width);
 	gtk_table_set_row_spacings(table, 0);
 	gtk_table_set_col_spacings(table, 0);
 	itr = list_iterator_create(node_list);
@@ -937,10 +937,10 @@ extern int update_grid_table(GtkTable *table, List button_list, List node_list)
 			   coord_y.  We add space inbetween each 10th row.
 			*/
 			coord_x++;
-			if(coord_x == global_x_width) {
+			if(coord_x == sview_config.grid_x_width) {
 				coord_x = 0;
 				coord_y++;
-				if(!(coord_y % global_vertical))
+				if(!(coord_y % sview_config.grid_vert))
 					gtk_table_set_row_spacing(table,
 								  coord_y-1, 5);
 			}
@@ -948,7 +948,7 @@ extern int update_grid_table(GtkTable *table, List button_list, List node_list)
 			if(coord_y == table_y)
 				break;
 
-			if(coord_x && !(coord_x%global_horizontal))
+			if(coord_x && !(coord_x%sview_config.grid_hori))
 				gtk_table_set_col_spacing(table, coord_x-1, 5);
 #endif
 			break;
@@ -1024,20 +1024,20 @@ extern int setup_grid_table(GtkTable *table, List button_list, List node_list)
 	int default_y_offset= (DIM_SIZE[Z] * DIM_SIZE[Y])
 		+ (DIM_SIZE[Y] - DIM_SIZE[Z]);
 	node_count = DIM_SIZE[X];
-	global_x_width = DIM_SIZE[X] + DIM_SIZE[Z];
+	sview_config.grid_x_width = DIM_SIZE[X] + DIM_SIZE[Z];
 	table_y = (DIM_SIZE[Z] * DIM_SIZE[Y]) + DIM_SIZE[Y];
 #else
 	node_count = list_count(node_list);
-	if(!global_x_width) {
+	if(!sview_config.grid_x_width) {
 		if(node_count < 50) {
-			global_x_width = 1;
+			sview_config.grid_x_width = 1;
 		} else if(node_count < 500) {
-			global_x_width = 10;
+			sview_config.grid_x_width = 10;
 		} else {
-			global_x_width = 20;
+			sview_config.grid_x_width = 20;
 		}
 	}
-	table_y = node_count/global_x_width;
+	table_y = node_count/sview_config.grid_x_width;
 	table_y++;
 #endif
 
@@ -1046,7 +1046,7 @@ extern int setup_grid_table(GtkTable *table, List button_list, List node_list)
 		return SLURM_ERROR;
 	}
 
-	gtk_table_resize(table, table_y, global_x_width);
+	gtk_table_resize(table, table_y, sview_config.grid_x_width);
 	itr = list_iterator_create(node_list);
 	while((sview_node_info_ptr = list_next(itr))) {
 #ifdef HAVE_3D
@@ -1104,17 +1104,17 @@ extern int setup_grid_table(GtkTable *table, List button_list, List node_list)
 		   coord_y.  We add space inbetween each 10th row.
 		*/
 		coord_x++;
-		if(coord_x == global_x_width) {
+		if(coord_x == sview_config.grid_x_width) {
 			coord_x = 0;
 			coord_y++;
-			if(!(coord_y % global_vertical))
+			if(!(coord_y % sview_config.grid_vert))
 				gtk_table_set_row_spacing(table, coord_y-1, 5);
 		}
 
 		if(coord_y == table_y)
 			break;
 
-		if(coord_x && !(coord_x % global_horizontal))
+		if(coord_x && !(coord_x % sview_config.grid_hori))
 			gtk_table_set_col_spacing(table, coord_x-1, 5);
 #endif
 	}
@@ -1225,7 +1225,7 @@ extern void post_setup_popup_grid_list(popup_info_t *popup_win)
 
 	change_grid_color(popup_win->grid_button_list, -1, -1,
 			  MAKE_BLACK, true, NODE_STATE_IDLE);
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		gtk_widget_set_sensitive(GTK_WIDGET(popup_win->grid_table), 0);
 		gtk_widget_set_sensitive(GTK_WIDGET(popup_win->grid_table), 1);
 	}
diff --git a/src/sview/job_info.c b/src/sview/job_info.c
index d6cacb8c5e83f15c5d2fd48869e16a7c260d48da..4893112df2bbe0b0c1f33c98e5ffac40304c645c 100644
--- a/src/sview/job_info.c
+++ b/src/sview/job_info.c
@@ -2594,7 +2594,7 @@ extern int get_new_info_job(job_info_msg_t **info_ptr,
 	static bool changed = 0;
 	static uint16_t last_flags = 0;
 
-	if(!force && ((now - last) < global_sleep_time)) {
+	if(!force && ((now - last) < sview_config.refresh_delay)) {
 		if(*info_ptr != job_info_ptr)
 			error_code = SLURM_SUCCESS;
 		*info_ptr = job_info_ptr;
@@ -2604,7 +2604,7 @@ extern int get_new_info_job(job_info_msg_t **info_ptr,
 	}
 	last = now;
 
-	if(global_show_hidden)
+	if(sview_config.show_hidden)
 		show_flags |= SHOW_ALL;
 	if (job_info_ptr) {
 		if(show_flags != last_flags)
@@ -2646,7 +2646,7 @@ extern int get_new_info_job_step(job_step_info_response_msg_t **info_ptr,
 	static time_t last;
 	static bool changed = 0;
 
-	if(!force && ((now - last) < global_sleep_time)) {
+	if(!force && ((now - last) < sview_config.refresh_delay)) {
 		if(*info_ptr != old_step_ptr)
 			error_code = SLURM_SUCCESS;
 		*info_ptr = old_step_ptr;
@@ -2960,7 +2960,7 @@ display_it:
 	}
 	list_iterator_destroy(itr);
 	change_grid_color(grid_button_list, -1, -1, MAKE_WHITE, true, 0);
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 0);
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 1);
 	}
diff --git a/src/sview/node_info.c b/src/sview/node_info.c
index 569e79c28d3d07689fffb253a544a2e71f73690a..084cfbc463bb9aef1a1b9a8ee2aa292d8e8e30aa 100644
--- a/src/sview/node_info.c
+++ b/src/sview/node_info.c
@@ -580,7 +580,7 @@ extern int get_new_info_node(node_info_msg_t **info_ptr, int force)
 	static bool changed = 0;
 	static uint16_t last_flags = 0;
 
-	if(!force && ((now - last) < global_sleep_time)) {
+	if(!force && ((now - last) < sview_config.refresh_delay)) {
 		if(*info_ptr != node_info_ptr)
 			error_code = SLURM_SUCCESS;
 		*info_ptr = node_info_ptr;
@@ -591,7 +591,7 @@ extern int get_new_info_node(node_info_msg_t **info_ptr, int force)
 	}
 	last = now;
 
-	if(global_show_hidden)
+	if(sview_config.show_hidden)
 		show_flags |= SHOW_ALL;
 	if (node_info_ptr) {
 		if(show_flags != last_flags)
@@ -1034,7 +1034,7 @@ display_it:
 	}
 	list_iterator_destroy(itr);
 	change_grid_color(grid_button_list, -1, -1, MAKE_WHITE, true, 0);
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 0);
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 1);
 	}
diff --git a/src/sview/part_info.c b/src/sview/part_info.c
index 76fda60d8d192f6ee252b55e06dc654884f657d5..633196b6595456f0adf7e572120736599f8502cc 100644
--- a/src/sview/part_info.c
+++ b/src/sview/part_info.c
@@ -1650,7 +1650,7 @@ extern int get_new_info_part(partition_info_msg_t **part_ptr, int force)
 	static bool changed = 0;
 	static uint16_t last_flags = 0;
 
-	if(!force && ((now - last) < global_sleep_time)) {
+	if(!force && ((now - last) < sview_config.refresh_delay)) {
 		if(*part_ptr != part_info_ptr)
 			error_code = SLURM_SUCCESS;
 		*part_ptr = part_info_ptr;
@@ -1660,7 +1660,7 @@ extern int get_new_info_part(partition_info_msg_t **part_ptr, int force)
 	}
 	last = now;
 
-	if(global_show_hidden)
+	if(sview_config.show_hidden)
 		show_flags |= SHOW_ALL;
 
 	if (part_info_ptr) {
@@ -1995,7 +1995,7 @@ display_it:
 	}
 	list_iterator_destroy(itr);
 	change_grid_color(grid_button_list, -1, -1, MAKE_WHITE, true, 0);
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 0);
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 1);
 	}
diff --git a/src/sview/popups.c b/src/sview/popups.c
index 68312770f3cbc25582d1f2601bcfbf9ee65510af..9aa6a3a8f63e1bf25f48e60db7dba3eb9fe92dd2 100644
--- a/src/sview/popups.c
+++ b/src/sview/popups.c
@@ -685,7 +685,7 @@ extern void change_refresh_popup(GtkAction *action, gpointer user_data)
 {
 	GtkWidget *table = gtk_table_new(1, 2, FALSE);
 	GtkWidget *label = NULL;
-	GtkObject *adjustment = gtk_adjustment_new(global_sleep_time,
+	GtkObject *adjustment = gtk_adjustment_new(sview_config.refresh_delay,
 						   1, 10000,
 						   5, 60,
 						   0);
@@ -720,11 +720,11 @@ extern void change_refresh_popup(GtkAction *action, gpointer user_data)
 	response = gtk_dialog_run (GTK_DIALOG(popup));
 
 	if (response == GTK_RESPONSE_OK) {
-		global_sleep_time =
+		sview_config.refresh_delay =
 			gtk_spin_button_get_value_as_int(
 				GTK_SPIN_BUTTON(spin_button));
 		temp = g_strdup_printf("Refresh Interval set to %d seconds.",
-				       global_sleep_time);
+				       sview_config.refresh_delay);
 		gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar),
 				  STATUS_REFRESH);
 		response = gtk_statusbar_push(GTK_STATUSBAR(main_statusbar),
@@ -749,8 +749,8 @@ extern void change_grid_popup(GtkAction *action, gpointer user_data)
 	GtkWidget *label;
 	GtkObject *adjustment;
 	GtkWidget *width_sb, *hori_sb, *vert_sb;
-	int width = global_x_width, hori = global_horizontal,
-		vert = global_vertical;
+	int width = sview_config.grid_x_width, hori = sview_config.grid_hori,
+		vert = sview_config.grid_vert;
 	GtkWidget *popup = gtk_dialog_new_with_buttons(
 		"Grid Properties",
 		GTK_WINDOW (user_data),
@@ -769,21 +769,21 @@ extern void change_grid_popup(GtkAction *action, gpointer user_data)
 			   table, FALSE, FALSE, 0);
 
 	label = gtk_label_new("Nodes in row ");
-	adjustment = gtk_adjustment_new(global_x_width, 1, 1000, 1, 60, 0);
+	adjustment = gtk_adjustment_new(sview_config.grid_x_width, 1, 1000, 1, 60, 0);
 	width_sb = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment), 1, 0);
 	gtk_container_set_border_width(GTK_CONTAINER(table), 10);
 	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
 	gtk_table_attach_defaults(GTK_TABLE(table), width_sb, 1, 2, 0, 1);
 
 	label = gtk_label_new("Nodes before horizontal break ");
-	adjustment = gtk_adjustment_new(global_horizontal, 1, 1000, 1, 60, 0);
+	adjustment = gtk_adjustment_new(sview_config.grid_hori, 1, 1000, 1, 60, 0);
 	hori_sb = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment), 1, 0);
 	gtk_container_set_border_width(GTK_CONTAINER(table), 10);
 	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
 	gtk_table_attach_defaults(GTK_TABLE(table), hori_sb, 1, 2, 1, 2);
 
 	label = gtk_label_new("Nodes before vertical break ");
-	adjustment = gtk_adjustment_new(global_vertical, 1, 1000, 1, 60, 0);
+	adjustment = gtk_adjustment_new(sview_config.grid_vert, 1, 1000, 1, 60, 0);
 	vert_sb = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment), 1, 0);
 	gtk_container_set_border_width(GTK_CONTAINER(table), 10);
 	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);
@@ -793,25 +793,25 @@ extern void change_grid_popup(GtkAction *action, gpointer user_data)
 	response = gtk_dialog_run (GTK_DIALOG(popup));
 
 	if (response == GTK_RESPONSE_OK) {
-		global_x_width =
+		sview_config.grid_x_width =
 			gtk_spin_button_get_value_as_int(
 				GTK_SPIN_BUTTON(width_sb));
-		global_horizontal =
+		sview_config.grid_hori =
 			gtk_spin_button_get_value_as_int(
 				GTK_SPIN_BUTTON(hori_sb));
-		global_vertical =
+		sview_config.grid_vert =
 			gtk_spin_button_get_value_as_int(
 				GTK_SPIN_BUTTON(vert_sb));
-		if((width == global_x_width)
-		   && (hori == global_horizontal)
-		   && (vert == global_vertical)) {
+		if((width == sview_config.grid_x_width)
+		   && (hori == sview_config.grid_hori)
+		   && (vert == sview_config.grid_vert)) {
 			temp = g_strdup_printf("Grid: Nothing changed.");
 		} else {
 			temp = g_strdup_printf("Grid set to %d nodes breaks "
 					       "at %d H and %d V.",
-					       global_x_width,
-					       global_horizontal,
-					       global_vertical);
+					       sview_config.grid_x_width,
+					       sview_config.grid_hori,
+					       sview_config.grid_vert);
 			get_system_stats(main_grid_table);
 		}
 		gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar),
diff --git a/src/sview/resv_info.c b/src/sview/resv_info.c
index 913f7a995f83e7e38ed3f66f203ef4a4025eb928..7864f0aba6ca47541b0b890eca1acc03ec915918 100644
--- a/src/sview/resv_info.c
+++ b/src/sview/resv_info.c
@@ -787,7 +787,7 @@ extern int get_new_info_resv(reserve_info_msg_t **info_ptr,
 	static time_t last;
 	static bool changed = 0;
 
-	if(!force && ((now - last) < global_sleep_time)) {
+	if(!force && ((now - last) < sview_config.refresh_delay)) {
 		if(*info_ptr != resv_info_ptr)
 			error_code = SLURM_SUCCESS;
 		*info_ptr = resv_info_ptr;
@@ -991,7 +991,7 @@ display_it:
 	}
 	list_iterator_destroy(itr);
 	change_grid_color(grid_button_list, -1, -1, MAKE_WHITE, true, 0);
-	if(grid_speedup) {
+	if(sview_config.grid_speedup) {
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 0);
 		gtk_widget_set_sensitive(GTK_WIDGET(main_grid_table), 1);
 	}
diff --git a/src/sview/sview.c b/src/sview/sview.c
index 6bc3c13823ad88db05616e2169c03326b1a2212d..8bb2e3f37961c85a7516432e7e5b84b2f4353a66 100644
--- a/src/sview/sview.c
+++ b/src/sview/sview.c
@@ -47,7 +47,7 @@ typedef struct {
 } page_thr_t;
 
 /* globals */
-sview_parameters_t params;
+sview_config_t sview_config;
 int adding = 1;
 int fini = 0;
 int grid_init = 0;
@@ -56,16 +56,10 @@ bool force_refresh = FALSE;
 List popup_list = NULL;
 List signal_params_list = NULL;
 int page_running[PAGE_CNT];
-int global_sleep_time = 5;
-int global_x_width = 0;
-int global_horizontal = 10;
-int global_vertical = 10;
 bool global_entry_changed = 0;
 bool global_send_update_msg = 0;
 bool global_edit_error = 0;
-bool global_show_hidden = 0;
 gchar *global_edit_error_msg = NULL;
-bool admin_mode = FALSE;
 GtkWidget *main_notebook = NULL;
 GtkWidget *main_statusbar = NULL;
 GtkWidget *main_window = NULL;
@@ -74,7 +68,6 @@ GtkTable *main_grid_table = NULL;
 GStaticMutex sview_mutex = G_STATIC_MUTEX_INIT;
 GMutex *grid_mutex = NULL;
 GCond *grid_cond = NULL;
-int grid_speedup = 0;
 
 static GtkActionGroup *admin_action_group = NULL;
 static GtkActionGroup *menu_action_group = NULL;
@@ -85,9 +78,6 @@ display_data_t main_display_data[] = {
 	 refresh_main, create_model_job, admin_edit_job,
 	 get_info_job, specific_info_job,
 	 set_menus_job, NULL},
-	{G_TYPE_NONE, STEP_PAGE, NULL, FALSE, -1,
-	 refresh_main, NULL, NULL, NULL,
-	 NULL, NULL, NULL},
 	{G_TYPE_NONE, PART_PAGE, "Partitions", TRUE, -1,
 	 refresh_main, create_model_part, admin_edit_part,
 	 get_info_part, specific_info_part,
@@ -167,7 +157,7 @@ void *_page_thr(void *arg)
 		g_static_mutex_unlock(&sview_mutex);
 /* 		END_TIMER; */
 /* 		g_print("got for initeration: %s\n", TIME_STR); */
-		sleep(global_sleep_time);
+		sleep(sview_config.refresh_delay);
 
 		gdk_threads_enter();
 		if(thread_count > 1) {
@@ -213,7 +203,7 @@ void *_grid_init_thr(void *arg)
 		gdk_threads_leave();
 
 		if(rc != SLURM_SUCCESS)
-			sleep(global_sleep_time);
+			sleep(sview_config.refresh_delay);
 		else
 			grid_init = 1;
 
@@ -271,10 +261,9 @@ static void _page_switched(GtkNotebook     *notebook,
 			break;
 	}
 
-	if(main_display_data[i].extra != page_num) {
-		g_print("page %d not found\n", page_num);
+	if(main_display_data[i].extra != page_num)
 		return;
-	}
+
 	if(main_display_data[i].get_info) {
 		running = i;
 		page_running[i] = 1;
@@ -288,8 +277,7 @@ static void _page_switched(GtkNotebook     *notebook,
 		page_thr->page_num = i;
 		page_thr->table = table;
 
-		if (!g_thread_create(_page_thr, page_thr, FALSE, &error))
-		{
+		if (!g_thread_create(_page_thr, page_thr, FALSE, &error)) {
 			g_printerr ("Failed to create page thread: %s\n",
 				    error->message);
 			return;
@@ -301,30 +289,28 @@ static void _set_admin_mode(GtkToggleAction *action)
 {
 //	GtkAction *admin_action = NULL;
 
-	if(admin_mode) {
-		admin_mode = FALSE;
+	if(sview_config.admin_mode) {
+		sview_config.admin_mode = FALSE;
 		gtk_statusbar_pop(GTK_STATUSBAR(main_statusbar),
 				  STATUS_ADMIN_MODE);
 	} else {
-		admin_mode = TRUE;
+		sview_config.admin_mode = TRUE;
 		gtk_statusbar_push(GTK_STATUSBAR(main_statusbar),
 				   STATUS_ADMIN_MODE,
 				   "Admin mode activated! "
 				   "Think before you alter anything.");
 	}
-	gtk_action_group_set_sensitive(admin_action_group, admin_mode);
+	gtk_action_group_set_sensitive(admin_action_group, sview_config.admin_mode);
 }
 
 static void _set_grid(GtkToggleAction *action)
 {
-	static bool open = TRUE;
-
-	if(open) {
+	if(sview_config.show_grid) {
 		gtk_widget_hide(grid_window);
-		open = FALSE;
+		sview_config.show_grid = FALSE;
 	} else {
 		gtk_widget_show(grid_window);
-		open = TRUE;
+		sview_config.show_grid = TRUE;
 	}
 
 	return;
@@ -333,14 +319,14 @@ static void _set_grid(GtkToggleAction *action)
 static void _set_hidden(GtkToggleAction *action)
 {
 	char *tmp;
-	if(global_show_hidden) {
+	if(sview_config.show_hidden) {
 		tmp = g_strdup_printf(
 			"Hidden partitions and their jobs are now hidden");
-		global_show_hidden = 0;
+		sview_config.show_hidden = 0;
 	} else {
 		tmp = g_strdup_printf(
 			"Hidden partitions and their jobs are now visible");
-		global_show_hidden = 1;
+		sview_config.show_hidden = 1;
 	}
 	refresh_main(NULL, NULL);
 	display_edit_note(tmp);
@@ -721,6 +707,18 @@ extern void tab_pressed(GtkWidget *widget, GdkEventButton *event,
 	}
 }
 
+extern void close_tab(GtkWidget *widget, GdkEventButton *event,
+		      display_data_t *display_data)
+{
+	if(event->button == 3)
+		/* don't do anything with a right click */
+		return;
+
+	gtk_widget_hide(gtk_notebook_get_nth_page(GTK_NOTEBOOK(main_notebook),
+						  display_data->extra));
+	//g_print("hid %d\n", display_data->extra);
+}
+
 int main(int argc, char *argv[])
 {
 	GtkWidget *menubar = NULL;
@@ -730,9 +728,25 @@ int main(int argc, char *argv[])
 	GtkViewport *view = NULL;
 	int i=0;
 
-	if(getenv("SVIEW_GRID_SPEEDUP"))
-		grid_speedup = 1;
+	sview_config.refresh_delay = 5;
+	sview_config.grid_x_width = 0;
+	sview_config.grid_hori = 10;
+	sview_config.grid_vert = 10;
+	sview_config.show_hidden = 0;
+	sview_config.admin_mode = FALSE;
+	sview_config.grid_speedup = 0;
+	sview_config.show_grid = TRUE;
+	sview_config.page_default = PART_PAGE;
+	sview_config.tab_pos = GTK_POS_TOP;
 
+	if(getenv("SVIEW_GRID_SPEEDUP"))
+		sview_config.grid_speedup = 1;
+	for(i=0; i<PAGE_CNT; i++) {
+		if(!main_display_data[i].show)
+			sview_config.page_visible[i] = FALSE;
+		else
+			sview_config.page_visible[i] = TRUE;
+	}
 	_init_pages();
 	g_thread_init(NULL);
 	gdk_threads_init();
@@ -779,7 +793,8 @@ int main(int argc, char *argv[])
 
 	gtk_notebook_popup_enable(GTK_NOTEBOOK(main_notebook));
 	gtk_notebook_set_scrollable(GTK_NOTEBOOK(main_notebook), TRUE);
-	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(main_notebook), GTK_POS_TOP);
+	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(main_notebook),
+				 sview_config.tab_pos);
 
 	main_statusbar = gtk_statusbar_new();
 	gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(main_statusbar),
@@ -802,18 +817,43 @@ int main(int argc, char *argv[])
 	for(i=0; i<PAGE_CNT; i++) {
 		if(main_display_data[i].id == -1)
 			break;
-		else if(!main_display_data[i].show)
-			continue;
+
 		create_page(GTK_NOTEBOOK(main_notebook),
 			    &main_display_data[i]);
 	}
 
 	/* tell signal we are done adding */
-	adding = 0;
+
 	popup_list = list_create(destroy_popup_info);
 	signal_params_list = list_create(destroy_signal_params);
+
 	gtk_widget_show_all(main_window);
 
+	adding = 0;
+	/* apply default settings */
+	if(!sview_config.show_grid)
+		gtk_widget_hide(grid_window);
+
+	for(i=0; i<PAGE_CNT; i++) {
+		GtkWidget *visible_tab = NULL;
+
+		if(main_display_data[i].id == -1)
+			break;
+
+		visible_tab = gtk_notebook_get_nth_page(
+			GTK_NOTEBOOK(main_notebook), i);
+		if(sview_config.page_visible[i]
+		   || (i == sview_config.page_default))
+			gtk_widget_show(visible_tab);
+		else
+			gtk_widget_hide(visible_tab);
+	}
+	/* Set the default page This has to be done after the
+	 * gtk_widget_show_all since it, for some reason always sets
+	 * 0 to be the default page and will just overwrite this. */
+	gtk_notebook_set_current_page(GTK_NOTEBOOK(main_notebook),
+				      sview_config.page_default);
+
 	/* Finished! */
 	gtk_main ();
 	gdk_threads_leave();
diff --git a/src/sview/sview.h b/src/sview/sview.h
index f7a57935d00e13a0d7ae49f20deef363be9f35c9..20be983356f33caad0d3bd0bb1bd20efeab5c5fa 100644
--- a/src/sview/sview.h
+++ b/src/sview/sview.h
@@ -97,7 +97,6 @@
 #define MAKE_WHITE -1
 
 enum { JOB_PAGE,
-       STEP_PAGE,
        PART_PAGE,
        NODE_PAGE,
        BLOCK_PAGE,
@@ -150,27 +149,18 @@ typedef enum { SEARCH_JOB_ID = 1,
 
 /* Input parameters */
 typedef struct {
-	bool all_flag;
-	bool no_header;
-
-	char *format;
-	char *sort;
-	char *states;
-
-	int iterate;
-	int verbose;
-	int display;
-
-	bool long_output;
-	bool commandline;
-	bool parse;
-
-	char *nodes;
-	char *partition;
-
-	int node_field_size;
-
-} sview_parameters_t;
+	bool admin_mode;
+	int grid_hori;
+	int grid_vert;
+	int grid_x_width;
+	int grid_speedup;
+	int page_default;
+	bool page_visible[PAGE_CNT];
+	int refresh_delay;
+	bool show_hidden;
+	bool show_grid;
+	int tab_pos;
+} sview_config_t;
 
 typedef struct display_data display_data_t;
 typedef struct specific_info specific_info_t;
@@ -267,36 +257,27 @@ typedef struct {
 } signal_params_t;
 
 
-extern sview_parameters_t params;
-extern int text_line_cnt;
+extern sview_config_t sview_config;
 
 extern void parse_command_line(int argc, char *argv[]);
 
 extern int fini;
 extern ba_system_t *ba_system_ptr;
-extern int quiet_flag;
 extern bool toggled;
 extern bool force_refresh;
 extern List popup_list;
 extern List grid_button_list;
 extern List signal_params_list;
-extern int global_sleep_time;
-extern int global_x_width;
-extern int global_horizontal;
-extern int global_vertical;
 extern bool global_entry_changed;
 extern bool global_send_update_msg;
 extern bool global_edit_error;
-extern bool global_show_hidden;
 extern gchar *global_edit_error_msg;
-extern bool admin_mode;
 extern GtkWidget *main_statusbar;
 extern GtkWidget *main_window;
 extern GtkTable *main_grid_table;
 extern GStaticMutex sview_mutex;
 extern int cpus_per_node;
 extern int g_node_scaling;
-extern int grid_speedup;
 extern char *sview_colors[];
 extern int sview_colors_cnt;
 
@@ -312,6 +293,8 @@ extern void print_date();
 extern void refresh_main(GtkAction *action, gpointer user_data);
 extern void tab_pressed(GtkWidget *widget, GdkEventButton *event,
 			display_data_t *display_data);
+extern void close_tab(GtkWidget *widget, GdkEventButton *event,
+		      display_data_t *display_data);
 
 //popups.c
 extern void create_config_popup(GtkAction *action, gpointer user_data);