add Prototype Pattern