Documentation of usage is left as an exercise to the reader. proc "tabula rasa" {} { # Still to do: file handles (and others?), other kinds of traces, # namespace, global variables, procs, after queue, ... # The ones already here matter the most to me, though, either for # their hard conflicts, or potential to squander memory. foreach socket [file channels sock*] { close $socket } foreach variable [info glob] { foreach pair [trace info variable ::$variable] { foreach {op traced_command} $pair {} set op [string range $op 0 0] trace vdelete ::$variable $op $traced_command } } eval destroy [winfo children .] foreach name [image names] { image delete $name } } It would be better to not mix Tcl and Tk - make seperate subprocs for tabula_rasa_tcl and tabula_rasa_tk. ---- [DGP] You are working way too hard. You can get (almost?) everything with a simple namespace delete :: ---- Tabula rasa means clean slate, not throwing away the slate entirely - [davidw]. [DGP] Well, when "documentation is a reader exercise," I can only guess.