diff --git a/include/mbedtls/aead_chacha20_poly1305.h b/include/mbedtls/aead_chacha20_poly1305.h
index 6c8e420..6f7ab6f 100644
--- a/include/mbedtls/aead_chacha20_poly1305.h
+++ b/include/mbedtls/aead_chacha20_poly1305.h
@@ -29,11 +29,6 @@
 #include MBEDTLS_CONFIG_FILE
 #endif
 
-#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT)
-
-#include "chacha20.h"
-#include "poly1305.h"
-
 #define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */
 #define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE      -0x00049 /**< The requested operation is not permitted in the current state */
 
@@ -44,6 +39,11 @@
 }
 mbedtls_aead_chacha20_poly1305_mode_t;
 
+#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT)
+
+#include "chacha20.h"
+#include "poly1305.h"
+
 typedef struct
 {
     mbedtls_chacha20_context chacha20_ctx;      /** ChaCha20 context */
@@ -55,6 +55,10 @@
 }
 mbedtls_aead_chacha20_poly1305_context;
 
+#else /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */
+#include "aead_chacha20_poly1305_alt.h"
+#endif /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */
+
 /**
  * \brief               Initialize ChaCha20-Poly1305 context
  *
@@ -183,10 +187,6 @@
 int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_context *ctx,
                                            unsigned char mac[16] );
 
-#else /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */
-#include "aead_chacha20_poly1305_alt.h"
-#endif /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */
-
 /**
  * \brief               Encrypt or decrypt data, and produce a MAC with ChaCha20-Poly1305.
  *
diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h
index ccce122..a2856a7 100644
--- a/include/mbedtls/chacha20.h
+++ b/include/mbedtls/chacha20.h
@@ -31,13 +31,13 @@
 #include MBEDTLS_CONFIG_FILE
 #endif
 
-#if !defined(MBEDTLS_CHACHA20_ALT)
-
 #include <stdint.h>
 #include <stddef.h>
 
 #define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x003B /**< Invalid input parameter(s). */
 
+#if !defined(MBEDTLS_CHACHA20_ALT)
+
 typedef struct
 {
     uint32_t initial_state[16];  /*! Holds the initial state (before round operations) */
@@ -47,6 +47,10 @@
 }
 mbedtls_chacha20_context;
 
+#else  /* MBEDTLS_CHACHA20_ALT */
+#include "chacha20_alt.h"
+#endif /* MBEDTLS_CHACHA20_ALT */
+
 /**
  * \brief           Initialize ChaCha20 context
  *
@@ -149,10 +153,6 @@
                               const unsigned char *input,
                               unsigned char *output );
 
-#else  /* MBEDTLS_CHACHA20_ALT */
-#include "chacha20_alt.h"
-#endif /* MBEDTLS_CHACHA20_ALT */
-
 /**
  * \brief           Encrypt or decrypt a message using ChaCha20.
  *
diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h
index ea9364a..915f8ab 100644
--- a/include/mbedtls/poly1305.h
+++ b/include/mbedtls/poly1305.h
@@ -32,10 +32,10 @@
 #include <stdint.h>
 #include <stddef.h>
 
-#if !defined(MBEDTLS_POLY1305_ALT)
-
 #define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0041 /**< Invalid input parameter(s). */
 
+#if !defined(MBEDTLS_POLY1305_ALT)
+
 typedef struct
 {
     uint32_t r[4];      /** Stores the value for 'r' (low 128 bits of the key) */
@@ -46,6 +46,10 @@
 }
 mbedtls_poly1305_context;
 
+#else  /* MBEDTLS_POLY1305_ALT */
+#include "poly1305_alt.h"
+#endif /* MBEDTLS_POLY1305_ALT */
+
 /**
  * \brief               Initialize a Poly1305 context
  *
@@ -109,10 +113,6 @@
 int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx,
                              unsigned char mac[16] );
 
-#else  /* MBEDTLS_POLY1305_ALT */
-#include "poly1305_alt.h"
-#endif /* MBEDTLS_POLY1305_ALT */
-
 /**
  * \brief               Generate the Poly1305 MAC of some data with the given key.
  *
diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c
index 8d7b63a..2e07f1e 100644
--- a/library/aead_chacha20_poly1305.c
+++ b/library/aead_chacha20_poly1305.c
@@ -291,8 +291,6 @@
     return( 0 );
 }
 
-#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */
-
 int mbedtls_aead_chacha20_poly1305_crypt_and_mac ( const unsigned char key[32],
                                                     const unsigned char nonce[12],
                                                     mbedtls_aead_chacha20_poly1305_mode_t mode,
@@ -331,6 +329,8 @@
     return( result );
 }
 
+#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */
+
 #if defined(MBEDTLS_SELF_TEST)
 
 static const unsigned char test_key[1][32] =
diff --git a/library/chacha20.c b/library/chacha20.c
index 4c2d8ef..5d2c3e5 100644
--- a/library/chacha20.c
+++ b/library/chacha20.c
@@ -354,8 +354,6 @@
     return( 0 );
 }
 
-#endif /* !MBEDTLS_CHACHA20_ALT */
-
 int mbedtls_chacha20_crypt( const unsigned char key[32],
                             const unsigned char nonce[12],
                             uint32_t counter,
@@ -383,6 +381,8 @@
     return( result );
 }
 
+#endif /* !MBEDTLS_CHACHA20_ALT */
+
 #if defined(MBEDTLS_SELF_TEST)
 
 static const unsigned char test_keys[2][32] =
diff --git a/library/poly1305.c b/library/poly1305.c
index 842a4d4..6acbc7f 100644
--- a/library/poly1305.c
+++ b/library/poly1305.c
@@ -390,8 +390,6 @@
     return( 0 );
 }
 
-#endif /* MBEDTLS_POLY1305_ALT */
-
 int mbedtls_poly1305_mac( const unsigned char key[32],
                            size_t ilen,
                            const unsigned char *input,
@@ -417,6 +415,8 @@
     return( 0 );
 }
 
+#endif /* MBEDTLS_POLY1305_ALT */
+
 #if defined(MBEDTLS_SELF_TEST)
 
 static const unsigned char test_keys[2][32] =
