Define Class gcol As Column cSection="" Procedure Init(tcCaption, tcSource, tcClass, tcClassLib) With This .cSection=Chrtran(Sys(1272,This),".","_") lnWidth=prof_r(This.cSection,"width",This.Width,"N") If Not Empty(lnWidth) .Width=lnWidth Endif .ColumnOrder=prof_r(This.cSection,"columnorder", .ColumnOrder,"N") *-- other stuff was here, which uses the parameters passed Endwith Endproc Procedure Cleanup prof_w(This.cSection, "width",This.Width) prof_w(This.cSection, "columnorder",This.ColumnOrder) Endproc EnddefineThe column.cleanup is called from grid.destroy() - because of the columnOrder, which I'm also preserving (so it also remembers the order of columns, not just their widths). columnOrder is already zero during column.destroy(). Prof_w and prof_r are the routines to write and read a private profile string - I figure you probably got your own.