use traditional opts hash