diff --git a/NEWS b/NEWS
index ea6ff65..eab5e91 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+Changes in 1.0d6
+--------------------------------------------------------------------------------
+
+- ap_send_http_header no longer does anything so the command just returns TCL_OK which essentially makes it null, I'll probably get rid of it later.
+- made changes in league with Apache 2.0.14.  Handlers were moved around etc.
+
 Changes in 1.0d5
 --------------------------------------------------------------------------------
 
@@ -15,11 +21,13 @@
 5. Add filters?
 6. libapreq (doesn't appear to be ported to 2.0 completley yet...)
 7. Decide what goals need to be acheived for release 1.0
+8. Make necessary changes along with Apache 2.0 revisions.
 
 Map
 --------------------------------------------------------------------------------
 
 - 1.0d0 -| Inital port from mod_tcl* 0.26, single file split into 4
+         | (Apache 2.0a9)
          |
 - 1.0d1 -| removal of nasties, update of configuration
          |
@@ -29,9 +37,11 @@
          |
 - 1.0d4 -| Documentation, 99% of API exposed
          |
-* 1.0d5 *| constants commands in ::apache namespace, mmap checking, test script
+- 1.0d5 -| constants commands in ::apache namespace, mmap checking, test
+         | script
          |
-- 1.0d6 -|
+* 1.0d6 *| ap_send_http_header deprecated, updated to be peachy with
+         | Apache 2.0.14
          |
 - 1.0d7 -|
          |
@@ -40,4 +50,3 @@
 - 1.0d9 -|
          |
 - 1.0.0 -|
-
diff --git a/tcl_cmds.c b/tcl_cmds.c
index 32d0663..3b24632 100644
--- a/tcl_cmds.c
+++ b/tcl_cmds.c
@@ -1075,10 +1075,10 @@
 		return TCL_ERROR;
 	}
 	
-	_r->allowed_methods->method_list = apr_make_array(_r->allowed_methods->method_list->cont, xxobjc, sizeof(char*));
+	_r->allowed_methods->method_list = (apr_array_header_t*) apr_array_make(_r->allowed_methods->method_list->cont, xxobjc, sizeof(char*));
 	
 	for (i = 0; i < xxobjc; i++) {
-		char *xx = apr_push_array(_r->allowed_methods->method_list);
+		char *xx = (char*) apr_array_push(_r->allowed_methods->method_list);
 		
 		xx = apr_pstrdup(_r->allowed_methods->method_list->cont, Tcl_GetString(xxobjv[i]));
 	}
@@ -1158,10 +1158,10 @@
 		return TCL_ERROR;
 	}
 	
-	_r->content_languages = apr_make_array(_r->content_languages->cont, xxobjc, sizeof(char*));
+	_r->content_languages = apr_array_make(_r->content_languages->cont, xxobjc, sizeof(char*));
 	
 	for (i = 0; i < xxobjc; i++) {
-		char *xx = apr_push_array(_r->content_languages);
+		char *xx = apr_array_push(_r->content_languages);
 		
 		xx = apr_pstrdup(_r->content_languages->cont, Tcl_GetString(xxobjv[i]));
 	}
@@ -1773,6 +1773,7 @@
 
 int cmd_ap_send_http_header(ClientData cd, Tcl_Interp *ixx, int objc, Tcl_Obj *CONST objv[])
 {
+/*
 	Tcl_Obj *obj;
 	
 	obj = Tcl_GetVar2Ex(interp, "content_type", NULL, 0);
@@ -1782,6 +1783,7 @@
 	}
 	
 	ap_send_http_header(_r);
+*/
 	
 	return TCL_OK;
 }
diff --git a/tcl_core.c b/tcl_core.c
index c7cdec9..fc78e12 100644
--- a/tcl_core.c
+++ b/tcl_core.c
@@ -79,7 +79,7 @@
 static const char* tcl_set(cmd_parms *parms, void *mconfig, const char *one, const char *two, const char *three);
 static const char* tcl_setlist(cmd_parms *parms, void *mconfig, const char *one, const char *two);
 static const char* tcl_raw_args(cmd_parms *parms, void *mconfig, char *arg);
