I've tried adding a feature similar to the `attr_accessor` method http://www.rubyist.net/~slagell/ruby/accessors.html%|%found in Ruby%|% to [TclOO]. I have to admit that this is hacky at best, and not useful when not all your variables should be accessors, but it might serve as a starting point for others. One thing I learned about [TclOO] is that it's very hard to add new methods to `oo::define`. After reading the source a bit I found that it uses a special stack frame. This way it tries to restrict usage of its commands within a single stack level, which is impossible to use with uplevel. I'm very skeptical about the need for such a restriction, given that it will lead to hacks similar to this one. It's definitely possible right now to execute `oo::define` commands within the `oo::define` script, so the restriction is weak at best. What would be needed for easy [Pure-Tcl] extensions of [TclOO] is availability of the class name or allowing uplevel into the stack frame. ====== package require TclOO proc oo::define::accessor args { set class [lindex [info level 1] 1] ::oo::define $class variable {*}$args foreach {name} $args { ::oo::define $class method $name {} "return $$name" ::oo::define $class method $name= {new} "return \[set $name \$new]" } } oo::class create Person { accessor first last method name {} { return "[my first] [my last]" } } set person [Person new] $person first= John $person last= Doe puts [$person name] # => John Doe ====== <> Object Orientation