options may be nil