better callbacks and options