prototype design pattern added