diff --git a/jinja2/nodes.py b/jinja2/nodes.py
index 1e20096..974b4ed 100644
--- a/jinja2/nodes.py
+++ b/jinja2/nodes.py
@@ -14,6 +14,7 @@
 """
 import operator
 from itertools import chain, izip
+from collections import deque
 from copy import copy
 
 
@@ -34,6 +35,21 @@
 }
 
 
+def set_ctx(node, ctx):
+    """
+    Reset the context of a node and all child nodes.  Per default the parser
+    will all generate nodes that have a 'load' context as it's the most common
+    one.  This method is used in the parser to set assignment targets and
+    other nodes to a store context.
+    """
+    todo = deque([node])
+    while todo:
+        node = todo.popleft()
+        if 'ctx' in node._fields:
+            node.ctx = ctx
+        todo.extend(node.iter_child_nodes())
+
+
 class Impossible(Exception):
     """
     Raised if the node could not perform a requested action.
@@ -120,7 +136,7 @@
     """
     Node that represents a template.
     """
-    _fields = ('extends', 'body')
+    _fields = ('body',)
 
 
 class Output(Stmt):
@@ -142,7 +158,7 @@
     """
     A node that represents a for loop
     """
-    _fields = ('item', 'seq', 'body', 'else_', 'recursive')
+    _fields = ('target', 'iter', 'body', 'else_', 'recursive')
 
 
 class If(Stmt):
@@ -208,6 +224,13 @@
     _fields = ('node',)
 
 
+class Assign(Stmt):
+    """
+    Assigns an expression to a target.
+    """
+    _fields = ('target', 'node')
+
+
 class Expr(Node):
     """
     Baseclass for all expressions.
@@ -262,7 +285,7 @@
     """
     any name such as {{ foo }}
     """
-    _fields = ('name',)
+    _fields = ('name', 'ctx')
 
     def can_assign(self):
         return True
@@ -289,7 +312,7 @@
     For loop unpacking and some other things like multiple arguments
     for subscripts.
     """
-    _fields = ('items',)
+    _fields = ('items', 'ctx')
 
     def as_const(self):
         return tuple(x.as_const() for x in self.items)
@@ -350,11 +373,18 @@
     _fields = ('node', 'filters')
 
 
+class FilterCall(Expr):
+    """
+    {{ |bar() }}
+    """
+    _fields = ('name', 'args', 'kwargs', 'dyn_args', 'dyn_kwargs')
+
+
 class Test(Expr):
     """
     {{ foo is lower }}
     """
-    _fields = ('node', 'name', 'args')
+    _fields = ('name', 'args', 'kwargs', 'dyn_args', 'dyn_kwargs')
 
 
 class Call(Expr):
@@ -368,7 +398,7 @@
     """
     {{ foo.bar }} and {{ foo['bar'] }} etc.
     """
-    _fields = ('node', 'arg')
+    _fields = ('node', 'arg', 'ctx')
 
     def as_const(self):
         try:
@@ -404,6 +434,13 @@
     _fields = ('expr', 'ops')
 
 
+class Operand(Helper):
+    """
+    Operator + expression.
+    """
+    _fields = ('op', 'expr')
+
+
 class Mul(BinExpr):
     """
     {{ foo * bar }}
