opts is optional