In Mathematica 5.x days many packages used the following standard mechanism to read option values
Options[myfun]={myQuiet->True};
myfun[arg_,opts___?OptionQ]:=Module[{theQuiet},
theQuiet=((myQuiet/.{opts})/.Options[myfun,myQuiet]);
someCode
]
However it does not cover passing values of more complex options like myMethod->{"TensorProduct", myOrdering->1,myStart->someValue}
Sure I can use First/Rest commands to read values of myMethod suboptions, however, I would like to know what is the standard/recommended way to deal with suboptions and how to set their default values.