change all methods to use options object