diff --git a/include/types/stick_table.h b/include/types/stick_table.h
index bbb9d0d..de23610 100644
--- a/include/types/stick_table.h
+++ b/include/types/stick_table.h
@@ -56,8 +56,8 @@
 struct stksess {
 	int sid;                  /* id of server to use for this session */
 	unsigned int expire;      /* session expiration date */
-	struct eb32_node exps;    /* ebtree node used to hold the session in expiration tree */
-	struct ebmb_node keys;    /* ebtree node used to hold the session in table */
+	struct eb32_node exp;     /* ebtree node used to hold the session in expiration tree */
+	struct ebmb_node key;     /* ebtree node used to hold the session in table */
 	/* WARNING! do not put anything after <keys>, it's used by the key */
 };
 
diff --git a/src/stick_table.c b/src/stick_table.c
index 19cef35..099f783 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -45,10 +45,10 @@
 void stksess_setkey(struct stktable *t, struct stksess *ts, struct stktable_key *key)
 {
 	if (t->type != STKTABLE_TYPE_STRING)
-		memcpy(ts->keys.key, key->key, t->key_size);
+		memcpy(ts->key.key, key->key, t->key_size);
 	else {
-		memcpy(ts->keys.key, key->key, MIN(t->key_size - 1, key->key_len));
-		ts->keys.key[MIN(t->key_size - 1, key->key_len)] = 0;
+		memcpy(ts->key.key, key->key, MIN(t->key_size - 1, key->key_len));
+		ts->key.key[MIN(t->key_size - 1, key->key_len)] = 0;
 	}
 }
 
@@ -61,8 +61,8 @@
 {
 	memset((void *)ts - t->data_size, 0, t->data_size);
 	ts->sid = 0;
-	ts->keys.node.leaf_p = NULL;
-	ts->exps.node.leaf_p = NULL;
+	ts->key.node.leaf_p = NULL;
+	ts->exp.node.leaf_p = NULL;
 	return ts;
 }
 
@@ -91,28 +91,26 @@
 		}
 
 		/* timer looks expired, detach it from the queue */
-		ts = eb32_entry(eb, struct stksess, exps);
+		ts = eb32_entry(eb, struct stksess, exp);
 		eb = eb32_next(eb);
 
-		eb32_delete(&ts->exps);
+		eb32_delete(&ts->exp);
 
-		if (ts->expire != ts->exps.key) {
-
+		if (ts->expire != ts->exp.key) {
 			if (!tick_isset(ts->expire))
 				continue;
 
-			ts->exps.key = ts->expire;
+			ts->exp.key = ts->expire;
+			eb32_insert(&t->exps, &ts->exp);
 
-			eb32_insert(&t->exps, &ts->exps);
-
-			if (!eb || eb->key > ts->exps.key)
-				eb = &ts->exps;
+			if (!eb || eb->key > ts->exp.key)
+				eb = &ts->exp;
 
 			continue;
 		}
 
 		/* session expired, trash it */
-		ebmb_delete(&ts->keys);
+		ebmb_delete(&ts->key);
 		stksess_free(t, ts);
 		batched++;
 	}
@@ -166,7 +164,7 @@
 		return NULL;
 	}
 
-	return ebmb_entry(eb, struct stksess, keys);
+	return ebmb_entry(eb, struct stksess, key);
 }
 
 /* Try to store sticky session <ts> in the table. If another entry already
@@ -181,17 +179,17 @@
 	struct ebmb_node *eb;
 
 	if (t->type == STKTABLE_TYPE_STRING)
-		eb = ebst_lookup(&(t->keys), (char *)ts->keys.key);
+		eb = ebst_lookup(&(t->keys), (char *)ts->key.key);
 	else
-		eb = ebmb_lookup(&(t->keys), ts->keys.key, t->key_size);
+		eb = ebmb_lookup(&(t->keys), ts->key.key, t->key_size);
 
 	if (unlikely(!eb)) {
 		/* no existing session, insert ours */
 		ts->sid = sid;
-		ebmb_insert(&t->keys, &ts->keys, t->key_size);
+		ebmb_insert(&t->keys, &ts->key, t->key_size);
 
-		ts->exps.key = ts->expire = tick_add(now_ms, MS_TO_TICKS(t->expire));
-		eb32_insert(&t->exps, &ts->exps);
+		ts->exp.key = ts->expire = tick_add(now_ms, MS_TO_TICKS(t->expire));
+		eb32_insert(&t->exps, &ts->exp);
 
 		if (t->expire) {
 			t->exp_task->expire = t->exp_next = tick_first(ts->expire, t->exp_next);
@@ -200,7 +198,7 @@
 		return 0;
 	}
 
-	ts = ebmb_entry(eb, struct stksess, keys);
+	ts = ebmb_entry(eb, struct stksess, key);
 
 	if ( ts->sid != sid )
 		ts->sid = sid;
@@ -236,25 +234,25 @@
 		}
 
 		/* timer looks expired, detach it from the queue */
-		ts = eb32_entry(eb, struct stksess, exps);
+		ts = eb32_entry(eb, struct stksess, exp);
 		eb = eb32_next(eb);
 
-		eb32_delete(&ts->exps);
+		eb32_delete(&ts->exp);
 
 		if (!tick_is_expired(ts->expire, now_ms)) {
 			if (!tick_isset(ts->expire))
 				continue;
 
-			ts->exps.key = ts->expire;
-			eb32_insert(&t->exps, &ts->exps);
+			ts->exp.key = ts->expire;
+			eb32_insert(&t->exps, &ts->exp);
 
-			if (!eb || eb->key > ts->exps.key)
-				eb = &ts->exps;
+			if (!eb || eb->key > ts->exp.key)
+				eb = &ts->exp;
 			continue;
 		}
 
 		/* session expired, trash it */
-		ebmb_delete(&ts->keys);
+		ebmb_delete(&ts->key);
 		stksess_free(t, ts);
 	}
 
