diff --git a/include/cn-cbor/cn-cbor.h b/include/cn-cbor/cn-cbor.h
index a0f9e4e..673e902 100644
--- a/include/cn-cbor/cn-cbor.h
+++ b/include/cn-cbor/cn-cbor.h
@@ -252,7 +252,7 @@
  * @return                  The parsed CBOR structure, or NULL on error
  */
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_decode(const uint8_t *buf, size_t len CBOR_CONTEXT, cn_cbor_errback *errp);
+cn_cbor* cn_cbor_decode(const uint8_t *buf, size_t len CBOR_CONTEXT, cn_cbor_errback *errp);
 
 /**
  * Get a value from a CBOR map that has the given string as a key.
@@ -262,7 +262,7 @@
  * @return                  The matching value, or NULL if the key is not found
  */
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_mapget_string(const cn_cbor* cb, const char* key);
+cn_cbor* cn_cbor_mapget_string(const cn_cbor* cb, const char* key);
 
 /**
  * Get a value from a CBOR map that has the given integer as a key.
@@ -272,7 +272,7 @@
  * @return                  The matching value, or NULL if the key is not found
  */
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_mapget_int(const cn_cbor* cb, int key);
+cn_cbor* cn_cbor_mapget_int(const cn_cbor* cb, int key);
 
 /**
  * Get the item with the given index from a CBOR array.
@@ -282,7 +282,7 @@
  * @return                  The matching value, or NULL if the index is invalid
  */
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_index(const cn_cbor* cb, unsigned int idx);
+cn_cbor* cn_cbor_index(const cn_cbor* cb, unsigned int idx);
 
 /**
  * Free the given CBOR structure.
@@ -293,7 +293,7 @@
  * @param[in]  CBOR_CONTEXT Allocation context (only if USE_CBOR_CONTEXT is defined)
  */
 MYLIB_EXPORT
-void cn_cbor_free(const cn_cbor* cb CBOR_CONTEXT);
+void cn_cbor_free(cn_cbor* cb CBOR_CONTEXT);
 
 /**
  * Write a CBOR value and all of the child values.
diff --git a/src/cn-cbor.c b/src/cn-cbor.c
index 61416f1..95e3a71 100644
--- a/src/cn-cbor.c
+++ b/src/cn-cbor.c
@@ -246,7 +246,7 @@
 }
 
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_decode(const unsigned char* buf, size_t len CBOR_CONTEXT, cn_cbor_errback *errp) {
+cn_cbor* cn_cbor_decode(const unsigned char* buf, size_t len CBOR_CONTEXT, cn_cbor_errback *errp) {
   cn_cbor catcher = {CN_CBOR_INVALID, 0, {0}, 0, NULL, NULL, NULL, NULL};
   struct parse_buf pb;
   cn_cbor* ret;
diff --git a/src/cn-get.c b/src/cn-get.c
index 0e36495..b704cf3 100644
--- a/src/cn-get.c
+++ b/src/cn-get.c
@@ -7,7 +7,7 @@
 #include "cn-cbor/cn-cbor.h"
 
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_mapget_int(const cn_cbor* cb, int key) {
+cn_cbor* cn_cbor_mapget_int(const cn_cbor* cb, int key) {
   cn_cbor* cp;
   assert(cb);
   for (cp = cb->first_child; cp && cp->next; cp = cp->next->next) {
@@ -29,7 +29,7 @@
 }
 
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_mapget_string(const cn_cbor* cb, const char* key) {
+cn_cbor* cn_cbor_mapget_string(const cn_cbor* cb, const char* key) {
   cn_cbor *cp;
   int keylen;
   assert(cb);
@@ -53,7 +53,7 @@
 }
 
 MYLIB_EXPORT
-const cn_cbor* cn_cbor_index(const cn_cbor* cb, unsigned int idx) {
+cn_cbor* cn_cbor_index(const cn_cbor* cb, unsigned int idx) {
   cn_cbor *cp;
   unsigned int i = 0;
   assert(cb);
