•Build heterogeneous meta-programming systems
–Meta-language ≠ object-language
–
•Type system of the meta-language guarantees semantic properties of object-language
•
•Experiment with Omega
–Finding new uses for the power of the type system
–Translating existing language-based ideas into Omega
•staged interpreters
•proof carrying code
•language-based security