1. A method for making a forwarding decision for a packet entering a network element having at least one input port and at least one output port, wherein the packet enters the network element on an input port and exits the network element on appropriate output ports, if any, including the steps of: (1) receiving a first header portion of the packet; (2) determining a first search key from the first header portion; (3) causing a memory to output first forwarding information associated with the first search key; (4) receiving a second header portion of the packet; (5) determining a class information for the packet based on the second header portion, wherein each class information includes a class, second header key information indicating which fields of the second header portion should be used to create a second search key, and default forwarding information for packets falling within the class; (6) creating the second search key from the second header portion based on the second header portion key information; (7) causing the memory to output second forwarding information, if any, associated with the second search key; (8) determining the appropriate output ports, if any, based on the first forwarding information, the second forwarding information, and the default forwarding information.