diff --git a/include/plist/plist.h b/include/plist/plist.h
index f7df832..5678cfb 100644
--- a/include/plist/plist.h
+++ b/include/plist/plist.h
@@ -489,14 +489,6 @@
      ********************************************/
 
     /**
-     * Forces type of node. Changing type of structured nodes is only allowed if node is empty.
-     * Reset value of node;
-     * @param node the node
-     * @param type the key value
-     */
-    PLIST_API void plist_set_type(plist_t node, plist_type type);
-
-    /**
      * Set the value of a node.
      * Forces type of node to #PLIST_KEY
      *
diff --git a/src/plist.c b/src/plist.c
index 137188e..317a758 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -757,36 +757,6 @@
     }
 }
 
-void plist_set_type(plist_t node, plist_type type)
-{
-    if ( node_n_children(node) == 0 )
-    {
-        plist_data_t data = plist_get_data(node);
-        plist_free_data( data );
-        data = plist_new_plist_data();
-        data->type = type;
-        switch (type)
-        {
-        case PLIST_BOOLEAN:
-            data->length = sizeof(uint8_t);
-            break;
-        case PLIST_UINT:
-        case PLIST_UID:
-            data->length = sizeof(uint64_t);
-            break;
-        case PLIST_REAL:
-            data->length = sizeof(double);
-            break;
-        case PLIST_DATE:
-            data->length = sizeof(struct timeval);
-            break;
-        default:
-            data->length = 0;
-            break;
-        }
-    }
-}
-
 void plist_set_key_val(plist_t node, const char *val)
 {
     plist_set_element_val(node, PLIST_KEY, val, strlen(val));
