add optional `opts` object