Using prototypical objects to implement shared behavior in object-oriented systems | Synapse