How prototypes work