diff --git a/src/c/encoding/binary-xml-data.c b/src/c/encoding/binary-xml-data.c
index 0f28ff5..b38fcdc 100644
--- a/src/c/encoding/binary-xml-data.c
+++ b/src/c/encoding/binary-xml-data.c
@@ -10,6 +10,7 @@
 #include "binary-xml-name.h"
 #include "binary-xml-publisher-public-key-digest.h"
 #include "binary-xml-data.h"
+#include "binary-xml-key.h"
 
 static ndn_Error encodeSignature(struct ndn_Signature *signature, struct ndn_BinaryXmlEncoder *encoder)
 {
@@ -77,15 +78,15 @@
     struct ndn_Blob typeBytes;
     typeBytes.length = 3;
     if (metaInfo->type == ndn_ContentType_ENCR)
-      typeBytes.value = "\x10\xD0\x91";
+      typeBytes.value = (uint8_t *)"\x10\xD0\x91";
     else if (metaInfo->type == ndn_ContentType_GONE)
-      typeBytes.value = "\x18\xE3\x44";
+      typeBytes.value = (uint8_t *)"\x18\xE3\x44";
     else if (metaInfo->type == ndn_ContentType_KEY)
-      typeBytes.value = "\x28\x46\x3F";
+      typeBytes.value = (uint8_t *)"\x28\x46\x3F";
     else if (metaInfo->type == ndn_ContentType_LINK)
-      typeBytes.value = "\x2C\x83\x4A";
+      typeBytes.value = (uint8_t *)"\x2C\x83\x4A";
     else if (metaInfo->type == ndn_ContentType_NACK)
-      typeBytes.value = "\x34\x00\x8A";
+      typeBytes.value = (uint8_t *)"\x34\x00\x8A";
     else
       return NDN_ERROR_unrecognized_ndn_ContentType;
 
@@ -120,8 +121,8 @@
   if ((error = ndn_decodeOptionalBinaryXmlPublisherPublicKeyDigest(&signature->publisherPublicKeyDigest, decoder)))
     return error;
   
-  if (error= ndn_BinaryXmlDecoder_readOptionalTimeMillisecondsDTagElement
-      (decoder, ndn_BinaryXml_DTag_Timestamp, &metaInfo->timestampMilliseconds))
+  if ((error = ndn_BinaryXmlDecoder_readOptionalTimeMillisecondsDTagElement
+       (decoder, ndn_BinaryXml_DTag_Timestamp, &metaInfo->timestampMilliseconds)))
     return error;
   
   struct ndn_Blob typeBytes;
@@ -133,17 +134,17 @@
     metaInfo->type = ndn_ContentType_DATA;
   else if (typeBytes.length == 3) {
     // All the recognized content types are 3 bytes.
-    if (ndn_memcmp(typeBytes.value, "\x0C\x04\xC0", typeBytes.length) == 0)
+    if (ndn_memcmp(typeBytes.value, (uint8_t *)"\x0C\x04\xC0", typeBytes.length) == 0)
       metaInfo->type = ndn_ContentType_DATA;
-    else if (ndn_memcmp(typeBytes.value, "\x10\xD0\x91", typeBytes.length) == 0)
+    else if (ndn_memcmp(typeBytes.value, (uint8_t *)"\x10\xD0\x91", typeBytes.length) == 0)
       metaInfo->type = ndn_ContentType_ENCR;
-    else if (ndn_memcmp(typeBytes.value, "\x18\xE3\x44", typeBytes.length) == 0)
+    else if (ndn_memcmp(typeBytes.value, (uint8_t *)"\x18\xE3\x44", typeBytes.length) == 0)
       metaInfo->type = ndn_ContentType_GONE;
-    else if (ndn_memcmp(typeBytes.value, "\x28\x46\x3F", typeBytes.length) == 0)
+    else if (ndn_memcmp(typeBytes.value, (uint8_t *)"\x28\x46\x3F", typeBytes.length) == 0)
       metaInfo->type = ndn_ContentType_KEY;
-    else if (ndn_memcmp(typeBytes.value, "\x2C\x83\x4A", typeBytes.length) == 0)
+    else if (ndn_memcmp(typeBytes.value, (uint8_t *)"\x2C\x83\x4A", typeBytes.length) == 0)
       metaInfo->type = ndn_ContentType_LINK;
-    else if (ndn_memcmp(typeBytes.value, "\x34\x00\x8A", typeBytes.length) == 0)
+    else if (ndn_memcmp(typeBytes.value, (uint8_t *)"\x34\x00\x8A", typeBytes.length) == 0)
       metaInfo->type = ndn_ContentType_NACK;
     else
       return NDN_ERROR_unrecognized_ndn_ContentType;
diff --git a/src/c/encoding/binary-xml-encoder.c b/src/c/encoding/binary-xml-encoder.c
index 961c274..e27cbbc 100644
--- a/src/c/encoding/binary-xml-encoder.c
+++ b/src/c/encoding/binary-xml-encoder.c
@@ -183,7 +183,7 @@
 
   // Bottom 4 bits of value go in last byte with tag.
   self->output->array[self->offset + nEncodingBytes - 1] = 
-    (ndn_BinaryXml_TT_MASK & type | 
+    ((ndn_BinaryXml_TT_MASK & type) | 
     ((ndn_BinaryXml_TT_VALUE_MASK & value) << ndn_BinaryXml_TT_BITS)) |
     ndn_BinaryXml_TT_FINAL; // set top bit for last byte
   value >>= ndn_BinaryXml_TT_VALUE_BITS;
diff --git a/src/c/encoding/binary-xml-forwarding-entry.c b/src/c/encoding/binary-xml-forwarding-entry.c
index 271029b..d7ed52a 100644
--- a/src/c/encoding/binary-xml-forwarding-entry.c
+++ b/src/c/encoding/binary-xml-forwarding-entry.c
@@ -7,6 +7,9 @@
 
 #include "binary-xml.h"
 #include "binary-xml-forwarding-entry.h"
+#include "binary-xml-name.h"
+#include "binary-xml-key.h"
+#include "binary-xml-publisher-public-key-digest.h"
 
 ndn_Error ndn_encodeBinaryXmlForwardingEntry(struct ndn_ForwardingEntry *forwardingEntry, struct ndn_BinaryXmlEncoder *encoder)
 {
diff --git a/src/c/encoding/binary-xml-interest.c b/src/c/encoding/binary-xml-interest.c
index 48d3fe0..00da3e4 100644
--- a/src/c/encoding/binary-xml-interest.c
+++ b/src/c/encoding/binary-xml-interest.c
@@ -205,8 +205,8 @@
       (decoder, ndn_BinaryXml_DTag_Scope, &interest->scope)))
     return error;
   
-  if (error= ndn_BinaryXmlDecoder_readOptionalTimeMillisecondsDTagElement
-      (decoder, ndn_BinaryXml_DTag_InterestLifetime, &interest->interestLifetimeMilliseconds))
+  if ((error = ndn_BinaryXmlDecoder_readOptionalTimeMillisecondsDTagElement
+       (decoder, ndn_BinaryXml_DTag_InterestLifetime, &interest->interestLifetimeMilliseconds)))
     return error;
   
   if ((error = ndn_BinaryXmlDecoder_readOptionalBinaryDTagElement
diff --git a/src/c/encoding/binary-xml-key.c b/src/c/encoding/binary-xml-key.c
index d9cce61..bc55911 100644
--- a/src/c/encoding/binary-xml-key.c
+++ b/src/c/encoding/binary-xml-key.c
@@ -8,6 +8,7 @@
 #include "binary-xml.h"
 #include "binary-xml-structure-decoder.h"
 #include "binary-xml-key.h"
+#include "binary-xml-name.h"
 
 static ndn_Error decodeKeyNameData(struct ndn_KeyLocator *keyLocator, struct ndn_BinaryXmlDecoder *decoder)
 {
