This thread is all over the map and I don&#39;t have time to read it all, so my apologies in advance if I&#39;m rehashing something someone already said.<br><br>I&#39;ve always preferred a prototype/cloning approach rather than the traditional initialization we find in Smalltalk.&nbsp; I find that there often isn&#39;t one properly initialized form of an instance that you need to provide, but several or perhaps many.&nbsp; One simple example is &quot;Semaphore new&quot; and &quot;Semaphore forMutualExclusion&quot;.&nbsp; It&#39;s an example of two differently initialized forms.&nbsp; Instead of having two different constructor methods (#new and #forMutualExclusion), you could have two different prototypes initialized in the manner you want them and then clone one of them when you need new instances.&nbsp; Another interesting point is that it&#39;s the consumer of the class that determines which form is appropriate to use, not the class itself.&nbsp; So, at the very least, you do need to support many constructors for any given class (not all of which need be located in the same &quot;module&quot; as the class itself), and perhaps you might want to do the construction in advance and simply clone the appropriate prototype to get new instances.<br>
<br>However, I still use the traditional approach most often simply because I&#39;ve never bothered to create an easy frameork for creating and organizing such prototypes.<br><br>- Stephen<br>