In this work, we are interested in building a software engineering discipline for planning system design. Our objective is to enable planning systems to become more configurable and modular, with the help of object libraries capturing well designed experiences and a common planner-design pattern catalog. It is hoped that the planning systems thus constructed will be more reusable and modifiable. It is also hoped that this effort will contribute to the movement towards industrially applicable planning systems, to supply this dynamic subfield of AI with a rigorous software engineering discipline than just smart algorithms for plan generation. To this end, we focus on an object oriented design methodology to planning. We focus on a collection of design patterns for modularizing different searchrelated parts of a typical planning system. We illustrate our concept using the C++ language, although our experience apply equally well to all object oriented languages. This work is represents our continuing research in knowledge acquisition and maintenance effort in planning systems design.