prototype and builder