diff --git a/library/ctr_drbg.c b/library/ctr_drbg.c
index e14ccdd..a604ec0 100644
--- a/library/ctr_drbg.c
+++ b/library/ctr_drbg.c
@@ -152,11 +152,8 @@
      *     (Total is padded to a multiple of 16-bytes with zeroes)
      */
     p = buf + MBEDTLS_CTR_DRBG_BLOCKSIZE;
-    *p++ = MBEDTLS_BYTE_3( data_len );
-    *p++ = MBEDTLS_BYTE_2( data_len );
-    *p++ = MBEDTLS_BYTE_1( data_len );
-    *p++ = MBEDTLS_BYTE_0( data_len );
-    p += 3;
+    MBEDTLS_PUT_UINT32_BE( data_len, p, 0);
+    p += 4 + 3;
     *p++ = MBEDTLS_CTR_DRBG_SEEDLEN;
     memcpy( p, data, data_len );
     p[data_len] = 0x80;
diff --git a/library/ecjpake.c b/library/ecjpake.c
index a058337..368b6c7 100644
--- a/library/ecjpake.c
+++ b/library/ecjpake.c
@@ -166,10 +166,7 @@
     if( ret != 0 )
         return( ret );
 
-    (*p)[0] = MBEDTLS_BYTE_3( len );
-    (*p)[1] = MBEDTLS_BYTE_2( len );
-    (*p)[2] = MBEDTLS_BYTE_1( len );
-    (*p)[3] = MBEDTLS_BYTE_0( len );
+    MBEDTLS_PUT_UINT32_BE( len, *p, 0 );
 
     *p += 4 + len;
 
@@ -209,10 +206,8 @@
     if( end - p < 4 )
         return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL );
 
-    *p++ = MBEDTLS_BYTE_3( id_len );
-    *p++ = MBEDTLS_BYTE_2( id_len );
-    *p++ = MBEDTLS_BYTE_1( id_len );
-    *p++ = MBEDTLS_BYTE_0( id_len );
+    MBEDTLS_PUT_UINT32_BE( id_len, p, 0 );
+    p += 4;
 
     if( end < p || (size_t)( end - p ) < id_len )
         return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL );
diff --git a/library/ssl_msg.c b/library/ssl_msg.c
index 28c57dc..b8ecdfe 100644
--- a/library/ssl_msg.c
+++ b/library/ssl_msg.c
@@ -493,9 +493,8 @@
         padlen = 40;
 
     memcpy( header, ctr, 8 );
-    header[ 8] = (unsigned char)  type;
-    header[ 9] = MBEDTLS_BYTE_1( len );
-    header[10] = MBEDTLS_BYTE_0( len );
+    header[8] = (unsigned char)  type;
+    header[9] = MBEDTLS_PUT_UINT16_BE( len, header, 9);
 
     memset( padding, 0x36, padlen );
     mbedtls_md_starts( md_ctx );
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 210e0d3..5951f32 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -3871,6 +3871,7 @@
         if( *p++ != MBEDTLS_BYTE_1( len ) ||
             *p++ != MBEDTLS_BYTE_0( len ) )
         {
+            //p += 2;
             MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) );
             return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE );
         }
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index de83903..2e9c401 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1948,8 +1948,8 @@
         if( end - p < 2 )
             return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
 
-        *(p++) = MBEDTLS_BYTE_1( psk_len );
-        *(p++) = MBEDTLS_BYTE_0( psk_len );
+        MBEDTLS_PUT_UINT16_BE( psk_len, p, 0 );
+        p += 2;
 
         if( end < p || (size_t)( end - p ) < psk_len )
             return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
@@ -1989,9 +1989,8 @@
             MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_dhm_calc_secret", ret );
             return( ret );
         }
-        *(p++) = MBEDTLS_BYTE_1( len );
-        *(p++) = MBEDTLS_BYTE_0( len );
-        p += len;
+        MBEDTLS_PUT_UINT16_BE( len, p, 0 );
+        p += 2 + len;
 
         MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: K ", &ssl->handshake->dhm_ctx.K  );
     }
@@ -2011,9 +2010,8 @@
             return( ret );
         }
 
-        *(p++) = MBEDTLS_BYTE_1( zlen );
-        *(p++) = MBEDTLS_BYTE_0( zlen );
-        p += zlen;
+        MBEDTLS_PUT_UINT16_BE( zlen, p, 0 );
+        p += 2 + zlen;
 
         MBEDTLS_SSL_DEBUG_ECDH( 3, &ssl->handshake->ecdh_ctx,
                                 MBEDTLS_DEBUG_ECDH_Z );
@@ -2029,8 +2027,8 @@
     if( end - p < 2 )
         return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
 
-    *(p++) = MBEDTLS_BYTE_1( psk_len );
-    *(p++) = MBEDTLS_BYTE_0( psk_len );
+    MBEDTLS_PUT_UINT16_BE( psk_len, p, 0 );
+    p += 2;
 
     if( end < p || (size_t)( end - p ) < psk_len )
         return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