-static const char *tcl_no_args(cmd_parms *parms, void *mconfig);
+static const char* tcl_no_args(cmd_parms *parms, void *mconfig);
 
 typedef const char* (*fz_t)(void);
 
@@ -108,25 +108,21 @@
 	{ NULL }
 };
 
-static handler_rec tcl_handlers[] = {
-	{ "tcl-handler",		tcl_handler },
-	{ NULL,					NULL }
-};
-
-static void register_hooks(void)
+static void register_hooks(apr_pool_t *p)
 {
-	ap_hook_pre_config(tcl_init, NULL, NULL, AP_HOOK_REALLY_FIRST);
-	ap_hook_post_config(tcl_init_handler, NULL, NULL, AP_HOOK_MIDDLE);
+	ap_hook_pre_config(tcl_init, NULL, NULL, APR_HOOK_REALLY_FIRST);
+	ap_hook_post_config(tcl_init_handler, NULL, NULL, APR_HOOK_MIDDLE);
 	
-//	ap_hook_post_read_request(tcl_post_read_request, NULL, NULL, AP_HOOK_MIDDLE);
-//	ap_hook_translate_name(tcl_translate_name, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_header_parser(tcl_header_parser, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_access_checker(tcl_access_checker, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_check_user_id(tcl_check_user_id, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_auth_checker(tcl_auth_checker, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_type_checker(tcl_type_checker, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_fixups(tcl_fixups, NULL, NULL, AP_HOOK_MIDDLE);
-	ap_hook_log_transaction(tcl_log_transaction, NULL, NULL, AP_HOOK_MIDDLE);
+//	ap_hook_post_read_request(tcl_post_read_request, NULL, NULL, APR_HOOK_MIDDLE);
+//	ap_hook_translate_name(tcl_translate_name, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_header_parser(tcl_header_parser, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_access_checker(tcl_access_checker, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_check_user_id(tcl_check_user_id, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_auth_checker(tcl_auth_checker, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_type_checker(tcl_type_checker, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_fixups(tcl_fixups, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_handler(tcl_handler, NULL, NULL, APR_HOOK_MIDDLE);
+	ap_hook_log_transaction(tcl_log_transaction, NULL, NULL, APR_HOOK_MIDDLE);
 }
 
 AP_DECLARE_DATA module tcl_module = {
@@ -136,7 +132,6 @@
     NULL,							/* create per-server config structure */
     NULL,							/* merge per-server config structures */
     tcl_commands,					/* command apr_table_t */
-    tcl_handlers,					/* handlers */
     register_hooks					/* register hooks */
 };
 
@@ -158,8 +153,8 @@
 	tcl_config_rec *tclr = (tcl_config_rec*) apr_pcalloc(p, sizeof(tcl_config_rec));
 	
 	tclr->fl		= 0;
-	tclr->var_list	= apr_make_array(p, 0, sizeof(var_cache));
-	tclr->raw_list	= apr_make_array(p, 0, sizeof(char*));
+	tclr->var_list	= apr_array_make(p, 0, sizeof(var_cache));
+	tclr->raw_list	= apr_array_make(p, 0, sizeof(char*));
 	
 	memset(tclr->handlers, 0, NUM_HANDLERS * sizeof(char*));
 	
