prototype explaination