uint16_t calculate_tcp_checksum(
             uint32_t src_addr,
             uint32_t dest_addr,
-            char* payload_data,
-            uint16_t payload_size_in_bytes )
+            char* tcp_payload_data,
+            uint16_t tcp_payload_size_in_bytes )
     {
         checksum( 0 );
         uint16_t tcp_header_size_in_bytes = 20;
+        uint16_t tcp_segment_size_in_bytes = static_cast< uint16_t > (
+                tcp_header_size_in_bytes + tcp_payload_size_in_bytes
+        );
 
         PseudoIpv4Header pseudo_header;
         pseudo_header.source_address = htonl(src_addr);
         pseudo_header.destination_address = htonl(dest_addr);
         pseudo_header.zero_byte = 0;
         pseudo_header.protocol = IPPROTO_TCP;
-        pseudo_header.header_length = htons(
-                tcp_header_size_in_bytes + payload_size_in_bytes
-        );
+        pseudo_header.header_length = htons( tcp_segment_size_in_bytes );
+
         int pseudo_header_size_in_bytes = sizeof(PseudoIpv4Header);
 
         uint8_t tcp_buffer[65536];
         memcpy( tcp_buffer + pseudo_header_size_in_bytes, rep_,
                 tcp_header_size_in_bytes );
         memcpy( tcp_buffer + pseudo_header_size_in_bytes + tcp_header_size_in_bytes,
-                payload_data, payload_size_in_bytes );
+                tcp_payload_data, tcp_payload_size_in_bytes );
 
         uint16_t cksum = calculate_checksum( (uint16_t *)
             tcp_buffer,
-            pseudo_header_size_in_bytes + tcp_header_size_in_bytes + payload_size_in_bytes
+            pseudo_header_size_in_bytes + tcp_header_size_in_bytes + tcp_payload_size_in_bytes
         );
 
         cksum = ntohs( cksum );
 
     void header_length( uint8_t offset )
     {
-        uint8_t high_nimble = ( offset << 4 ) & 0xF0;
+        uint8_t high_nimble = static_cast<uint8_t>( ( offset << 4 ) & 0xF0 );
         uint8_t lower_nimble = ( rep_[12] & 0x0F );
         rep_[12] = high_nimble | lower_nimble;
     }
 private:
     uint16_t decode( int a, int b ) const
     {
-        return (rep_[a] << 8) + rep_[b];
+        return static_cast<uint16_t>( (rep_[a] << 8) + rep_[b] );
     }
 
     void encode( int a, int b, uint16_t n )