changed to Prototype design pattern