diff --git a/timber.php b/timber.php
index <HASH>..<HASH> 100644
--- a/timber.php
+++ b/timber.php
@@ -373,18 +373,22 @@ class Timber {
 
     public function load_template($template, $query = false) {
         $template = locate_template($template);
-        add_action('send_headers', function () {
-            header('HTTP/1.1 200 OK');
-        });
-        add_action('wp_loaded', function ($template) use ( $template, $query ) {
-            if ($query) {
-                query_posts( $query );
-            }
-            if ($template) {
+
+        if ($query) {
+            add_action('do_parse_request',function() use ($query) {
+                global $wp;
+                $wp->query_vars = $query;
+                return false;
+            });
+        }
+        if ($template) {
+            add_action('wp_loaded', function() use ($template) {
+                wp();
+                do_action('template_redirect');
                 load_template($template);
                 die;
-            }
-        }, 10, 1);
+            });
+        }
     }
 
     /*  Pagination
Use wp() instead of manually querying posts in Timber::load_template