Closes #4, #5 Adds callbacks and controllable options.