diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c
index 9869cc4..5058cff 100644
--- a/programs/test/benchmark.c
+++ b/programs/test/benchmark.c
@@ -26,17 +26,17 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "xyssl/config.h"
+#include "polarssl/config.h"
 
-#include "xyssl/md4.h"
-#include "xyssl/md5.h"
-#include "xyssl/sha1.h"
-#include "xyssl/sha2.h"
-#include "xyssl/arc4.h"
-#include "xyssl/des.h"
-#include "xyssl/aes.h"
-#include "xyssl/rsa.h"
-#include "xyssl/timing.h"
+#include "polarssl/md4.h"
+#include "polarssl/md5.h"
+#include "polarssl/sha1.h"
+#include "polarssl/sha2.h"
+#include "polarssl/arc4.h"
+#include "polarssl/des.h"
+#include "polarssl/aes.h"
+#include "polarssl/rsa.h"
+#include "polarssl/timing.h"
 
 #define BUFSIZE 1024
 
@@ -55,17 +55,17 @@
     int keysize;
     unsigned long i, j, tsc;
     unsigned char tmp[32];
-#if defined(XYSSL_ARC4_C)
+#if defined(POLARSSL_ARC4_C)
     arc4_context arc4;
 #endif
-#if defined(XYSSL_DES_C)
+#if defined(POLARSSL_DES_C)
     des3_context des3;
     des_context des;
 #endif
-#if defined(XYSSL_AES_C)
+#if defined(POLARSSL_AES_C)
     aes_context aes;
 #endif
-#if defined(XYSSL_RSA_C)
+#if defined(POLARSSL_RSA_C)
     rsa_context rsa;
 #endif
 
@@ -73,7 +73,7 @@
 
     printf( "\n" );
 
-#if defined(XYSSL_MD4_C)
+#if defined(POLARSSL_MD4_C)
     printf( "  MD4       :  " );
     fflush( stdout );
 
@@ -89,7 +89,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(XYSSL_MD5_C)
+#if defined(POLARSSL_MD5_C)
     printf( "  MD5       :  " );
     fflush( stdout );
 
@@ -105,7 +105,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(XYSSL_SHA1_C)
+#if defined(POLARSSL_SHA1_C)
     printf( "  SHA-1     :  " );
     fflush( stdout );
 
@@ -121,7 +121,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(XYSSL_SHA2_C)
+#if defined(POLARSSL_SHA2_C)
     printf( "  SHA-256   :  " );
     fflush( stdout );
 
@@ -137,7 +137,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(XYSSL_ARC4_C)
+#if defined(POLARSSL_ARC4_C)
     printf( "  ARC4      :  " );
     fflush( stdout );
 
@@ -155,7 +155,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(XYSSL_DES_C)
+#if defined(POLARSSL_DES_C)
     printf( "  3DES      :  " );
     fflush( stdout );
 
@@ -189,7 +189,7 @@
                     ( hardclock() - tsc ) / ( j * BUFSIZE ) );
 #endif
 
-#if defined(XYSSL_AES_C)
+#if defined(POLARSSL_AES_C)
     for( keysize = 128; keysize <= 256; keysize += 64 )
     {
         printf( "  AES-%d   :  ", keysize );
@@ -213,7 +213,7 @@
     }
 #endif
 
-#if defined(XYSSL_RSA_C)
+#if defined(POLARSSL_RSA_C)
     rsa_init( &rsa, RSA_PKCS_V15, 0, myrand, NULL );
     rsa_gen_key( &rsa, 1024, 65537 );
 
diff --git a/programs/test/selftest.c b/programs/test/selftest.c
index 6fc0e1f..cf77939 100644
--- a/programs/test/selftest.c
+++ b/programs/test/selftest.c
@@ -25,21 +25,21 @@
 #include <string.h>
 #include <stdio.h>
 
-#include "xyssl/config.h"
+#include "polarssl/config.h"
 
