Crucial to the more widespread use of evolutionary computation techniques is the ability to scale up to handle complex problems. In the field of genetic programming, a number of decomposition and reuse techniques have been devised to address this. As an alternative to the more commonly employed encapsulation methods, we propose an approach based on the division of test input cases into subsets, each dealt with by an independently evolved code segment. Two program architectures are suggested for this hierarchical approach, and experimentation demonstrates that they offer substantial performance improvements over more established methods. Difficult problems such as even-10 parity are readily solved with small population sizes. Categories and Subject Descriptors