Per comments. UNTESTED: opts can be array.