In this article, we discuss several possible extensions to traditional logic programming languages. The specific extensions proposed here fall into two categories: logical extensions and the addition of constructs to allow for increased control. There is a unifying theme to the proposed logical extensions, and that is the scoped introduction of extensions to a programming context. More specifically, these extensions are the ability to introduce variables whose scope is limited to the term in which they occur (i.e. λ-bound variables within A-terms), the ability to introduce into a goal a fresh constant whose scope is limited to the derivation of that goal, and the ability to introduce into a goal a program clause whose scope is limited to the derivation of that goal. The purpose of the additions for increased control is to facilitate the raising and handling of failures. To motivate these various extensions, we have repeatedly appealed to examples related to the construction of a generic theorem prover. It is our thesis that this problem domain is specific enough to lend focus when one is considering various language constructs, and yet complex enough to encompass many of the general difficulties found in other areas of symbolic computation.