Early work in artificial intelligence was mainly concerned with general problem-solving procedures. The application of these procedures to large "real world" problems was at first unsuccessful. Major progress was later made by allowing the problem-solving process to make use of separate, explicit sources of knowledge, concerning highly specific problem domains. This gave rise to a first generation of expert knowledge-based systems. The next step was to improve the power and flexibility of the various knowledge-processing techniques and to develop effective software and hardware architectures to implement them efficiently. This major challenge remains at the core of many of the "fifth-generation" computer projects