add more flexibility to opts hash