clone and builder patterns