Prototype-Based Programming: Concepts, Languages and Applications