diff --git a/src/hammer.c b/src/hammer.c
index 52052a6b624ef3c0dc3b0700664964b1f231b6a8..0c6af36845b5e7986b827dd80b338eb3294fd36e 100644
--- a/src/hammer.c
+++ b/src/hammer.c
@@ -329,6 +329,7 @@ char * h_get_short_name_with_no_params(HAllocator *mm__,
   return h_get_backend_text_with_no_params(mm__, be, 0);
 }
 
+/*TODO: refactor and clean this up more */
 HParserBackendWithParams * h_get_backend_with_params_by_name(const char *name_with_params) {
 	
 	HParserBackendWithParams *result = NULL;
@@ -338,7 +339,7 @@ HParserBackendWithParams * h_get_backend_with_params_by_name(const char *name_wi
 	char *name_with_no_params = NULL;
 	char *params_as_string = NULL;
 
-	size_t name_len
+	size_t name_len;
 	size_t len = strlen(name_with_params);
 
 	result = h_new(HParserBackendWithParams, 1);
@@ -434,24 +435,16 @@ bool h_not_regular(HRVMProg *prog, void *env) {
 }
 
 int h_compile_for_named_backend(HParser* parser, HParserBackendWithParams* be_with_params){
-	HAllocator* mm__ = be_with_params->mm__;
+	HAllocator *mm__ = &system_allocator;
 
-	if(mm__ == NULL){
-		mm__ = &system_allocator;
+	if (be_with_params) {
+	    if (be_with_params->mm__) mm__ = be_with_params->mm__;
 	}
 
 	return h_compile_for_named_backend__m(mm__, parser, be_with_params);
 }
 
 int h_compile_for_named_backend__m(HAllocator* mm__, HParser* parser, HParserBackendWithParams* be_with_params) {
-	  /*if (parser->backend >= PB_MIN && parser->backend <= PB_MAX &&
-	      backends[parser->backend]->free != NULL) {
-	    backends[parser->backend]->free(parser);
-	  }
-	  int ret = backends[be_with_params->backend]->compile(mm__, parser, (const void*) be_with_params->params);
-	  if (!ret)
-	    parser->backend = be_with_params->backend;
-	  return ret;*/
 	return h_compile__m(mm__, parser, be_with_params->backend, be_with_params->params);
 }
 
diff --git a/src/t_names.c b/src/t_names.c
index 499fef0b0f76fcaba227865673ccde5cbe081a33..95cefdebd6ae5c2e184b5ab3e8253533c6fb12c6 100644
--- a/src/t_names.c
+++ b/src/t_names.c
@@ -41,9 +41,6 @@ static void test_tt_backend_short_name(void) {
   g_check_maybe_string_eq(name, glr_name);
 }
 
-/*TODO create proper test(s) with test name matching what is being tested.
- * As is this is just what I am using to drive development
- * and check I am not making silly mistakes */
 static void test_tt_query_backend_by_name(void) {
 	HParserBackend be;
 
@@ -52,7 +49,9 @@ static void test_tt_query_backend_by_name(void) {
 	be = h_query_backend_by_name(regular_name);
 	g_check_inttype("%d", HParserBackend, be, ==, PB_REGULAR);
 
+}
 
+static void test_tt_get_backend_with_params_by_name(void) {
 	HParserBackendWithParams * be_w_p = NULL;
 
 	be_w_p = h_get_backend_with_params_by_name(glr_name);
@@ -60,13 +59,35 @@ static void test_tt_query_backend_by_name(void) {
 	g_check_maybe_string_eq(be_w_p->name, glr_name);
 
     be_w_p = h_get_backend_with_params_by_name("glr(1)");
-    printf("%d be enum val \n", be_w_p->backend);
+
     g_check_inttype("%d", HParserBackend, be_w_p->backend, ==, PB_GLR);
-    printf("%s be name \n", be_w_p->name);
+
     g_check_maybe_string_eq(be_w_p->name, glr_name);
-    printf("%p as void pointer \n", be_w_p->params);
+
     g_check_cmp_size((uintptr_t)be_w_p->params, ==, 1);
-    printf("%zu param as uintptr_t \n", (uintptr_t)be_w_p->params);
+
+
+}
+
+/* test that we can request a backend with params from character
+ * and compile a parser using it */
+static void test_tt_h_compile_for_named_backend(void) {
+	HParserBackendWithParams * be_w_p = NULL;
+
+	be_w_p = h_get_backend_with_params_by_name(llk_name);
+	g_check_inttype("%d", HParserBackend, be_w_p->backend, ==, PB_LLk);
+
+	be_w_p->mm__ = &system_allocator;
+
+	HParser *p = h_many(h_sequence(h_ch('A'), h_ch('B'), NULL));
+
+	int r = h_compile_for_named_backend(p, be_w_p);
+	if (r != 0) {
+		g_test_message("Compile failed");
+	    g_test_fail();
+	}
+
+  /* TODO further test for success? */
 
 }
 
@@ -74,4 +95,6 @@ void register_names_tests(void) {
   g_test_add_func("/core/names/tt_backend_short_name", test_tt_backend_short_name);
   g_test_add_func("/core/names/tt_backend_description", test_tt_backend_description);
   g_test_add_func("/core/names/tt_query_backend_by_name", test_tt_query_backend_by_name);
+  g_test_add_func("/core/names/tt_get_backend_with_params_by_name", test_tt_get_backend_with_params_by_name);
+  g_test_add_func("/core/names/tt_h_compile_for_named_backend", test_tt_h_compile_for_named_backend);
  }