is `opts` necessary?