@@ -195,7 +190,7 @@
 {
 	tcl_config_rec *tclr = (tcl_config_rec*) mconfig;
 	char *ptr2, *ptr3;
-	var_cache *var = (var_cache*) apr_push_array(tclr->var_list);
+	var_cache *var = (var_cache*) apr_array_push(tclr->var_list);
 	
 	if (three == NULL) {
 		ptr2 = NULL;
@@ -218,7 +213,7 @@
 static const char* tcl_setlist(cmd_parms *parms, void *mconfig, const char *one, const char *two)
 {
 	tcl_config_rec *tclr = (tcl_config_rec*) mconfig;
-	var_cache *var = (var_cache*) apr_push_array(tclr->var_list);
+	var_cache *var = (var_cache*) apr_array_push(tclr->var_list);
 	
 	var->var1 = apr_pstrdup(parms->pool, one);
 	var->var2 = apr_pstrdup(parms->pool, two);
@@ -234,7 +229,7 @@
 	char l[MAX_STRING_LEN];
 	char **line, *script, **xx;
 	int i, j = 0, k = 0;
-	apr_array_header_t *temp = apr_make_array(parms->pool, 0, sizeof(char*));
+	apr_array_header_t *temp = apr_array_make(parms->pool, 0, sizeof(char*));
 	char **temp_elts = (char**) temp->elts;
 
 	while (!(ap_cfg_getline(l, MAX_STRING_LEN, parms->config_file))) {
@@ -242,7 +237,7 @@
 			goto cleanup;
 		}
 
-		line = (char**) apr_push_array(temp);
+		line = (char**) apr_array_push(temp);
 		j += asprintf(line, l);
 		k++;
 	}
@@ -262,7 +257,7 @@
 	
 	script[j] = '\0';
 	
-	xx = (char**) apr_push_array(tclr->raw_list);
+	xx = (char**) apr_array_push(tclr->raw_list);
 	*xx = apr_pstrdup(parms->pool, script);
 	
 	free(script);
@@ -348,7 +343,7 @@
 	char *buf;
 	
 	_pconf = pconf;
-	fcache = apr_make_array(pconf, 0, sizeof(file_cache));
+	fcache = apr_array_make(pconf, 0, sizeof(file_cache));
 	
 	interp = Tcl_CreateInterp();
 	
@@ -357,7 +352,7 @@
 		exit(1);
 	}
 	
-	apr_register_cleanup(pconf, NULL, tcl_cleanup, apr_null_cleanup);
+	apr_pool_cleanup_register(pconf, NULL, tcl_cleanup, apr_pool_cleanup_null);
 	
 	/* misc util */
 	Tcl_CreateObjCommand(interp, "apache::abort", cmd_abort, NULL, NULL);
@@ -573,7 +568,7 @@
 
 static void tcl_init_handler(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
 {
-	ap_add_version_component(pconf, "mod_tcl/1.0d5");
+	ap_add_version_component(pconf, "mod_tcl/1.0d6");
 }
 
 static int run_handler(request_rec *r, int hh)
@@ -640,7 +635,7 @@
 
 		close(fd);
 		
-		fptr = (file_cache*) apr_push_array(fcache);
+		fptr = (file_cache*) apr_array_push(fcache);
 		
 		fptr->file = apr_pstrdup(fcache->cont, r->filename);
 		memcpy(&(fptr->st), &st, sizeof(struct stat));
@@ -727,7 +722,7 @@
 
 		close(fd);
 		
-		fptr = (file_cache*) apr_push_array(fcache);
+		fptr = (file_cache*) apr_array_push(fcache);
 		
 		fptr->file = apr_pstrdup(fcache->cont, r->filename);
 		memcpy(&(fptr->st), &st, sizeof(struct stat));
@@ -760,7 +755,7 @@
 			ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r->server, "Tcl_EvalObjEx(%s): %s", eptr, Tcl_GetStringResult(interp));
 			
 			r->content_type = "text/html";
-			ap_send_http_header(r);
+//			ap_send_http_header(r);
 			
 			ap_rprintf(r, "<H3>TCL Error</H3><BR><PRE>%s</PRE>", Tcl_GetString(Tcl_GetVar2Ex(interp, "errorInfo", NULL, 0)));
 			
@@ -775,6 +770,10 @@
 
 static int tcl_handler(request_rec *r)
 {
+	if (strcmp("tcl-handler", r->handler)) {
+		return DECLINED;
+	}
+	
 	return run_handler(r, 0);
 }
 
