diff --git a/vector.c b/vector.c
index 34e3cab033a86b99146ccc339112b13fdb20cfe2..b48e35d67b4f5cfdb75e4b649e99e285125e7477 100644
--- a/vector.c
+++ b/vector.c
@@ -48,7 +48,7 @@ void vector_push(vector *v, type item)
 void vector_pop(vector *v, type item)
 {
     assert(v->length>0);
-    if (v->length-1 == v->capacity/2)
+    if (v->length-1 == v->capacity/4)
     {
         v->capacity /=2;
         v->data = realloc(v->data, v->capacity * sizeof(type));
@@ -104,9 +104,11 @@ void vector_insert(vector *v, type element, int index)
 
 void vector_empty(vector *v)
 {
-    free(v->data);
-    vector v2 = vector_create();
-    v = &v2;
+    for (int i = v->length; i > 0; i--)
+    {
+        vector_remove(v, i);
+    }
+    v->data = realloc(v->data, VECTOR_INIT_CAPACITY * sizeof(type));
 }
 
 void vector_free(vector *v)
@@ -123,7 +125,7 @@ void vector_print(vector *v, void (*print)(type))
         print(v->data[i]);
         printf(",");
     }
-    printf("]"); 
+    printf("]\n"); 
 }
 
 vector vector_map(vector *v, type (*f)(type))