Here are 4 itcl scripts that enlight the question : The main one : package require Itcl; namespace eval itcl { source "MySimpleObject-spec.itcl" source "MySimpleObject-body-1.0.itcl" MySimpleObject my puts [my name] my configure -name "Laurent" puts [my name] source "MySimpleObject-body-1.1.itcl" puts [my name] } The specification of class : class MySimpleObject { public variable name constructor { {aName "unknown"} } { set name $aName return $this } method name {} } A first version of the body : body MySimpleObject::name {} { return $name } A second version of the body : body MySimpleObject::name {} { return "My name is $name" } <>Itcl