diff --git a/src/hammer.c b/src/hammer.c
index 7fc80dba0c86ec76a2376d0d69914f235bf08afc..2456bdcedb7c9c7a0b4e374e8b8146bf19603179 100644
--- a/src/hammer.c
+++ b/src/hammer.c
@@ -62,6 +62,10 @@ HParseResult* h_parse__m(HAllocator* mm__, const HParser* parser, const uint8_t*
   return backends[parser->backend]->parse(mm__, parser, &input_stream);
 }
 
+void h_parse_result_free__m(HAllocator *alloc, HParseResult *result) {
+  h_parse_result_free(result);
+}
+
 void h_parse_result_free(HParseResult *result) {
   if(result == NULL) return;
   h_delete_arena(result->arena);
diff --git a/src/hammer.h b/src/hammer.h
index 0175142e509da61fadb79b36eb6095cac1265465..c70c763220e91660ce6dfdc8406298d6623dcb6a 100644
--- a/src/hammer.h
+++ b/src/hammer.h
@@ -126,6 +126,7 @@ typedef struct HCFChoice_ HCFChoice;
 typedef struct HRVMProg_ HRVMProg;
 typedef struct HParserVtable_ HParserVtable;
 
+// TODO: Make this internal
 typedef struct HParser_ {
   const HParserVtable *vtable;
   HParserBackend backend;
@@ -586,7 +587,7 @@ char* h_write_result_unamb(const HParsedToken* tok);
  * Format token to the given output stream. Indent starting at
  * [indent] spaces, with [delta] spaces between levels.
  */
-HAMMER_FN_DECL(void, h_pprint, FILE* stream, const HParsedToken* tok, int indent, int delta);
+void h_pprint(FILE* stream, const HParsedToken* tok, int indent, int delta);
 
 /**
  * Build parse tables for the given parser backend. See the
diff --git a/src/parsers/indirect.c b/src/parsers/indirect.c
index 2217a202968f2a11306c60ccea34c9e3126186c1..c91eaab5905229b178fa0c888dce1fa056babd88 100644
--- a/src/parsers/indirect.c
+++ b/src/parsers/indirect.c
@@ -21,6 +21,10 @@ static const HParserVtable indirect_vt = {
   .compile_to_rvm = h_not_regular,
 };
 
+void h_bind_indirect__m(HAllocator *mm__, HParser* indirect, const HParser* inner) {
+  h_bind_indirect(indirect, inner);
+}
+
 void h_bind_indirect(HParser* indirect, const HParser* inner) {
   assert_message(indirect->vtable == &indirect_vt, "You can only bind an indirect parser");
   indirect->env = (void*)inner;