diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
index 1074ec3c22e71067f725ab94e2be2b16bdf88f8b..01cd4781fb598391e08d8261ba97a34d9675812c 100644
--- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
+++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
@@ -112,47 +112,6 @@ static int move_account(mysql_conn_t *mysql_conn, uint32_t lft, uint32_t rgt,
 			char *id, char *parent)
 {
 	int rc = SLURM_SUCCESS;
-/* 	char *query = xstrdup_printf( */
-/* 		"SELECT @parLeft := lft from %s "  */
-/* 		"where cluster='%s' && acct='%s' && user='';", */
-/* 		assoc_table, */
-/* 		cluster, parent); */
-	
-/* 	xstrfmtcat(query,  */
-/* 		   "SELECT @oldLeft := lft, @oldRight := rgt, " */
-/* 		   "@myWidth := (rgt - lft + 1), @myDiff := (@parLeft+1) - lft " */
-/* 		   "FROM %s WHERE id = %s;", */
-/* 		   assoc_table, id); */
-
-/* 	xstrfmtcat(query, */
-/* 		   "update %s set deleted = deleted + 2, " */
-/* 		   "lft = lft + @myDiff, rgt = rgt + @myDiff " */
-/* 		   "WHERE lft BETWEEN @oldLeft AND @oldRight;", */
-/* 		   assoc_table); */
-				
-/* 	xstrfmtcat(query, */
-/* 		   "UPDATE %s SET rgt = rgt + @myWidth WHERE " */
-/* 		   "rgt > @parLeft && deleted < 2;" */
-/* 		   "UPDATE %s SET lft = lft + @myWidth WHERE " */
-/* 		   "lft > @parLeft && deleted < 2;", */
-/* 		   assoc_table, */
-/* 		   assoc_table); */
-/* 	xstrfmtcat(query, */
-/* 		   "UPDATE %s SET rgt = rgt - @myWidth WHERE " */
-/* 		   "(@myDiff < 0 && rgt > @oldRight && deleted < 2) " */
-/* 		   "|| (@myDiff >= 0 && rgt > @oldLeft);" */
-/* 		   "UPDATE %s SET lft = lft - @myWidth WHERE " */
-/* 		   "(@myDiff < 0 && lft > @oldRight && deleted < 2) " */
-/* 		   "|| (@myDiff >= 0 && lft > @oldLeft);", */
-/* 		   assoc_table, */
-/* 		   assoc_table); */
-
-/* 	xstrfmtcat(query, */
-/* 		   "update %s set deleted = deleted - 2 WHERE deleted > 1;", */
-/* 		   assoc_table); */
-/* 	xstrfmtcat(query, */
-/* 		   "update %s set parent_acct='%s' where id = %s;", */
-/* 		   assoc_table, parent, id); */
 	MYSQL_RES *result = NULL;
 	MYSQL_ROW row;
 	uint32_t par_left = 0;
@@ -185,9 +144,6 @@ static int move_account(mysql_conn_t *mysql_conn, uint32_t lft, uint32_t rgt,
 		   "lft = lft + %d, rgt = rgt + %d "
 		   "WHERE lft BETWEEN %d AND %d;",
 		   assoc_table, diff, diff, lft, rgt);
-/* 	debug3("%d query\n%s", mysql_conn->conn, query); */
-/* 	rc = mysql_db_query(mysql_conn->acct_mysql_db, query); */
-/* 	xfree(query); */
 
 	xstrfmtcat(query,
 		   "UPDATE %s SET rgt = rgt + %d WHERE "
@@ -198,9 +154,6 @@ static int move_account(mysql_conn_t *mysql_conn, uint32_t lft, uint32_t rgt,
 		   par_left,
 		   assoc_table, width,
 		   par_left);
-/* 	debug3("%d query\n%s", mysql_conn->conn, query); */
-/* 	rc = mysql_db_query(mysql_conn->acct_mysql_db, query); */
-/* 	xfree(query); */
 
 	xstrfmtcat(query,
 		   "UPDATE %s SET rgt = rgt - %d WHERE "
@@ -215,9 +168,6 @@ static int move_account(mysql_conn_t *mysql_conn, uint32_t lft, uint32_t rgt,
 		   assoc_table, width,
 		   diff, rgt,
 		   diff, lft);
-/* 	debug3("%d query\n%s", mysql_conn->conn, query); */
-/* 	rc = mysql_db_query(mysql_conn->acct_mysql_db, query); */
-/* 	xfree(query); */
 
 	xstrfmtcat(query,
 		   "update %s set deleted = deleted - 2 WHERE deleted > 1;",
@@ -402,13 +352,16 @@ static int _remove_common(mysql_conn_t *mysql_conn,
 	char *query = NULL;
 	MYSQL_RES *result = NULL;
 	MYSQL_ROW row;
-//	time_t day_old = now - 86400;
+	time_t day_old = now - 86400;
 
 	/* we want to remove completely all that is less than a day old */
-/* 	query = xstrdup_printf("delete from %s where creation_time<%d " */
-/* 			       "&& (%s);", */
-/* 			       table, day_old, name_char); */
-	
+	if(table != assoc_table) {
+		query = xstrdup_printf("delete from %s where creation_time<%d "
+				       "&& (%s);",
+				       table, day_old, name_char);
+
+	}
+
 	xstrfmtcat(query,
 		   "update %s set mod_time=%d, deleted=1 "
 		   "where deleted=0 && (%s);",
@@ -433,6 +386,46 @@ static int _remove_common(mysql_conn_t *mysql_conn,
 		return SLURM_ERROR;
 	}
 
+	/* remove completely all the associations for this added in the last
+	 * day, since they are most likely nothing we really wanted in
+	 * the first place.
+	 */
+	if(table == assoc_table || !assoc_char)
+		assoc_char = name_char;
+
+	query = xstrdup_printf("select lft, rgt %s where "
+			       "creation_time<%d && (%s);",
+			       assoc_table, day_old, assoc_char);
+	if(!(result = mysql_db_query_ret(mysql_conn->acct_mysql_db,
+					 query))) {
+		xfree(query);
+		return SLURM_ERROR;
+	}
+	xfree(query);
+	
+	while((row = mysql_fetch_row(result))) {
+		int width = (atoi(row[1]) - atoi(row[0]) + 1); 
+		xstrfmtcat(query,
+			   "delete from %s where lft between %s AND %s;",
+			   assoc_table, row[0], row[1]);
+		xstrfmtcat(query,
+			   "UPDATE %s SET rgt = rgt + %d WHERE rgt > %s;"
+			   "UPDATE %s SET lft = lft + %d WHERE lft > %s;",
+			   assoc_table, width,
+			   row[1],
+			   assoc_table, width,
+			   row[1]);
+		rc = mysql_db_query(mysql_conn->acct_mysql_db, query);
+		xfree(query);
+		if(rc != SLURM_SUCCESS) {
+			error("couldn't remove assoc");
+			break;
+		}
+	}
+	mysql_free_result(result);
+	if(rc == SLURM_ERROR)
+		return rc;
+
 	if(table == assoc_table || !assoc_char)
 		return SLURM_SUCCESS;
 
@@ -3113,7 +3106,7 @@ empty:
 		/* FIX ME: ADD SUB projects here from assoc list lft
 		 * rgt */
 		
-		if(user_q->with_assocs) {
+		if(user_q && user_q->with_assocs) {
 			acct_association_cond_t *assoc_q = NULL;
 			if(!user_q->assoc_cond) {
 				user_q->assoc_cond = xmalloc(
@@ -3271,7 +3264,7 @@ empty:
 		}
 		mysql_free_result(coord_result);
 
-		if(acct_q->with_assocs) {
+		if(acct_q && acct_q->with_assocs) {
 			acct_association_cond_t *assoc_q = NULL;
 			if(!acct_q->assoc_cond) {
 				acct_q->assoc_cond = xmalloc(