Prototype-based programming languages