+ move opts to initialize so that we can parse a string