diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..5761abcfdf0c26a75374c945dfe366eaeee04285
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.o
diff --git a/python-c-api_solution/demolib.c b/python-c-api_solution/demolib.c
index 39d66e9af907677bc27a2a1d813ac14276572141..fcb2dbaa941b2f1fec08a3530b27edc7989f308b 100644
--- a/python-c-api_solution/demolib.c
+++ b/python-c-api_solution/demolib.c
@@ -8,6 +8,12 @@ int add_number(int number_1, int number_2) {
     return result;
 }
 
+int multiply_number(int number_1, int number_2) {
+    int result = number_1 * number_2;
+    return result;
+}
+
+
 // https://stackoverflow.com/questions/8465006/how-do-i-concatenate-two-strings-in-c
 
 char* make_str(const char *s1, const char *s2) {
@@ -17,8 +23,10 @@ char* make_str(const char *s1, const char *s2) {
     return result;
 }
 
-int add_number_using_pointer() {
-    
+int add_number_using_pointer(int (*pf)(int, int), int number_1, int number_2) {
+    int result;
+    result = pf(number_1, number_2);
+    return result;
 }
 
 
diff --git a/python-c-api_solution/demolib.h b/python-c-api_solution/demolib.h
index 17ce34495fadd00e04318dd51f8ff79e87c4a898..16b5644b2cb479dc909384903eb6d2ea9563ce21 100644
--- a/python-c-api_solution/demolib.h
+++ b/python-c-api_solution/demolib.h
@@ -3,4 +3,6 @@
 // char construct_string(int number);
 
 int add_number(int number_1, int number_2);
-char* make_str(const char *s1, const char *s2);
\ No newline at end of file
+char* make_str(const char *s1, const char *s2);
+int add_number_using_pointer(int (*pf)(int, int), int number_1, int number_2);
+int multiply_number(int number_1, int number_2);
\ No newline at end of file
diff --git a/python-c-api_solution/demolib.o b/python-c-api_solution/demolib.o
index 5896b43ecea3a7fb3097c0b062930226d5bc57dd..ffc6c06f550025b0a750c2196115c828d48087e8 100644
Binary files a/python-c-api_solution/demolib.o and b/python-c-api_solution/demolib.o differ
diff --git a/python-c-api_solution/main.c b/python-c-api_solution/main.c
index 3e05435dd83c83c6d64510c136a6106a241cd953..27d24aa9d22c89ba889d0551a5987a91093fcb2a 100644
--- a/python-c-api_solution/main.c
+++ b/python-c-api_solution/main.c
@@ -1,7 +1,12 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include "demolib.h"
 
 
+
+
+
+
 int main(void) {
     // Testing stuff for add_number function
     int getal_1=2;
@@ -9,7 +14,7 @@ int main(void) {
 
     int result;
     result = add_number(getal_1, getal_2);
-    printf("%d\n", result);
+    printf("result of adding numbers: %d\n", result);
     //
 
 
@@ -19,13 +24,41 @@ int main(void) {
 
     char* s = make_str(str_1, str_2);
     // do things with s
-    printf("%s\n", s);
+    printf("result of concatting strings: %s\n", s);
 
     free(s); // deallocate the string
     // 
 
-    // testing stuff to 
-    
+    // testing stuff to use a pointer to use a function
+    int (*pf)(int, int);
+    int pointer_res;
+
+    pf = &add_number;
+    pointer_res = (pf)(5, 9);
+    printf("result of using a pointer to the add_number function: %d\n", pointer_res);
+    // 
+
+    // testing stuff to pass a pointer to a function that consecutively uses that pointer to add stuff
+    int (*pf2)(int, int);
+    int function_via_pointer_res;
+
+    pf2 = &add_number;
+    function_via_pointer_res = add_number_using_pointer(pf2, 10, 20);
+    printf("result of calling a function with a function pointer to add_number: %d\n", function_via_pointer_res);
+
+    int (*pf3)(int, int);
+    int function_via_pointer_res_2;
+
+    pf3 = &multiply_number;
+    function_via_pointer_res_2 = add_number_using_pointer(pf3, 10, 20);
+    printf("result of calling a function with a function pointer to multiply_number: %d\n", function_via_pointer_res_2);
+
+
+    //
+
+
+
+
 
 
 
diff --git a/python-c-api_solution/main.o b/python-c-api_solution/main.o
index e29df7dd325a7b1a79365f68f3ad84979b8f9351..da6dae0c35829ddfa9513192e590a17c9e87cb85 100644
Binary files a/python-c-api_solution/main.o and b/python-c-api_solution/main.o differ
diff --git a/python-c-api_solution/test_script b/python-c-api_solution/test_script
index f97b74885b85f148dd55b72354cc0b1763672653..ba528aa60114d74a4dd2597f43a6fbfa1838d331 100755
Binary files a/python-c-api_solution/test_script and b/python-c-api_solution/test_script differ