diff --git a/header/vectors.h b/header/vectors.h
index 257dc2fd24bca4a96310064d7208157cc1191b18..09fdbc86b2302ef825368d4e3cbccd1678da01bf 100644
--- a/header/vectors.h
+++ b/header/vectors.h
@@ -22,5 +22,6 @@ typedef struct vector_* vector;
 vector vector_create();
 int vector_length(vector vec);
 void vector_push(vector vec, type element);
+type vector_pop(vector vec);
 
 #endif
\ No newline at end of file
diff --git a/src/test_vectors.c b/src/test_vectors.c
index 3e181f1d528596003ddea6cf9edb054e3af6d2a3..8d0e78af735eb00ca41e3ce27f8d72ab41777015 100644
--- a/src/test_vectors.c
+++ b/src/test_vectors.c
@@ -19,5 +19,12 @@ int main()
 	vector_push(test, 15);
 
 	printf("Modified Vector lenght : %d \n", vector_length(test));
+
+	type val = vector_pop(test);
+
+	printf("Modified Vector lenght : %d and the value we popped : %d \n", vector_length(test), val);
+
+	
+
 	return 0;
 }
\ No newline at end of file
diff --git a/src/vectors.c b/src/vectors.c
index 14400878c9506196193d8754032864162fa3953f..a19854c4b4d65b8e810d5505396660e4c8217ab0 100644
--- a/src/vectors.c
+++ b/src/vectors.c
@@ -39,7 +39,7 @@ void vector_push(vector vec, type element)
 	{
 		vec->content = realloc(vec->content, sizeof(type) * vec->capacity * 2);
 		assert(vec->content != NULL);
-		
+
 		vec->capacity = vec->capacity * 2;
 	}
 
@@ -47,3 +47,20 @@ void vector_push(vector vec, type element)
 	vec->length++;
 }
 
+type vector_pop(vector vec)
+{	
+	assert(vec->length > 0);
+
+	vec->length--;
+	type tmp = vec->content[vec->length];
+
+	if(vec->length < (vec->capacity / 4))
+	{
+		vec->content = realloc(vec->content, sizeof(type) * (vec->capacity / 2));
+		assert(vec->content != NULL);
+
+		vec->capacity = vec->capacity / 2;
+	} 
+
+	return tmp;
+}
\ No newline at end of file