adds support for multiple definitions and multiple languages
refactors for object oriented processes