parameters now go in opts object