added PrototypePattern