I was thinking how in seems a little asymmetric that many classes have #to_s method, but when you want to make one of those objects from a String, you have to clutter the String class with yet another #to_* method. So the String class gets the burden of all those #to_* methods. Instead, what if we would have the convention that creating an object from a string would be a class method (for the class of that object) instead of another String#to_* method. So, instead of these: String#to_i String#to_f String#to_sym String#to_<c> # where c is a abbreviation for the class you'd have these: Integer.from_s(str) Float.from_s(str) Symbol.from_s(str) klass.from_s(str) Maybe you'd even want to be able to convert from an inspect string: klass.from_inspect(str) I'm not saying that we should replace all obj.to_ methods with klass.from_ methods. I'm just saying to make them come in pairs. If you have a klass#to_* method, you should have a corresponding klass.from_* method if appropriate. This would make your class more encapsulated, instead of having some of it in String (or whatever class you are converting from). __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com