-#include "xyssl/md2.h"
-#include "xyssl/md4.h"
-#include "xyssl/md5.h"
-#include "xyssl/sha1.h"
-#include "xyssl/sha2.h"
-#include "xyssl/sha4.h"
-#include "xyssl/arc4.h"
-#include "xyssl/des.h"
-#include "xyssl/aes.h"
-#include "xyssl/base64.h"
-#include "xyssl/bignum.h"
-#include "xyssl/rsa.h"
-#include "xyssl/x509.h"
+#include "polarssl/md2.h"
+#include "polarssl/md4.h"
+#include "polarssl/md5.h"
+#include "polarssl/sha1.h"
+#include "polarssl/sha2.h"
+#include "polarssl/sha4.h"
+#include "polarssl/arc4.h"
+#include "polarssl/des.h"
+#include "polarssl/aes.h"
+#include "polarssl/base64.h"
+#include "polarssl/bignum.h"
+#include "polarssl/rsa.h"
+#include "polarssl/x509.h"
 
 int main( int argc, char *argv[] )
 {
@@ -53,67 +53,67 @@
         printf( "\n" );
     }
 
-#if defined(XYSSL_MD2_C)
+#if defined(POLARSSL_MD2_C)
     if( ( ret = md2_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_MD4_C)
+#if defined(POLARSSL_MD4_C)
     if( ( ret = md4_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_MD5_C)
+#if defined(POLARSSL_MD5_C)
     if( ( ret = md5_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_SHA1_C)
+#if defined(POLARSSL_SHA1_C)
     if( ( ret = sha1_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_SHA2_C)
+#if defined(POLARSSL_SHA2_C)
     if( ( ret = sha2_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_SHA4_C)
+#if defined(POLARSSL_SHA4_C)
     if( ( ret = sha4_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_ARC4_C)
+#if defined(POLARSSL_ARC4_C)
     if( ( ret = arc4_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_DES_C)
+#if defined(POLARSSL_DES_C)
     if( ( ret = des_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_AES_C)
+#if defined(POLARSSL_AES_C)
     if( ( ret = aes_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_BASE64_C)
+#if defined(POLARSSL_BASE64_C)
     if( ( ret = base64_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_BIGNUM_C)
+#if defined(POLARSSL_BIGNUM_C)
     if( ( ret = mpi_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_RSA_C)
+#if defined(POLARSSL_RSA_C)
     if( ( ret = rsa_self_test( v ) ) != 0 )
         return( ret );
 #endif
 
-#if defined(XYSSL_X509_C)
+#if defined(POLARSSL_X509_C)
     if( ( ret = x509_self_test( v ) ) != 0 )
         return( ret );
 #endif
diff --git a/programs/test/ssl_test.c b/programs/test/ssl_test.c
index 44ff7d8..ebf2be9 100644
--- a/programs/test/ssl_test.c
+++ b/programs/test/ssl_test.c
@@ -26,11 +26,11 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "xyssl/net.h"
-#include "xyssl/ssl.h"
-#include "xyssl/havege.h"
-#include "xyssl/timing.h"
-#include "xyssl/certs.h"
+#include "polarssl/net.h"
+#include "polarssl/ssl.h"
+#include "polarssl/havege.h"
+#include "polarssl/timing.h"
+#include "polarssl/certs.h"
 
 #define OPMODE_NONE             0
 #define OPMODE_CLIENT           1
@@ -281,14 +281,14 @@
                 offset_to_write += ret;
             }
 
-            if( ret == XYSSL_ERR_SSL_PEER_CLOSE_NOTIFY ||
-                ret == XYSSL_ERR_NET_CONN_RESET )
+            if( ret == POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY ||
+                ret == POLARSSL_ERR_NET_CONN_RESET )
             {
                 ret = 0;
                 goto exit;
             }
 
-            if( ret < 0 && ret != XYSSL_ERR_NET_TRY_AGAIN )
+            if( ret < 0 && ret != POLARSSL_ERR_NET_TRY_AGAIN )
             {
                 printf( "  ! ssl_write returned %d\n\n", ret );
                 break;
@@ -324,14 +324,14 @@
                 offset_to_read += ret;
             }
 
-            if( ret == XYSSL_ERR_SSL_PEER_CLOSE_NOTIFY ||
-                ret == XYSSL_ERR_NET_CONN_RESET )
+            if( ret == POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY ||
+                ret == POLARSSL_ERR_NET_CONN_RESET )
             {
                 ret = 0;
                 goto exit;
             }
 
-            if( ret < 0 && ret != XYSSL_ERR_NET_TRY_AGAIN )
+            if( ret < 0 && ret != POLARSSL_ERR_NET_TRY_AGAIN )
             {
                 printf( "  ! ssl_read returned %d\n\n", ret );
                 break;
