# \let, \renewcommand, and optional arguments [duplicate]

Possible Duplicate:
When to use \LetLtxMacro?

I have a problem in redefining a command with an optional argument in terms of its old definition. Here is what I did:

``````\newcommand{\testopt}[2][optional]{opt:#1;  arg:#2.}
\let\oldtestopt\testopt
\renewcommand{\testopt}[2][newoptional]{\oldtestopt[0]{1}}
``````

I expect now `\testopt{argument}` to typeset `opt:0; arg:1.`.
When I typeset the file the compiler freezes as it was in a loop. I tried a similar example without optional argument and it worked as expected.

Can anybody explain me where the error is?