diff --git a/Hashtable.c b/Hashtable.c
index cfd1470..057518c 100644
--- a/Hashtable.c
+++ b/Hashtable.c
@@ -34,7 +34,7 @@
 
 #ifdef DEBUG
 
-bool Hashtable_isConsistent(Hashtable* this) {
+static bool Hashtable_isConsistent(Hashtable* this) {
    int items = 0;
    for (int i = 0; i < this->size; i++) {
       HashtableItem* bucket = this->buckets[i];
@@ -61,7 +61,7 @@
 
 #endif
 
-HashtableItem* HashtableItem_new(unsigned int key, void* value) {
+static HashtableItem* HashtableItem_new(unsigned int key, void* value) {
    HashtableItem* this;
    
    this = (HashtableItem*) malloc(sizeof(HashtableItem));
@@ -99,11 +99,6 @@
    free(this);
 }
 
-inline int Hashtable_size(Hashtable* this) {
-   assert(Hashtable_isConsistent(this));
-   return this->items;
-}
-
 void Hashtable_put(Hashtable* this, unsigned int key, void* value) {
    unsigned int index = key % this->size;
    HashtableItem** bucketPtr = &(this->buckets[index]);
