allow user to pass in opts