diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function
index 4efa1e9..0172de6 100644
--- a/tests/suites/test_suite_debug.function
+++ b/tests/suites/test_suite_debug.function
@@ -45,7 +45,7 @@
     struct buffer_data buffer;
     mpi val;
 
-    mpi_init( &val, NULL );
+    mpi_init( &val );
 
     memset( &ssl, 0, sizeof( ssl_context ) );
     memset( buffer.buf, 0, 2000 );
@@ -57,6 +57,8 @@
     debug_print_mpi( &ssl, 0, {file}, {line}, {prefix}, &val);
 
     TEST_ASSERT( strcmp( buffer.buf, {result_str} ) == 0 );
+
+    mpi_free( &val );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index 7755ab2..c31589e 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -18,7 +18,7 @@
     char str[1000];
     size_t len = {output_size};
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == {result_read} );
     if( {result_read} == 0 )
@@ -29,6 +29,8 @@
             TEST_ASSERT( strcasecmp( str, {input_A} ) == 0 );
         }
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -41,13 +43,15 @@
     size_t len = 1000;
     size_t input_len;
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     input_len = unhexify( buf, {input_X} );
 
     TEST_ASSERT( mpi_read_binary( &X, buf, input_len ) == 0 );
     TEST_ASSERT( mpi_write_string( &X, {radix_A}, (char *) str, &len ) == 0 );
     TEST_ASSERT( strcmp( (char *) str, {input_A} ) == 0 );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -62,7 +66,7 @@
     memset( buf, 0x00, 1000 );
     memset( str, 0x00, 1000 );
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     
@@ -77,6 +81,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) str, {input_A} ) == 0 );
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -92,7 +98,7 @@
     memset( buf, 0x00, 1000 );
     memset( str, 0x00, 1000 );
 
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     file = fopen( {input_file}, "r" );
     TEST_ASSERT( mpi_read_file( &X, {radix_X}, file ) == {result} );
@@ -107,6 +113,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) str, {input_A} ) == 0 );
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -116,7 +124,7 @@
     mpi X, Y;
     FILE *file_out, *file_in;
 
-    mpi_init( &X, &Y, NULL );
+    mpi_init( &X ); mpi_init( &Y );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
 
@@ -129,6 +137,8 @@
     fclose(file_in);
 
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y );
 }
 END_CASE
 
@@ -136,10 +146,12 @@
 mpi_lsb:radix_X:input_X:nr_bits
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_lsb( &X ) == {nr_bits} );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -147,10 +159,12 @@
 mpi_msb:radix_X:input_X:nr_bits
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_msb( &X ) == {nr_bits} );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -158,13 +172,15 @@
 mpi_gcd:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi A, X, Y, Z;
-    mpi_init(&A, &X, &Y, &Z, NULL);
+    mpi_init( &A ); mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_gcd( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &A ); mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z );
 }
 END_CASE
 
@@ -172,10 +188,12 @@
 mpi_cmp_int:input_X:input_A:result_CMP
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X  );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0);
     TEST_ASSERT( mpi_cmp_int( &X, {input_A} ) == {result_CMP});
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -183,11 +201,13 @@
 mpi_cmp_mpi:radix_X:input_X:radix_Y:input_Y:input_A
 {
     mpi X, Y;
-    mpi_init(&X, &Y, NULL);
+    mpi_init( &X ); mpi_init( &Y );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == {input_A} );
+
+    mpi_free( &X ); mpi_free( &Y );
 }
 END_CASE
 
@@ -195,11 +215,13 @@
 mpi_cmp_abs:radix_X:input_X:radix_Y:input_Y:input_A
 {
     mpi X, Y;
-    mpi_init(&X, &Y, NULL);
+    mpi_init( &X ); mpi_init( &Y );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_abs( &X, &Y ) == {input_A} );
+
+    mpi_free( &X ); mpi_free( &Y );
 }
 END_CASE
 
@@ -207,7 +229,7 @@
 mpi_copy:input_X:input_A
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
     TEST_ASSERT( mpi_lset( &Y, {input_A} ) == 0 );
