Modern programming languages encourage programmers to use abstraction and encapsulation to hide one moduleOs data representation details from other modules. But this leads to slow execution without in-line expansion (substitution of procedure bodies for procedure calls). The problem is particularly acute in object-oriented and functional programming languages that support method and function abstraction. Most previous work on in-line expansion (in imperative languages) fails to inline higher-order and recursive functions, but in functional languages (and object- oriented languages, with dynamic methods) these can be crucial. Since modules can be compiled separately from each other, cross-module in-line expansion complicates program linkage. This work uses a lambda-calculus framework for cross-module in-line expansion, which cleanly separates the compilation- management issues from the inlining algorithms. The objective of this project is to implement this framework, and then design inlining algorithms within the framework that can be tested in the field.***