better options, callbacks and code organization