@@ -217,6 +239,8 @@
     TEST_ASSERT( mpi_copy( &Y, &X ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Y, &A ) != 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -224,11 +248,13 @@
 mpi_copy_self:input_X
 {
     mpi X;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
     TEST_ASSERT( mpi_copy( &X, &X ) == 0 );
     TEST_ASSERT( mpi_cmp_int( &X, {input_X} ) == 0 );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -236,7 +262,7 @@
 mpi_swap:input_X:input_Y
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_lset( &X, {input_X} ) == 0 );
     TEST_ASSERT( mpi_lset( &Y, {input_Y} ) == 0 );
@@ -246,6 +272,8 @@
     mpi_swap( &X, &Y );
     TEST_ASSERT( mpi_cmp_mpi( &X, &Y ) != 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Y, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -253,13 +281,15 @@
 mpi_add_mpi:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_mpi( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -267,13 +297,15 @@
 mpi_add_abs:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_abs( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -281,13 +313,15 @@
 mpi_add_abs_add_first:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_abs( &X, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -295,13 +329,15 @@
 mpi_add_abs_add_second:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, A;
-    mpi_init(&X, &Y, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_abs( &Y, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Y, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &A );
 }
 END_CASE
 
@@ -309,12 +345,14 @@
 mpi_add_int:radix_X:input_X:input_Y:radix_A:input_A
 {
     mpi X, Z, A;
-    mpi_init(&X, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_add_int( &Z, &X, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -322,13 +360,15 @@
 mpi_sub_mpi:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_sub_mpi( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -337,7 +377,7 @@
 {
     mpi X, Y, Z, A;
     int res;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -347,6 +387,8 @@
     TEST_ASSERT( res == {sub_result} );
     if( res == 0 )
         TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -354,12 +396,14 @@
 mpi_sub_int:radix_X:input_X:input_Y:radix_A:input_A
 {
     mpi X, Z, A;
-    mpi_init(&X, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_sub_int( &Z, &X, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -367,13 +411,15 @@
 mpi_mul_mpi:radix_X:input_X:radix_Y:input_Y:radix_A:input_A
 {
     mpi X, Y, Z, A;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_mul_mpi( &Z, &X, &Y ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -381,12 +427,14 @@
 mpi_mul_int:radix_X:input_X:input_Y:radix_A:input_A:result_comparison
 {
     mpi X, Z, A;
-    mpi_init(&X, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_mul_int( &Z, &X, {input_Y} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) {result_comparison} 0 );
+
+    mpi_free( &X ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -395,7 +443,8 @@
 {
     mpi X, Y, Q, R, A, B;
     int res;
-    mpi_init(&X, &Y, &Q, &R, &A, &B, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Q ); mpi_init( &R );
+    mpi_init( &A ); mpi_init( &B );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -408,6 +457,9 @@
         TEST_ASSERT( mpi_cmp_mpi( &Q, &A ) == 0 );
         TEST_ASSERT( mpi_cmp_mpi( &R, &B ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Q ); mpi_free( &R );
+    mpi_free( &A ); mpi_free( &B );
 }
 END_CASE
 
@@ -416,7 +468,8 @@
 {
     mpi X, Q, R, A, B;
     int res;
-    mpi_init(&X, &Q, &R, &A, &B, NULL);
+    mpi_init( &X ); mpi_init( &Q ); mpi_init( &R ); mpi_init( &A );
+    mpi_init( &B );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
@@ -428,6 +481,9 @@
         TEST_ASSERT( mpi_cmp_mpi( &Q, &A ) == 0 );
         TEST_ASSERT( mpi_cmp_mpi( &R, &B ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Q ); mpi_free( &R ); mpi_free( &A );
+    mpi_free( &B );
 }
 END_CASE
 
@@ -436,7 +492,7 @@
 {
     mpi X, Y, Z, A;
     int res;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -447,6 +503,8 @@
     {
         TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -456,7 +514,7 @@
     mpi X;
     int res;
     t_uint r;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     res = mpi_mod_int( &r, &X, {input_Y} );
@@ -465,6 +523,8 @@
     {
         TEST_ASSERT( r == {input_A} );
     }
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -473,7 +533,8 @@
 {
     mpi A, E, N, RR, Z, X;
     int res;
-    mpi_init(&A, &E, &N, &RR, &Z, &X, NULL);
+    mpi_init( &A  ); mpi_init( &E ); mpi_init( &N );
+    mpi_init( &RR ); mpi_init( &Z ); mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_read_string( &E, {radix_E}, {input_E} ) == 0 );
@@ -489,6 +550,9 @@
     {
         TEST_ASSERT( mpi_cmp_mpi( &Z, &X ) == 0 );
     }
+
+    mpi_free( &A  ); mpi_free( &E ); mpi_free( &N );
+    mpi_free( &RR ); mpi_free( &Z ); mpi_free( &X );
 }
 END_CASE
 
@@ -497,7 +561,7 @@
 {
     mpi X, Y, Z, A;
     int res;
-    mpi_init(&X, &Y, &Z, &A, NULL);
+    mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &Y, {radix_Y}, {input_Y} ) == 0 );
@@ -508,6 +572,8 @@
     {
         TEST_ASSERT( mpi_cmp_mpi( &Z, &A ) == 0 );
     }
+
+    mpi_free( &X ); mpi_free( &Y ); mpi_free( &Z ); mpi_free( &A );
 }
 END_CASE
 
@@ -516,11 +582,13 @@
 {
     mpi X;
     int res;
-    mpi_init(&X, NULL);
+    mpi_init( &X );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     res = mpi_is_prime( &X, myrand, NULL );
     TEST_ASSERT( res == {div_result} );
+
+    mpi_free( &X );
 }
 END_CASE
 
@@ -528,12 +596,14 @@
 mpi_shift_l:radix_X:input_X:shift_X:radix_A:input_A
 {
     mpi X, A;
-    mpi_init(&X, &A, NULL);
+    mpi_init( &X ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_shift_l( &X, {shift_X} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &A );
 }
 END_CASE
 
@@ -541,12 +611,14 @@
 mpi_shift_r:radix_X:input_X:shift_X:radix_A:input_A
 {
     mpi X, A;
-    mpi_init(&X, &A, NULL);
+    mpi_init( &X ); mpi_init( &A );
 
     TEST_ASSERT( mpi_read_string( &X, {radix_X}, {input_X} ) == 0 );
     TEST_ASSERT( mpi_read_string( &A, {radix_A}, {input_A} ) == 0 );
     TEST_ASSERT( mpi_shift_r( &X, {shift_X} ) == 0 );
     TEST_ASSERT( mpi_cmp_mpi( &X, &A ) == 0 );
+
+    mpi_free( &X ); mpi_free( &A );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function
index aa85f75..53b97b2 100644
--- a/tests/suites/test_suite_pkcs1_v21.function
+++ b/tests/suites/test_suite_pkcs1_v21.function
@@ -58,7 +58,7 @@
     size_t output_len;
     size_t msg_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, RSA_PKCS_V21, {hash} );
 
     memset( message_str, 0x00, 1000 );
@@ -91,6 +91,8 @@
 
         TEST_ASSERT( strncasecmp( (char *) output_str, {result_hex_str}, strlen( {result_hex_str} ) ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -111,7 +113,7 @@
     info.buf = rnd_buf;
     info.per_call = 1;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, RSA_PKCS_V21, {hash} );
 
     memset( message_str, 0x00, 1000 );
@@ -185,6 +187,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function
index 832b5d9..2ac03b8 100644
--- a/tests/suites/test_suite_rsa.function
+++ b/tests/suites/test_suite_rsa.function
@@ -28,7 +28,7 @@
     mpi P1, Q1, H, G;
     int msg_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -102,6 +102,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -184,7 +186,7 @@
     mpi P1, Q1, H, G;
     int msg_len, hash_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -217,6 +219,8 @@
     hexify( output_str, output, ctx.len );
 
     TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -325,7 +329,7 @@
     mpi P1, Q1, H, G;
     size_t output_len;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, {padding_mode}, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -359,6 +363,8 @@
 
         TEST_ASSERT( strncasecmp( (char *) output_str, {result_hex_str}, strlen( {result_hex_str} ) ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
@@ -402,7 +408,7 @@
     rsa_context ctx;
     mpi P1, Q1, H, G;
 
-    mpi_init( &P1, &Q1, &H, &G, NULL );
+    mpi_init( &P1 ); mpi_init( &Q1 ); mpi_init( &H ); mpi_init( &G );
     rsa_init( &ctx, RSA_PKCS_V15, 0 );
 
     memset( message_str, 0x00, 1000 );
@@ -435,6 +441,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
 }
 END_CASE
 
